2021-2022年河南省濮陽市全國計算機等級考試C語言程序設(shè)計_第1頁
2021-2022年河南省濮陽市全國計算機等級考試C語言程序設(shè)計_第2頁
2021-2022年河南省濮陽市全國計算機等級考試C語言程序設(shè)計_第3頁
2021-2022年河南省濮陽市全國計算機等級考試C語言程序設(shè)計_第4頁
2021-2022年河南省濮陽市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

2021-2022年河南省濮陽市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有"doublea;",則正確的輸入語句是()。

A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%1f",&a)

D.scanf("%1e",&a);

2.串是一種特殊的線性表,其特殊性體現(xiàn)在()。

A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符

3.深度為5的二叉樹至多有C個結(jié)點。

A.16B.32C.31D.10

4.若有以下的說明和語句,則在執(zhí)行for語句后,’(*(pt+1)+2)表示的數(shù)組元素是()。intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];

A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

5.設(shè)單鏈表中結(jié)點的結(jié)構(gòu)為已知指針p所指結(jié)點不是尾結(jié)點,若在*p之后插入結(jié)點*s,則應(yīng)執(zhí)行下列哪一個操作______。A.s->link=p;p->link=s;

B.s->link=p->link;p->link=s;

C.s->link=p->link;p=s;

D.p->link=s;s->link=p;

6.以下正確的字符串常量是()。

A."\\\"B.abcC.OlympicGamesD.""

7.

8.以下程序的輸出結(jié)果是().A.A.2222B.2468C.222D.246

9.有下列程序:fun(intX,inty){return(x+y);)main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9

10.

11.若有定義“charch;inta;doubled;”,當(dāng)輸入為12345678910.36時,以下選項中能給各個變量正確賦值的是()。

A.scanf(“%d%c%lf”,&a,&ch,&d);

B.scanf(“%5d%2c%7.2lf”,&a,&ch,&d);

C.scanf(“%d%c%lf”,a,ch,d);

D.scanf(“5d%2c%7.2lf%”,&a,&ch,&d);

12.一個長度為99的循環(huán)鏈表,指針A和指針B都指向了鏈表中的同一個節(jié)點,A以步長為1向前移動,B以步長為3向前移動,一共需要同時移動多少步A和B才能再次指向同一個節(jié)點()。

A.99B.100C.101D.49E.50F.51

13.對如下二叉樹進行后序遍歷的結(jié)果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

14.為了隱藏在文本框中輸入的信息,用占位符代替顯示用戶輸入的字符,需要設(shè)置的屬性是()。

A.ValueB.ControlSoureeC.InputMaskD.PasswordChar

15.以下函數(shù)的時間復(fù)雜度和空間復(fù)雜度為()A.T(n)=O(2^n),S(n)=O(n)

B.T(n)=O(1),S(n)=O(1)

C.T(n)=O(2^n),S(n)=O(1)

D.T(n)=O(n),S(n)=O(n)

16.有以下程序#include<stdio.h>main(){inta=5,b=l;t=(a<<2)|b;printf("%d\n",t);}程序運行后的輸出結(jié)果是______。A.21B.11C.6D.1

17.

18.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()

A.分塊B.順序C.折半D.哈希

19.設(shè)a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達(dá)式(m=a>b)&&(n—c>d)運算后,n的值是()n

A.0B.1C.2D.3

20.表達(dá)式“(int)((double)9/2)-9%2”的值是()。

A.0B.3C.4D.5

二、2.填空題(20題)21.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

22.若有以下程序:

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

printf("%d\n",d);

}

執(zhí)行后的輸出結(jié)果是【】。

23.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

24.以下程序的輸出結(jié)果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

25.下列程序的運行結(jié)果是______。

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

printf("%d,%d\n",a,b);

}

26.單元測試又稱模塊測試,一般采用【】測試。

27.函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù),且要求m>n。

例如:m=12,n=8時,運行結(jié)果應(yīng)該是495.000000。請在題目的空白處填寫適當(dāng)?shù)某绦蛘Z句,將該程序補充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

28.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲結(jié)構(gòu)必須是______。

29.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

30.下列程序執(zhí)行后輸出的結(jié)果是【】。

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

for(i=0;i<2;i++)

k=f(a++);

printf("%d\n",k);

}

31.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

32.以下程序的輸出結(jié)果是______。

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n+1+i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

printf("%d\n",s);

}

33.性結(jié)構(gòu)中,第一個結(jié)點沒有前驅(qū)結(jié)點,其余每個結(jié)點有且只有【】個前驅(qū)結(jié)點;最后一個結(jié)點沒有后繼結(jié)點,其余每個結(jié)點有且只有【】個后繼結(jié)點。

34.下面程序段的輸出結(jié)果是【】。

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

print("%d\n",sum);

35.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點的單詞鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。[*]

#include<stdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立鏈表*/

{…}

voiddisp(Node*h)

{Node*

36.函數(shù)sstrcmp()的功能是對兩個字符串進行比較。當(dāng)s所指字符串和t所指字符串相等時,返回值為0;當(dāng)s所指字符串大于t所指字符串時,返回值大于0;當(dāng)s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp())。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{

while(*s&&*t&&*s==【】)

{s++;t++;}

rerurn【】;

}

37.若有語句:

inti=-19,j=i%4;

printf("%d\n",j);

則輸出結(jié)果是【】。

38.以下程序段的輸出結(jié)果是【】。

inti=9;

printf("%o\n",i);

39.若已知a=10,b=20,則表達(dá)式!a<b的值為【】。

40.對于長度為n的順序存儲的線性表,當(dāng)隨機插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。

三、1.選擇題(20題)41.下列程序的輸出結(jié)果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}

A.55B.56C.程序錯誤,沒有輸出D.循環(huán)條件永遠(yuǎn)為真,死循環(huán)

42.有以下程序point(char*p){p+=3;}main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}程序運行后的輸出結(jié)果是______。

A.aB.bC.cD.d

43.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

44.下列敘述中正確的是()。

A.線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.雙向鏈表是非線性結(jié)構(gòu)D.只有根節(jié)點的二叉樹是線性結(jié)構(gòu)

45.以下程序輸出正確的是______。amovep(int*p,int(*A)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf("%d%d\n",p[2],p[5]);free(p);}

A.56B.25C.34D.程序錯誤

46.下列程序的輸出結(jié)果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}

A.7B.6C.5D.4

47.如下程序的輸出結(jié)果是#include<stdio.h>main(){charch[2)[5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}

A.69825B.63825C.6385D.693825

48.在結(jié)構(gòu)化設(shè)計方法中,生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示______。A.A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

49.以下程序中函數(shù)f的功能是將n個字符串按由大到小的順序進行排序:#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++if(strcmp(p[i],p[j])<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][10]:{"abc","aabdfg","abbd","dcdbe","cd",);inti;f(p,5);printf("%d\n",strlen(p[0]));}程序運行后的輸出結(jié)果是()。

A.6B.4C.5D.3

50.下面程序的輸出結(jié)果是()charb[]="ABCD";main(){char*chp;for(chp=b;*chp;chp+=2)printf("%s",chp);print{("\n");}

A.ABABCDB.ABCDABC.ABCDDD.ABCDCD

51.設(shè)有“intx=11;”則表達(dá)式(x++*1/3)的值是______。

A.3B.4C.11D.12

52.下列程序的輸出結(jié)果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;returnb;}main(){inta=1,t=2;t+=func(&a);printf("%d\n",t);}

A.4B.5C.6D.8

53.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.x&&y

B.x<=y

C.x‖y+z&&y-z

D.!((x<y)&&!z‖1)

54.電子郵件是()

A.網(wǎng)絡(luò)信息檢索服務(wù)

B.通過Web網(wǎng)頁發(fā)布的公告信息

C.通過網(wǎng)絡(luò)實時交互的信息傳遞方式

D.一種利用網(wǎng)絡(luò)交換信息的非交互式服務(wù)

55.下面一組中都是C語言關(guān)鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

56.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個元組就是一個字段

D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

57.以下程序的輸出結(jié)果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

58.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是

A.x%(-3)B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=4)*(a=3)

59.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達(dá)式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

60.若有“doublea;”,則正確的輸入語句是()。

A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%lf",&a)

D.scanf("%le",&a);

四、選擇題(20題)61.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同

62.在c語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。

A.auto和static

B.extern和register

C.auto和register

D.static和register

63.

64.下列判斷正確的是()。A.A.chara="ABCD":等價于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等價于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";

65.下列敘述中正確的是()。

A.有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)

B.只有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)

C.循環(huán)鏈表是非線性結(jié)構(gòu)

D.雙向鏈表是非線性結(jié)構(gòu)

66.若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

67.

68.

69.

70.以下選項中正確的定義語句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

71.

有以下程序

#include<stdio.h>

#include<string.h>

voidfun(chars[][10],intn)

{

chart;inti,j;

for(i=0;i<n-1;j++)

for(j=i+1,j<n;j++)

/*比較字符串的首字符大小,并交換字符串的首字符*/

if(s[0])>s[i][c]{t=s[i][o];s[i][o]=s[j][o];s[j][0]=t;}

}

main

{charss[5][10]="bcc","bbcc","xy","aaaacc","aabcc"}

fun(ss,5);printf("%s,%s",ss[0],ss[4]);

}

程序運行結(jié)果是()。

A.xy,aaaaccB.aaaacc,xyC.xcc,aabccD.acc,xabcc

72.

73.下列選項中,均屬于通用軟件的是()。

A.WindowsXP、AutoCAD、PowerPoint

B.VisualFoxPro、Excel、SPSS

C.Word、Photoshop、Excel

D.C++、CorelDraw、Firefox2.0

74.有以下程序:

程序的運行結(jié)果是()。

A.0B.1C.2D.3

75.有以下程序(說明:字母A的AscII值是65)程序運行后的輸出結(jié)果是()

A.YEB.BTC.YTD.BY

76.有以下程序:

執(zhí)行后輸出結(jié)果是()。

A.58B.56C.45D.24

77.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是

A.?dāng)?shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復(fù)制透明性

C.事物管理的集中性D.?dāng)?shù)據(jù)冗余

78.以下不構(gòu)成無限循環(huán)的語句或語句組是()。

79.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。

A.順序存儲的有序線性表B.結(jié)性鏈表C.二叉鏈表D.有序線性鏈表

80.結(jié)構(gòu)化程序設(shè)計的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:逐個比較P.q所指兩個字符串對應(yīng)位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的數(shù)組中,形成一個新的字符串。

例如,若主函數(shù)中a字符串為“aBCDeFgH”,b字符串為“Abed”,則C中的字符串應(yīng)為“aBcdeFgH”。請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存人XX所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。

例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

參考答案

1.D解析:函數(shù)scanf()的調(diào)用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。本題中定義變量a為雙精度型變量,雙精度變量的格式符為“1e”;變量的地址用取地址符“&”加變量名表示,如變量a的地址為“&a”。

2.B

3.C

4.C從for循環(huán)可知pt是指向行的首地址的指針變量,因此由指針的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

5.B

6.D選項A中“\\\”為轉(zhuǎn)義字符,故選項A錯誤,選項B和C顯然不是字符串常量。選項D是一個字符串常量,稱為空串。

7.B

8.D

9.C函數(shù)fun(intx,inty)的功能是返回x+Y的值。在主函數(shù)中,變量a,b,c的初始值分別為1,2,3。因此逗號表達(dá)式“a++,b++,a+b”的值等于5,表達(dá)式c++的值為3,調(diào)用于函數(shù)的表達(dá)式為“fun(5,3);”,其返回值等于8。

10.D

11.Ascanf是格式輸入函數(shù),其中雙引號之間的內(nèi)容是格式控制字符串,后面是輸入?yún)?shù)列表。輸入?yún)?shù)列表中各項都必須是變量地址,所以選項C錯誤;在scanf函數(shù)的格式字符前,可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以對實數(shù)指定小數(shù)位的寬度,所以選項B、D錯誤。選項A是正確的,按照A的輸入格式,12345賦值給變量a,空格賦值給變量ch,678910.36賦值給變量d。故本題答案為A選項。

12.A

13.D解析:后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。

14.DD?!窘馕觥勘究虻腜asswordChar屬性用來指定文本框是顯示用戶輸入的字符還是顯示占位符,指定用做占位符的字符。

15.A

16.A解析:本題主要考查了C語言的邏輯運算符,先將變量a,b的值轉(zhuǎn)換為2進制數(shù),a=00000101,b=00000001,a先左移2位結(jié)果為00010100,再與b按位或運算,結(jié)果為00010101,轉(zhuǎn)換為十進制數(shù)為21,因此,選項A是正確的。

17.C

18.D

19.C因為a>b不成立,故表達(dá)式a>b的值為0,即為0賦給m,因此&&左邊表達(dá)式的值為0,0與任何值&&運算都為0,于是不再計算&&右邊表達(dá)式的值,所以此時的n仍然為2。

20.B先將int型數(shù)據(jù)9強制轉(zhuǎn)換成double型,然后除以2,得到的結(jié)果與double型保持一致,即4.5;然后將4.5強制轉(zhuǎn)換成int型數(shù)據(jù)4,再計算9%2的值為1;最后計算4-1的值為3。故本題答案為B選項。

21.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

22.99解析:f(3,4)=(4-3)×3=3,f(3,5)=(5-3)×3=6,所以d=f(f(3,4),f(3,5))=f(3,6)=(6-3)×3=9。

23.存儲結(jié)構(gòu)

24.1616解析:首先用j和MCRA(i)替換MCRB(n,m)中的參數(shù)n和m,變成2*MCRA(j)+MCRA(i),再用j和i替換MCRA(m)中的參數(shù)m,變成2*2*j+2*i=2*2*3+2*2=16。

25.282,8解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。這里程序初始時a=1,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,判斷條件b--<O不成立,退出循環(huán),但b的值被減1,因此結(jié)果為:a=2,b=8。

26.白盒法白盒法

27.p=p*ip=p/ip=p*ip=p/i解析:本題中,欲求p的值,需要先求m!,n!,(m-n)!,可分別用循環(huán)語句實現(xiàn)。

28.順序存儲(順序方式存儲)順序存儲(順序方式存儲)解析:二分法查找對表的要求是有序的順序表,即第一要求是數(shù)據(jù)元素有序,第二要求是按順序方式存儲。

29.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個;維表代表一種關(guān)系。

30.77解析:在程序執(zhí)行時,static變量僅初始化一次,下次使用時將使用上次保存的值。

31.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實際上是要求s2字符串的長度,即是4。

32.在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員進行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b[7]…b[9]的值相加,結(jié)果為盟。\r\n\r\n

33.11

34.16

35.

36.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應(yīng)的字符相等則接著比較下一個字符,一直到兩個字符串中對應(yīng)字符不等,或者有一個為“\\0”,此對應(yīng)字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為“\\0”,且*s和*t相同,第一處應(yīng)填“*t”或其他等價形式。根據(jù)題意可知第二處應(yīng)填“*s-*t”或其等價形式。

37.-3-3解析:%運算符是求兩個數(shù)相除的余數(shù),其結(jié)果與被除數(shù)的符號一致,本題中“-19%4”的值為“-3”。

38.1111解析:本題考核的知識點是printf()函數(shù)的輸出格式。本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,9的八進制數(shù)的表示為11。

39.11解析:計算表達(dá)式!a<b,先計算!a,因a的值為10,!a的值為0,而關(guān)系表達(dá)式0<20為真,所以表達(dá)式!a<b的值為1。

40.n/2n/2解析:刪除一個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個數(shù)為n/2。

41.B解析:本程序中有個for循環(huán),但注意到for循環(huán)的條件是“i+1”,也就是只要i+1的值為真(非零值均為真),就執(zhí)行循環(huán)。當(dāng)i=1的時候,i+1的值為真,判斷if條件不成立,執(zhí)行i++,輸出i的值為5。

42.A解析:本題是一個陷阱,看似考查函數(shù)的傳址調(diào)用,其實考的是傳值調(diào)用。在C語言中,不管你給函數(shù)傳遞的參數(shù)是什么,指針也好數(shù)組名也罷,系統(tǒng)都是嚴(yán)格的將實參的值復(fù)制了一份作為函數(shù)的形參,即傳值調(diào)用。在函數(shù)中,對形參中的值怎么改變都不會影響到實參。那傳址調(diào)用又是怎么實現(xiàn)的呢?那是因為在函數(shù)中改變的不是形參指針變量中的值,而是形參指針變量所指內(nèi)存中的值。其實骨子里還是將實參指針的值復(fù)制?一份給形參指針變量,它們是兩個獨立的互不相干的變量,只不過指向的內(nèi)存地址值一模一樣罷了。本題的函數(shù)只是改變了形參指針變量p的值,這對程序沒有任何影響,主函數(shù)中p一開始就是指向b[0],最后輸出時還是b[0]的值'a'。所以應(yīng)該選擇A。

43.D解析:<<是C語言中規(guī)定的左移運算符,例如,a=a<<2,這個語句即是將a的二進制數(shù)左移兩位,左移一位相當(dāng)于該數(shù)乘于2,左移兩位相當(dāng)于該數(shù)乘以2的2次方。所以,x<<1=32*2=64。

44.A解析:線性表是一種線性結(jié)構(gòu),數(shù)據(jù)元素性表中的位置只取決于它們自己的序號,即數(shù)據(jù)元素之間的相對位置是線性的;棧、隊列、線性鏈表實際上也是線性表,故也是線性結(jié)構(gòu)。線性鏈表:線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)稱為線性鏈表,是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接來實現(xiàn)的。

45.A解析:本題main函數(shù)中定義了指針p和二維數(shù)組a,通過函數(shù)amovep將數(shù)組的值存入指針p所指向的存儲單元中,a的各各元素分別為:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通過malloc()函數(shù)紿指針分配內(nèi)存空間,free()函數(shù)用于釋放指針變量所用內(nèi)存空間。在主函數(shù)中通過amovep(p,a,3)調(diào)用函數(shù)amovep,使得實參p與形參p,實參數(shù)組a與形參中指向數(shù)組的指針變量共用同一存儲空間。最后輸出p[2],p[5]為56。

46.B

47.C解析:通過行指針p來實現(xiàn)數(shù)組元素的引用。注意:用格式說明符%s進行整串輸入與輸出。

48.A解析:讓考生對常用的軟件結(jié)構(gòu)設(shè)計工具要有較深入的了解。常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC-structureChart),也稱程序結(jié)構(gòu)圖。其中,矩形內(nèi)用于注明模塊的功能和名字;箭頭表示模塊間的調(diào)用關(guān)系,帶實心圓的箭頭表示傳遞的是控制信息,帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。注意:根據(jù)結(jié)構(gòu)圖設(shè)計思想,了解結(jié)構(gòu)圖構(gòu)成的基本形式。

49.C解析:函數(shù)strcmp(字符串1,字符串2)作用是將“字符串1”和“字符串2”進行比較,如果“字符串1”>“字符串2”,返回一個人于0的整數(shù)值;如果“字符串1”<“字符串2”,返回一個小于0的整數(shù)值;如果“字符串1”=“字符串2”,返回0。

函數(shù)strcpy(字符串?dāng)?shù)組名,字符串,[整型表達(dá)式])的作用是將“字符串”的前“整型表達(dá)式”個字符存入到指定的“字符數(shù)組”中,若省略“整型表達(dá)式”,則將整個“字符串”存入“字符數(shù)組”中。

函數(shù)f()的功能是利用選擇法把一個具有n行的二維數(shù)組中按行存放的n個字符串由大到小排序。在主函數(shù)中定義了一個二維字符數(shù)組p并給它按行賦初值,然后調(diào)用f()函數(shù),把它按行從大到小排列。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串。由此可知最大的字符串為“dcdbe”,排序后存放在第一行,其首地址為p[0],在輸出語句輸出的p[0]指向的字符串長度是5。

50.D

51.A解析:該題主要考查兩個知識要點,x++是先引用x的值再加1,因此參與乘法運算的是x的原值11,分母11與分子3相除得3,故原式=11*1/3=3。

52.B解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在執(zhí)行函數(shù)func時,由于全局定義了一個變量b,所以在函數(shù)體中執(zhí)行時b=2+1=3,最終t=2+3=5。

53.D解析:本題考查邏輯運算符的使用。當(dāng)“&&”的兩個運算對象都是邏輯1時,表達(dá)式才返回值是1;當(dāng)“‖”的兩個運算對象至少有一個是邏輯1時,表達(dá)式返回值是1。選項A)中,x和y都是邏輯1。所以返回值是1:選項B)中,x=4<=y=6為邏輯1,所以返回值是1;選項C)中,y+z的值等于14,非0,y-z的值為-2,非0,所以邏輯表達(dá)式4‖14&&-2的值不為0;選項D)中,x<y為1,!z為0,1&&0為1,0‖1為1,因此,!1為0。

54.D解析:電子郵件是利用Internet網(wǎng)傳送信件,不是檢索服務(wù),由于信件只發(fā)給收信人,所以不是公告信息,并不是一發(fā)信就必須要收信人立即接收,而是信件存放在郵箱中,收信人在需要的時候再取出。

55.C解析:C語言中的關(guān)鍵字有32個關(guān)鍵字(參見C語言教程),本題中只有C符合題意。

56.D數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤。數(shù)據(jù)的物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變,不會影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項B敘述錯誤。關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故選項C敘述錯誤。所以本題選D。

57.C解析:觀察程序段可知,對帶參數(shù)的宏的展開只是將語句中的宏名后面括號內(nèi)的實參字符串代替#define命令行中的形參。本題中c=f(a)/f(b)用#definef(x)x*x代替得c=f(6)/f(2),即c=6*6/2*2,結(jié)果為36。

58.A解析:“%”是求余運算符或模運算符,“%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項A)中的x是double型數(shù)據(jù)。

59.A解析:條件表達(dá)式的形式如下:表達(dá)式1?表達(dá)式2:表達(dá)式3,所以本題條件表達(dá)式a<b?a:c<d?c:d應(yīng)該理解為a<b?a:(c<d?c:d),首先求出條件表達(dá)式c<d?c:d的值等于2,再求條件表達(dá)式a<b?a:2的值,由于a-1<b-4成立,所以上述條件表達(dá)式的值等于1。

60.D解析:scanf函數(shù)的調(diào)用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。題中定義變量a為雙精度型變量,雙精度變量的格式符為“l(fā)e”;變量的地址用取地址符“&”加變量名表示,例如變量a的地址為“&a”。

61.C數(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈?zhǔn)酱鎯Y(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當(dāng)查找元素時就需要逐.個元素查找,因此查找的時間相對更長。

62.CC語言的存儲類型為auto、register、extern、static。下面分別解釋每種存儲類型的含義。auto:函數(shù)中的局部變量,動態(tài)地分配存儲空間,數(shù)據(jù)存儲在動態(tài)存儲區(qū)中,在調(diào)用該函數(shù)時,系統(tǒng)會給它們分配存儲空間,在函數(shù)調(diào)用結(jié)束后自動釋放這些存儲空間。register:為了提髙效率,C語言允許將局部變量的值放在CPU的寄存器中,這種變量叫“寄存器變量”,只有局部自動變量和形參可以作為寄存器變量。extern:外部變量(即全局變量)是在函數(shù)的外部定義的,它的作用域為從變量定義處開始到本程序文件的末尾。如果外部變量不在文件的開頭定義,其有效的作用范圍只限于定義處到文件末尾。static:靜態(tài)局部變量,屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放。故本題答案為C選項。

63.B

64.Da=“ABCD”書寫錯誤,因為“=”左邊不能出現(xiàn)常量;數(shù)組名S是代表S數(shù)組首地址常量,而不是變量;字符串只有在定義時維數(shù)可以省略。

65.B解析:如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足以下兩個條件:(l)有且只有一個根結(jié)點;(2)每個結(jié)點最多有一個前件,也最多有一個后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu)。如果一個數(shù)據(jù)結(jié)構(gòu)不是線性結(jié)構(gòu),則稱之為非線性結(jié)構(gòu),故A項錯誤。有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu),如二叉樹,B項說法正確。循環(huán)鏈表和雙向鏈表都屬于線性鏈表。故C、D項錯誤。

66.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標(biāo)是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。

67.B

68.C

69.C

70.C解析:C語言規(guī)定,每個語句和數(shù)據(jù)定義以分號結(jié)束,則說明選項A是兩條語句,前—條是對變量a作雙精度型定義的語句,而后一個“b;”是一個缺少類型的不正確的定義形式,如果是定義多個變量,則應(yīng)用逗號隔開;當(dāng)定義多個變量賦同—個值時,不能用等式連寫的方式,如選項B的“double\u3000a=b=7;”應(yīng)寫成“double\u3000a=7,b=7;”所以選項B錯誤,選項C正確;在定義語句時,類型與變量名之間應(yīng)用空格分隔,而不是逗號,所以選項D錯誤。

71.D

\n函數(shù)fun(chars[][10],intn)比較二維字符數(shù)組s[][10]的每個字符串的首字符大小,如果前一個字符串首字符大于后一個字符串的首字符,則交換這兩個字符串的首字符。

\n

72.D

73.C軟件可以分為系統(tǒng)軟件和應(yīng)用軟件兩類,應(yīng)用軟件又可以分為針對具體應(yīng)用問題而專門開發(fā)的定制應(yīng)用軟件和在許多行業(yè)和部門中可以廣泛使用的通用應(yīng)用軟件。

74.B本題考查循環(huán)語句的嵌套以及條件的判斷問題。在程序中,內(nèi)層循環(huán)判斷條件為”j<=i¨,而j的初值為3,故當(dāng)i的值為1和2時,內(nèi)層循環(huán)體都不會被執(zhí)行。只有當(dāng)i和j都等于3時才會執(zhí)行一次。m的值為55對3取模,計算結(jié)果為l。

75.Afun函數(shù)輸出ASCIl碼值為奇數(shù)的字符,所以答案選擇A)。

76.Da[2]%2即14%2=0,此時跳出while循環(huán),因此j=11+13=24。

77.C分布式數(shù)據(jù)庫是一種將數(shù)據(jù)分布存儲,但數(shù)據(jù)在邏輯上保持整體性的一種數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)具有以下幾個特點:

(1)數(shù)據(jù)的物理分布性。分布式數(shù)據(jù)庫的數(shù)據(jù)不是存儲在一個場地上,不是集中存儲,而是存儲在計算機網(wǎng)絡(luò)上多個場的設(shè)備上。

(2)數(shù)據(jù)的邏輯整體性。雖然數(shù)據(jù)分布在各個場地,但邏輯上是一個整體,它們被所有的用戶共享,并由一個DDBMS統(tǒng)一管理。

(3)位置透明性和復(fù)制透明性。位置透明性是指用戶不必關(guān)心數(shù)據(jù)的邏輯分區(qū),不必關(guān)心數(shù)據(jù)物理位置分布的細(xì)節(jié);而復(fù)制透明性是指用戶不用關(guān)心數(shù)據(jù)庫在網(wǎng)絡(luò)中各個結(jié)點的復(fù)制情況,被復(fù)制的數(shù)據(jù)的更新都由系統(tǒng)自動完成。

(4)場地自治性。各場地的數(shù)據(jù)由本地DBMS管理,具有自治處理能力,能執(zhí)行局部的應(yīng)用請求。

(5)數(shù)據(jù)冗余及冗余透明性。與集中式數(shù)據(jù)庫系統(tǒng)追求低冗余度不同,DDBS通過數(shù)據(jù)的適當(dāng)冗余來提高系統(tǒng)的可靠性、可用性和改善系統(tǒng)性能。但這種冗余對用戶是透明的,即用戶不必知道冗余的存在,冗余副本之間的數(shù)據(jù)一致性問題由系統(tǒng)負(fù)責(zé)。

(6)事務(wù)管理的分布性。數(shù)據(jù)的分布性必然造成事務(wù)執(zhí)行和管理的分布性,即一個全局事務(wù)的執(zhí)行可分解為在若干場地上子事務(wù)(局部事務(wù))的執(zhí)行。事務(wù)的原子性、一致性、隔離性、持久性以及事務(wù)的恢復(fù)也都具有分布性特點。

78.A選項A)中d0后面的語句只執(zhí)行了一次便結(jié)束了循環(huán);B)選項中條件while(1)永遠(yuǎn)成立,因此是死循環(huán);C)選項中n的值為l0,而循環(huán)體為空語句,所以while(n)永遠(yuǎn)為真,進入死循環(huán);D)選項中fbr語句第二個表達(dá)式為空,因此沒有判定條件,進入死循環(huán)。因此本題答案為A)。

79.A\nA?!窘馕觥慷址ú檎抑贿m用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。

\n

80.A結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態(tài)性。

81.

(1)intk=0;

(2)whffe(+pll+q)

【考點分析】

本題考查:變量初始化,需根據(jù)題意確定變量含義,然后對其進行初始化操作;while循環(huán)語句。

【解題思路】

(1)變量k存放數(shù)組c的下標(biāo),因此應(yīng)初始化為0。

(2)while循環(huán)語句的循環(huán)條件是判斷兩個字符串是否到達(dá)結(jié)尾。

82.

【考點分析】

本題考查:如何判斷非素數(shù);循環(huán)判斷結(jié)構(gòu);數(shù)組的引用。

【解題思路】

題目要求將l—m之問的非素數(shù)存人數(shù)組中,應(yīng)使用循環(huán)判斷結(jié)構(gòu)。循環(huán)語句用來遍歷1一m之間的每個數(shù),判斷語句用來判斷該數(shù)是否為素數(shù),若不是素數(shù),則將其存人數(shù)組中。這道題目是考查—個數(shù)是否為素數(shù)的簡單延伸,只要掌握了判斷素數(shù)的方法,問題便能順利解決。

【解題寶典】

判定一個數(shù)是否為素數(shù),即該數(shù)除了能被l和它本身外,不能被任何數(shù)整除。

代碼實現(xiàn)為:

for(j=2;j<i;j++)if(i%j==0)/*如余數(shù)為0,證明i不是素數(shù)·/

此語句需要熟記,很多判斷素數(shù)的題目也可通過此法解決。2021-2022年河南省濮陽市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有"doublea;",則正確的輸入語句是()。

A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%1f",&a)

D.scanf("%1e",&a);

2.串是一種特殊的線性表,其特殊性體現(xiàn)在()。

A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符

3.深度為5的二叉樹至多有C個結(jié)點。

A.16B.32C.31D.10

4.若有以下的說明和語句,則在執(zhí)行for語句后,’(*(pt+1)+2)表示的數(shù)組元素是()。intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];

A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

5.設(shè)單鏈表中結(jié)點的結(jié)構(gòu)為已知指針p所指結(jié)點不是尾結(jié)點,若在*p之后插入結(jié)點*s,則應(yīng)執(zhí)行下列哪一個操作______。A.s->link=p;p->link=s;

B.s->link=p->link;p->link=s;

C.s->link=p->link;p=s;

D.p->link=s;s->link=p;

6.以下正確的字符串常量是()。

A."\\\"B.abcC.OlympicGamesD.""

7.

8.以下程序的輸出結(jié)果是().A.A.2222B.2468C.222D.246

9.有下列程序:fun(intX,inty){return(x+y);)main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9

10.

11.若有定義“charch;inta;doubled;”,當(dāng)輸入為12345678910.36時,以下選項中能給各個變量正確賦值的是()。

A.scanf(“%d%c%lf”,&a,&ch,&d);

B.scanf(“%5d%2c%7.2lf”,&a,&ch,&d);

C.scanf(“%d%c%lf”,a,ch,d);

D.scanf(“5d%2c%7.2lf%”,&a,&ch,&d);

12.一個長度為99的循環(huán)鏈表,指針A和指針B都指向了鏈表中的同一個節(jié)點,A以步長為1向前移動,B以步長為3向前移動,一共需要同時移動多少步A和B才能再次指向同一個節(jié)點()。

A.99B.100C.101D.49E.50F.51

13.對如下二叉樹進行后序遍歷的結(jié)果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

14.為了隱藏在文本框中輸入的信息,用占位符代替顯示用戶輸入的字符,需要設(shè)置的屬性是()。

A.ValueB.ControlSoureeC.InputMaskD.PasswordChar

15.以下函數(shù)的時間復(fù)雜度和空間復(fù)雜度為()A.T(n)=O(2^n),S(n)=O(n)

B.T(n)=O(1),S(n)=O(1)

C.T(n)=O(2^n),S(n)=O(1)

D.T(n)=O(n),S(n)=O(n)

16.有以下程序#include<stdio.h>main(){inta=5,b=l;t=(a<<2)|b;printf("%d\n",t);}程序運行后的輸出結(jié)果是______。A.21B.11C.6D.1

17.

18.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()

A.分塊B.順序C.折半D.哈希

19.設(shè)a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達(dá)式(m=a>b)&&(n—c>d)運算后,n的值是()n

A.0B.1C.2D.3

20.表達(dá)式“(int)((double)9/2)-9%2”的值是()。

A.0B.3C.4D.5

二、2.填空題(20題)21.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

22.若有以下程序:

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

printf("%d\n",d);

}

執(zhí)行后的輸出結(jié)果是【】。

23.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

24.以下程序的輸出結(jié)果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

25.下列程序的運行結(jié)果是______。

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

printf("%d,%d\n",a,b);

}

26.單元測試又稱模塊測試,一般采用【】測試。

27.函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù),且要求m>n。

例如:m=12,n=8時,運行結(jié)果應(yīng)該是495.000000。請在題目的空白處填寫適當(dāng)?shù)某绦蛘Z句,將該程序補充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

28.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲結(jié)構(gòu)必須是______。

29.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

30.下列程序執(zhí)行后輸出的結(jié)果是【】。

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

for(i=0;i<2;i++)

k=f(a++);

printf("%d\n",k);

}

31.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

32.以下程序的輸出結(jié)果是______。

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n+1+i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

printf("%d\n",s);

}

33.性結(jié)構(gòu)中,第一個結(jié)點沒有前驅(qū)結(jié)點,其余每個結(jié)點有且只有【】個前驅(qū)結(jié)點;最后一個結(jié)點沒有后繼結(jié)點,其余每個結(jié)點有且只有【】個后繼結(jié)點。

34.下面程序段的輸出結(jié)果是【】。

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

print("%d\n",sum);

35.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點的單詞鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。[*]

#include<stdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立鏈表*/

{…}

voiddisp(Node*h)

{Node*

36.函數(shù)sstrcmp()的功能是對兩個字符串進行比較。當(dāng)s所指字符串和t所指字符串相等時,返回值為0;當(dāng)s所指字符串大于t所指字符串時,返回值大于0;當(dāng)s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp())。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{

while(*s&&*t&&*s==【】)

{s++;t++;}

rerurn【】;

}

37.若有語句:

inti=-19,j=i%4;

printf("%d\n",j);

則輸出結(jié)果是【】。

38.以下程序段的輸出結(jié)果是【】。

inti=9;

printf("%o\n",i);

39.若已知a=10,b=20,則表達(dá)式!a<b的值為【】。

40.對于長度為n的順序存儲的線性表,當(dāng)隨機插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。

三、1.選擇題(20題)41.下列程序的輸出結(jié)果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}

A.55B.56C.程序錯誤,沒有輸出D.循環(huán)條件永遠(yuǎn)為真,死循環(huán)

42.有以下程序point(char*p){p+=3;}main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}程序運行后的輸出結(jié)果是______。

A.aB.bC.cD.d

43.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

44.下列敘述中正確的是()。

A.線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.雙向鏈表是非線性結(jié)構(gòu)D.只有根節(jié)點的二叉樹是線性結(jié)構(gòu)

45.以下程序輸出正確的是______。amovep(int*p,int(*A)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf("%d%d\n",p[2],p[5]);free(p);}

A.56B.25C.34D.程序錯誤

46.下列程序的輸出結(jié)果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}

A.7B.6C.5D.4

47.如下程序的輸出結(jié)果是#include<stdio.h>main(){charch[2)[5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}

A.69825B.63825C.6385D.693825

48.在結(jié)構(gòu)化設(shè)計方法中,生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示______。A.A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

49.以下程序中函數(shù)f的功能是將n個字符串按由大到小的順序進行排序:#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++if(strcmp(p[i],p[j])<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][10]:{"abc","aabdfg","abbd","dcdbe","cd",);inti;f(p,5);printf("%d\n",strlen(p[0]));}程序運行后的輸出結(jié)果是()。

A.6B.4C.5D.3

50.下面程序的輸出結(jié)果是()charb[]="ABCD";main(){char*chp;for(chp=b;*chp;chp+=2)printf("%s",chp);print{("\n");}

A.ABABCDB.ABCDABC.ABCDDD.ABCDCD

51.設(shè)有“intx=11;”則表達(dá)式(x++*1/3)的值是______。

A.3B.4C.11D.12

52.下列程序的輸出結(jié)果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;returnb;}main(){inta=1,t=2;t+=func(&a);printf("%d\n",t);}

A.4B.5C.6D.8

53.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.x&&y

B.x<=y

C.x‖y+z&&y-z

D.!((x<y)&&!z‖1)

54.電子郵件是()

A.網(wǎng)絡(luò)信息檢索服務(wù)

B.通過Web網(wǎng)頁發(fā)布的公告信息

C.通過網(wǎng)絡(luò)實時交互的信息傳遞方式

D.一種利用網(wǎng)絡(luò)交換信息的非交互式服務(wù)

55.下面一組中都是C語言關(guān)鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

56.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個元組就是一個字段

D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

57.以下程序的輸出結(jié)果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

58.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是

A.x%(-3)B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=4)*(a=3)

59.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達(dá)式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

60.若有“doublea;”,則正確的輸入語句是()。

A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%lf",&a)

D.scanf("%le",&a);

四、選擇題(20題)61.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同

62.在c語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。

A.auto和static

B.extern和register

C.auto和register

D.static和register

63.

64.下列判斷正確的是()。A.A.chara="ABCD":等價于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等價于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";

65.下列敘述中正確的是()。

A.有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)

B.只有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)

C.循環(huán)鏈表是非線性結(jié)構(gòu)

D.雙向鏈表是非線性結(jié)構(gòu)

66.若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

67.

68.

69.

70.以下選項中正確的定義語句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

71.

有以下程序

#include<stdio.h>

#include<string.h>

voidfun(chars[][10],intn)

{

chart;inti,j;

for(i=0;i<n-1;j++)

for(j=i+1,j<n;j++)

/*比較字符串的首字符大小,并交換字符串的首字符*/

if(s[0])>s[i][c]{t=s[i][o];s[i][o]=s[j][o];s[j][0]=t;}

}

main

{charss[5][10]="bcc","bbcc","xy","aaaacc","aabcc"}

fun(ss,5);printf("%s,%s",ss[0],ss[4]);

}

程序運行結(jié)果是()。

A.xy,aaaaccB.aaaacc,xyC.xcc,aabccD.acc,xabcc

72.

73.下列選項中,均屬于通用軟件的是()。

A.WindowsXP、AutoCAD、PowerPoint

B.VisualFoxPro、Excel、SPSS

C.Word、Photoshop、Excel

D.C++、CorelDraw、Firefox2.0

74.有以下程序:

程序的運行結(jié)果是()。

A.0B.1C.2D.3

75.有以下程序(說明:字母A的AscII值是65)程序運行后的輸出結(jié)果是()

A.YEB.BTC.YTD.BY

76.有以下程序:

執(zhí)行后輸出結(jié)果是()。

A.58B.56C.45D.24

77.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是

A.?dāng)?shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復(fù)制透明性

C.事物管理的集中性D.?dāng)?shù)據(jù)冗余

78.以下不構(gòu)成無限循環(huán)的語句或語句組是()。

79.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。

A.順序存儲的有序線性表B.結(jié)性鏈表C.二叉鏈表D.有序線性鏈表

80.結(jié)構(gòu)化程序設(shè)計的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:逐個比較P.q所指兩個字符串對應(yīng)位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的數(shù)組中,形成一個新的字符串。

例如,若主函數(shù)中a字符串為“aBCDeFgH”,b字符串為“Abed”,則C中的字符串應(yīng)為“aBcdeFgH”。請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存人XX所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。

例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

參考答案

1.D解析:函數(shù)scanf()的調(diào)用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。本題中定義變量a為雙精度型變量,雙精度變量的格式符為“1e”;變量的地址用取地址符“&”加變量名表示,如變量a的地址為“&a”。

2.B

3.C

4.C從for循環(huán)可知pt是指向行的首地址的指針變量,因此由指針的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

5.B

6.D選項A中“\\\”為轉(zhuǎn)義字符,故選項A錯誤,選項B和C顯然不是字符串常量。選項D是一個字符串常量,稱為空串。

7.B

8.D

9.C函數(shù)fun(intx,inty)的功能是返回x+Y的值。在主函數(shù)中,變量a,b,c的初始值分別為1,2,3。因此逗號表達(dá)式“a++,b++,a+b”的值等于5,表達(dá)式c++的值為3,調(diào)用于函數(shù)的表達(dá)式為“fun(5,3);”,其返回值等于8。

10.D

11.Ascanf是格式輸入函數(shù),其中雙引號之間的內(nèi)容是格式控制字符串,后面是輸入?yún)?shù)列表。輸入?yún)?shù)列表中各項都必須是變量地址,所以選項C錯誤;在scanf函數(shù)的格式字符前,可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以對實數(shù)指定小數(shù)位的寬度,所以選項B、D錯誤。選項A是正確的,按照A的輸入格式,12345賦值給變量a,空格賦值給變量ch,678910.36賦值給變量d。故本題答案為A選項。

12.A

13.D解析:后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。

14.DD?!窘馕觥勘究虻腜asswordChar屬性用來指定文本框是顯示用戶輸入的字符還是顯示占位符,指定用做占位符的字符。

15.A

16.A解析:本題主要考查了C語言的邏輯運算符,先將變量a,b的值轉(zhuǎn)換為2進制數(shù),a=00000101,b=00000001,a先左移2位結(jié)果為00010100,再與b按位或運算,結(jié)果為00010101,轉(zhuǎn)換為十進制數(shù)為21,因此,選項A是正確的。

17.C

18.D

19.C因為a>b不成立,故表達(dá)式a>b的值為0,即為0賦給m,因此&&左邊表達(dá)式的值為0,0與任何值&&運算都為0,于是不再計算&&右邊表達(dá)式的值,所以此時的n仍然為2。

20.B先將int型數(shù)據(jù)9強制轉(zhuǎn)換成double型,然后除以2,得到的結(jié)果與double型保持一致,即4.5;然后將4.5強制轉(zhuǎn)換成int型數(shù)據(jù)4,再計算9%2的值為1;最后計算4-1的值為3。故本題答案為B選項。

21.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

22.99解析:f(3,4)=(4-3)×3=3,f(3,5)=(5-3)×3=6,所以d=f(f(3,4),f(3,5))=f(3,6)=(6-3)×3=9。

23.存儲結(jié)構(gòu)

24.1616解析:首先用j和MCRA(i)替換MCRB(n,m)中的參數(shù)n和m,變成2*M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論