2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第1頁
2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第2頁
2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第3頁
2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第4頁
2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

2.

3.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的運(yùn)行結(jié)果是()。A.20,30,B.30,17,C.15,30,D.20,15,

4.要求當(dāng)A的值為奇數(shù)時(shí),表達(dá)式的值為“真”,A的值為偶數(shù)時(shí),表達(dá)式的值為“假”,以下不滿足要求的表達(dá)式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)

5.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一個(gè)文件指針,指向待讀取的文件

B.一個(gè)整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C.一個(gè)內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址

D.一個(gè)內(nèi)存塊的字節(jié)數(shù)

6.下列程序的輸出結(jié)果是()。main{inta,b,d=25;a=d/10%9;b=a&&(一1);printf("%d,%d\n",a,b);}A.6,1B.2,1C.6,0D.2,0

7.以下敘述中錯(cuò)誤的是()。

A.一個(gè)C程序中可以包含多個(gè)不同名的函數(shù)

B.一個(gè)C程序只能有一個(gè)主函數(shù)

C.C程序在書寫時(shí),有嚴(yán)格的縮進(jìn)要求,否則不能編譯通過

D.C程序的主函數(shù)必須用main作為函數(shù)名

8.數(shù)據(jù)在計(jì)算機(jī)存儲(chǔ)器內(nèi)表示時(shí),如果元素在存儲(chǔ)器中的相對位置能反映數(shù)據(jù)元素之間的邏輯關(guān)系,則稱這種存儲(chǔ)結(jié)構(gòu)為()。

A.存儲(chǔ)結(jié)構(gòu)B.邏輯結(jié)構(gòu)C.順序存儲(chǔ)結(jié)構(gòu)D.鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

9.有以下程序:#include<stdio.h>main(){chara==‘0’,b=‘A’;inti;for(i=1;i<6;i++)if(i%2==0)putchar(a+i);elseputchar(b+i);}程序運(yùn)行后的輸出結(jié)果是()。

A.A2A3BB.2B4DFC.B4CD7D.B2D4F

10.

11.

12.字符串"\\"ABCDEF\"\\”的長度是()。

A.11B.10C.5D.3

13.

14.若有以下定義和語句:#include<stdio.h>charsl[10]=“abcd!”,*s2=“\nl23\\”;printf(“%d%d\n”,strlen(s1),strlen(s2));程序的運(yùn)行結(jié)果是()。

A.107B.105C.55D.58

15.能正確表示“當(dāng)x的取值在[1,10]和[100,110]范圍內(nèi)為真,否則為假”的表達(dá)式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)

B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)

C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)

D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)

16.設(shè)有定義“doublea[10],*s=a;”,以下能夠代表數(shù)組元素a[3]的是()。

A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3

17.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14

18.數(shù)據(jù)的不可分割的基本單位是()。

A.元素B.結(jié)點(diǎn)C.數(shù)據(jù)類型D.數(shù)據(jù)項(xiàng)

19.有以下程序:#include<stdio.h>#defineSUB(x,y)(x)*(y)main(){inta=3,b=4;printf(“%d\n”,SUB(a++,b++));程序運(yùn)行后的輸出結(jié)果是()。

A.15B.12C.16D.20

20.下列結(jié)構(gòu)體的定義語句中錯(cuò)誤的是()。

A.structord{intx;inty;intz;}structorda;

B.structord{intx;inty;intz;};structorda;

C.structord{intx;inty;intz;}a;

D.struct{intx;inty;intz;}a;

二、2.填空題(20題)21.\13'在內(nèi)存中占1個(gè)字節(jié),"\12"在內(nèi)存中占______個(gè)字節(jié)。

22.以下程序中函數(shù)huiwen的功能是檢查一個(gè)字符串是否是回文,當(dāng)字符串是回文時(shí),函數(shù)返回字符串“yes!”,否則函數(shù)返回字符串“no!”,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adsda。請?zhí)羁铡?/p>

#include<stdio,h>

#include<string,h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*pl++!=*p2--){t=1;break

if(【】)return("yes!");

elsereturn("no!");

}

main(){charstr[50];

printf("Iaput:");scanf("%s",str);

printf("%s\n",【】);

23.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。

#defineN4

voidrotade(inta[][N],intb[][N])

{intI,j;

for(I=0;I<N;I++)

{b[I][N-1]=【】;【】=a[N-1][I];}}

24.一張3.5英寸軟盤大約能存儲(chǔ)140萬個(gè)ASCⅡ字符,若存放漢字大約能存放【】個(gè)。

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

voidfun(int*n)

{while((*n)--);

printf("%d",++(*n));

}

main()

{inta=1000;

fun(&a);

}

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

intfun(int*x,intn)

{if(n==0)returnx[0];

elsereturnx[0]+fun(x+1,n-1);

}

main()

{inta[]={1,2,3,4,5,6,7};

printf("%d\n",fun(a,3));}

27.以下程序運(yùn)行后的輸出結(jié)果是【】。

mam()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2=0)

*p='*';

p++;i++;

}

puts(A);

}

28.當(dāng)運(yùn)行以下程序時(shí),輸入abcd,程序的輸出結(jié)果是()。insert(charstr[]){inti;i=strlen(str);while(i>0){str[2*i]=str[i];str[2*i-1]='*';i--;}printf("%s\n",str);}main(){charstr[40];scanf("%s\n",str);insert(str);}

29.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

30.解題方案的準(zhǔn)確而完整的描述稱為______。

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<;y++)

z=(*(ptr+y)<x?*(ptr+y);x;

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

}

32.在運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是【】。

33.下列表達(dá)式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。

34.子程序通常分為兩類:【】和函數(shù),前者是命令的抽象,后者是為了求值。

35.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{

intx=0210;

printf("%X\n",x);

}

36.以下程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

main()

{inta=1,b=2,c;

c=max(a,b);

printf("maxis%d\n",c);}

max(intx,inty)

{intz;

z=(x>y)?x:y;

return(z);}

37.以下函數(shù)的功能是計(jì)算s=1+1/21+1/3!+…+1/n!,請?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

38.下列程序的運(yùn)行結(jié)果是______。

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",-i);

}

39.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

40.以下程序是求矩陣a、b的和,結(jié)果存入矩陣c中,請?zhí)羁铡?include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

三、1.選擇題(20題)41.閱讀程序:main(){intx;scanf("%d',&x);if(x--<5)printf("%d\n",x);elseprintf("%d\、n",x++);}程序運(yùn)行后,如果從鍵盤上輸入5,則輸出結(jié)果是()

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

42.以下選項(xiàng)中不能作為合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0

43.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()。

A.冒泡排序?yàn)閚/2B.冒泡排序?yàn)閚C.快速排序?yàn)閚D.快速排序?yàn)閚(n-1)/2

44.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。

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

45.

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-1;

C.y=0;if(x>=0)if(x>0)y=1;e1sey=-1;

D.if(x>=0)if(x>0)y=1;elsey=0:elsey=-1;

46.若fp是指向某文件的指針,已讀到此文件末尾,則庫函數(shù)feof(fp)的返回值是______。

A.EOFB.0C.非零值D.NULL

47.下列程序的輸出結(jié)果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

48.下列關(guān)于字符串的說法中錯(cuò)誤的是

A.在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字符′\0′作為字符串結(jié)束標(biāo)志

B.′\0′作為標(biāo)志占用存儲(chǔ)空間,計(jì)入串的實(shí)際長度

C.在表示字符串常量的時(shí)候不需要人為在其末尾加入′\0′

D.在C語言中,字符串常量隱含處理成以′\0′結(jié)尾

49.一個(gè)采用順序存儲(chǔ)方式的線性表中,若線性表的第一個(gè)元素的存儲(chǔ)地址是200,每一個(gè)元素的長度是2,則第6個(gè)元素的地址是______。

A.208B.210C.211D.212

50.下列說法中,不正確的是______。

A.主函數(shù)main中定義的變量在整個(gè)文件或程序中有效

B.不同函數(shù)中,可以使用相同名字的變量

C.形式參數(shù)是局部變量

D.在函數(shù)內(nèi)部,可在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效

51.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c),給a賦予10.0,b賦予22.0,b賦予33.0,不正確的輸入形式是()

A.10<回車>22<回車>33<回車>

B.10.0,22.0,33.0<回車>

C.10.0<回車>22.O33.00<回車>

D.10.22<回車>33<回車>

52.在C語言中,如果下面的變量都是int類型,則輸出的結(jié)果是______。sum=pad=5;pad=sum++;pad++;++pad;printf("%d\n",pad);

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

53.利用fseek函數(shù)可實(shí)現(xiàn)的操作是()。

A.實(shí)現(xiàn)文件的順序讀寫B(tài).改變文件的位置指針C.實(shí)現(xiàn)文件的隨機(jī)讀寫D.以上答案均正確

54.開發(fā)軟件時(shí)對提高開發(fā)人員工作效率至關(guān)重要的是()

A.操作系統(tǒng)的資源管理功能B.先進(jìn)的軟件開發(fā)工具和環(huán)境C.程序人員的數(shù)量D.計(jì)算機(jī)的并行處理能力

55.以下程序的輸出結(jié)果是()#include<stdio.h>#include<string.h>main(){charstr[12]={'s','t','r','i','n','g'};printf("%d\n",strlen(str));}

A.6B.7C.11D.12

56.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}

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

57.有以下程序:fun(ihta,intb){if(a>b)return(a);elsereturn(b);}main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}程序運(yùn)行后的輸出結(jié)果是()。

A.3B.6C.8D.12

58.設(shè)已執(zhí)行預(yù)編譯命令#include<string.h>,以下程序段的輸出結(jié)果是()。chars[]="anapple";printf("%d\n",strlen(s));

A.7B.8C.9D.10

59.在下列文件名表示方式中,與*E.*等效的是()

A.*.??B.?.*C.???????E.???D.*.*

60.下列程序的輸出結(jié)果是______。main(){inta=12,b=12;printf("%d%d\n",--a,++b);

A.1010B.1212C.1110D.1113

四、選擇題(20題)61.以下選項(xiàng)中正確的定義語句是()。

62.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

63.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價(jià)的是()。A.

B.

C.

D.

64.有以下程序

65.在深度為7的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為______。A.32B.31C.64D.63

66.棧和隊(duì)列的共同特點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

67.下面函數(shù)調(diào)用語句含有實(shí)參的個(gè)數(shù)為()。

A.1B.2C.4D.5

68.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,k=0,n=0;

fp=fopen("d1.dat","wb+");

for(i=1;i<4;i++)fprintf(fp,"%d",i);

fclose(fp);

fp=fopen("d1.dat","r");

fseek(fp,1L,SEEK_SET);

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

}

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

A.12B.1230C.123D.230

69.

70.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項(xiàng)中的語句,則能正確執(zhí)行的語句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

71.若有以下語句

72.

73.若有以下定義和語句:

chars[10]="abcd!",*s2="\nl23\\";

Drintf("%d%d\n",strlen(sl),strlen(s2));

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

A.55B.105C.107D.58

74.

75.

76.

77.支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。

A.棧B.樹C.隊(duì)列D.二叉樹

78.

若希望下列的程序運(yùn)行后輸出25,程序空白處的正確選項(xiàng)是()。

main

{intid=50,a[]=(7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=1;i<4;++i

B.i=l;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

79.

80.設(shè)變量a、b、c、d和y都已正確定義并賦值。若有以下if語句

if(a<b)

if(c==d)y=0;

Elsey=1;

該語句所表示的含義是()。

A.

B.

C.

D.

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:

x1=(xO+a/xO)/2

例如,3的平方根為1.732051。

請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計(jì)題(1題)82.編寫一個(gè)函數(shù),該函數(shù)可以統(tǒng)計(jì)一個(gè)長度為2的字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為abcdefabcdeabceabcdef,子字符串為cd,則應(yīng)當(dāng)輸出3。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。

2.B

3.D程序的結(jié)構(gòu)體數(shù)組a的元素形成了一個(gè)單向的循環(huán)鏈表,每個(gè)元素的指針成員都指向下一個(gè)元素的地址。

4.D

5.Cfread函數(shù)中的參數(shù)buffer是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存塊中。

6.B當(dāng)邏輯運(yùn)算符“&&”兩邊的值是非零時(shí),邏輯表達(dá)式的值為真(即為1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

7.C【答案】C

【知識點(diǎn)】C程序的函數(shù)

【解析】C程序必須有且只有一個(gè)主函數(shù)main()。一個(gè)C程序可以包含多個(gè)不重名的子函數(shù)。C程序在書寫時(shí)沒有嚴(yán)格的縮進(jìn)要求,語句前的縮進(jìn)隨意。

8.C

9.D程序首先定義字符變量a并賦初值‘0’,定義字符變量b并賦初值‘A’。然后執(zhí)行for循環(huán),當(dāng)i為偶數(shù)時(shí),輸出字符“a+i”;當(dāng)i為奇數(shù)時(shí),輸出字符“b+i”。因?yàn)閿?shù)字和字母的ASCII值都是按順序遞增的,所以本題輸出為B2D4F。故本題答案為D選項(xiàng)。

10.D

11.D

12.B解析:本題涉及字符串的兩個(gè)最基本的概念。①字符串的長度是指字符串中字符的個(gè)數(shù),但不包含字符串結(jié)束符;②以反斜線“\\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉(zhuǎn)換成特定的含義,而不是原來的含義,不包含在字符串長度之內(nèi),“\\”連同后面的字符為一個(gè)長度。

13.B

14.Cstrlen函數(shù)返回字符串的長度。求字符串長度時(shí),遇到結(jié)束標(biāo)識‘\\0’為止,但是長度不包括結(jié)束標(biāo)識。字符數(shù)組s1的后5個(gè)元素沒有賦值,都為‘\\0’,即“abcd!”后為‘\\0’,所以“strlen(s1)”的值為5。字符指針s2所指向的字符串中,“\\n”為轉(zhuǎn)義字符,代表換行符,是1個(gè)字符,“\\\\”也為轉(zhuǎn)義字符,代表“\\”,也是1個(gè)字符,其后為字符串結(jié)束標(biāo)識‘\\0’,所以“strlen(s2)”的值也為5。故本題答案為C選項(xiàng)。

15.C本題考查邏輯與(&&)和邏輯或(||)運(yùn)算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達(dá)式應(yīng)寫成“(x>=100)&&(x>=110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關(guān)系,因此只要將前兩個(gè)表達(dá)式用邏輯或運(yùn)算符連接起來即可,所以最后的表達(dá)式:(x>=1)&&(x<=10)&&(x<=110)。

16.B題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s?!?*s)”表示“a[1]”,“s[3]”不是指針變量,不能使用間址運(yùn)算符“*”,故選項(xiàng)A、C不能表示“a[3]”;選項(xiàng)D的“*s+3”等于“a[0]+3”。故本題答案為B選項(xiàng)。

17.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時(shí)不滿足a<8,跳出循環(huán)。

18.D

19.B#define命令是C語言中的一個(gè)宏定義命令,標(biāo)識符一般使用大寫,用標(biāo)識符定義一個(gè):字符串,該標(biāo)識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進(jìn)行其他操作,僅僅只是替換標(biāo)識符。后綴自增運(yùn)算a++表示先運(yùn)算,后自加。意思是遇到a++了,先把當(dāng)前的a的值拿來參加運(yùn)算,后面再自加。SUB(a++,b++)→(a++)*(b++)=3*4。故本題答案為B選項(xiàng)。

20.AA選項(xiàng)錯(cuò)誤,在定義結(jié)構(gòu)體語句后少了分號。故本題答案為A選項(xiàng)。

21.22解析:'\\13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個(gè)字符,占一個(gè)字節(jié);而”\\12”是個(gè)字符串,除了八進(jìn)制數(shù)12表示的ASCII字符占一個(gè)字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志“'\\0'”,所以共有2個(gè)字節(jié)。

22.p1+(stfien(str)-1)或str+(strlen(str)-1)t==0或!thuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+strp1+(stfien(str)-1)或str+(strlen(str)-1)\r\nt==0或!t\r\nhuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+str解析:回文字符串是指正向與反向拼寫都一樣。由huiwen函數(shù)可知,第三處應(yīng)該填寫調(diào)用函數(shù)huiwen(str)。在函數(shù)huiwen中,執(zhí)行P1=str;使p1指向字符串str中第一個(gè)字符的地址,則第一處應(yīng)該使p2指向字符串str中最后一個(gè)字符的地址,故填p1+(stden(str)-1)或str+(strlen(str)-1)。本題要求如果是回文,則返回'yes!',否則,返回'no!',故當(dāng)t=0時(shí),說明字符串str為回文,所以第二處應(yīng)填t==0或!t。

23.a[0][I]b[I][0]a[0][I],b[I][0]解析:b[i][N-1]=a[0][i]實(shí)現(xiàn)把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,\ue008b[I][0]=a[N-1][I]實(shí)現(xiàn)將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組中的第0列。

24.70萬70萬

25.00解析:while循環(huán)的條件為即當(dāng)*n非零時(shí)執(zhí)行循環(huán),(*n)一是先使用*n的值再對*n減1,結(jié)束while循環(huán)后*n的值為-1。++(*n)是先對*n加1再使用*n的值,-1+1=0,輸出*n的值即輸出0。

26.1010解析:題目中的fun()函數(shù)直接調(diào)用了自身,所以它是遞歸函數(shù)。函數(shù)中只有一條if語句,意思是:若n為0,則返回x所指內(nèi)容(x[0]等價(jià)于*x),否則返回x所指內(nèi)容加上fun(x+1,n-1)。即,當(dāng)n>0時(shí),fun(x,n)=x[0]+fun(x+1,n-1)=x[0]+x[1]+fun(x+2,n-2)=…=x[0]+x[1]+…+x[n];當(dāng)n=0時(shí),fun(x,n)=x[0];當(dāng)n<0時(shí),函數(shù)將無限循環(huán)遞歸調(diào)用下去,因?yàn)閚-1下去永遠(yuǎn)也不會(huì)等于0。所以本題中fun(a,3)=a[0]+a[1]+a[2]+a[3]=12+3+4=10。故應(yīng)該填10。

27.*2*4*6*8**2*4*6*8*解析:程序中定義了一個(gè)字符數(shù)組a,并初始化為123456789,接著定義了一個(gè)指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個(gè)while循環(huán),此循環(huán)的作用是:當(dāng)i為偶數(shù)時(shí),將“*”賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時(shí)數(shù)組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為“*”,所以最后調(diào)用puts()函數(shù)輸出的a的值為*2*4*6*8*

28.a*b*c*d*a*b*c*d*解析:本題考查的是函數(shù)與一個(gè)簡單的算法結(jié)合在一起的應(yīng)用。首先定義一個(gè)int型變量來存放字符串str的長度,執(zhí)行while條件語句。通過分析可知,字符串2*i項(xiàng)的值可由第i項(xiàng)的值得到;第2*i-1項(xiàng)直接賦值為*,i遞減,如此反復(fù)直到不滿足i>0的條件時(shí),輸出運(yùn)行后的字符串。

29.無限無限解析:分析程序“while(s)”語句后面有一個(gè)“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。

30.算法算法解析:算法是指對解題方案的準(zhǔn)確而完整的描述。

31.66解析:條件運(yùn)算符的優(yōu)選級高于賦值運(yùn)算符,因此本題先計(jì)算關(guān)系表達(dá)式(*ptr+y)<x)*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時(shí),*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y=1時(shí),*(ptr+y)=4,(*ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=4,所以z=4:當(dāng)y=2時(shí),*(ptr+y)=6,(*(ptr+y)<x條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

32.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運(yùn)算過程中,采用鏈接方式即循環(huán)鏈表的結(jié)構(gòu)把空表與非空表的運(yùn)算統(tǒng)一起來。循環(huán)鏈表具有兩個(gè)特點(diǎn):①在循環(huán)鏈表中增加了一個(gè)表頭結(jié)點(diǎn),其數(shù)據(jù)域?yàn)槿我饣蚋鶕?jù)需要來設(shè)置,指針域指向線性表的第一個(gè)元素的結(jié)點(diǎn)。循環(huán)鏈表的頭指針指向表頭結(jié)點(diǎn)。②循環(huán)鏈表中最后一個(gè)結(jié)點(diǎn)的指針不是空,而是指向表頭結(jié)點(diǎn)。

33.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達(dá)。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項(xiàng)是或的關(guān)系。

34.過程過程

35.8888解析:C語言規(guī)定,以0開頭的整型常量為八進(jìn)制。另外,在primf()函數(shù)中,%X表示以十六進(jìn)制無符號形式輸出一個(gè)整數(shù),且十六進(jìn)制中的ABCDEF為大寫字母。本題的輸出應(yīng)該是八進(jìn)制210的十六進(jìn)制形式。將八進(jìn)制轉(zhuǎn)換為十六進(jìn)制,可以先將其轉(zhuǎn)換為二進(jìn)制。因?yàn)?位八進(jìn)制表示3位二進(jìn)制,4位二進(jìn)制表示1位十六進(jìn)制。(210)8=(10001000)2=(88)16,故本題輸出為880

36.maxis2maxis2解析:函數(shù)通過參數(shù)來傳遞數(shù)據(jù)是單向的,只能由實(shí)參傳給形參而不能由形參傳給實(shí)參,但是可以通過函數(shù)的返回值將函數(shù)中的數(shù)據(jù)帶回。注意:函數(shù)的兩種調(diào)用方式及函數(shù)調(diào)用的語法要求。

37.k=k*ik=k*i解析:本題中遺過for循環(huán)求s表達(dá)式中每一項(xiàng)的和,表達(dá)式“fac=fac/k;”求的是每—項(xiàng)的值,所以k的值應(yīng)為n!,在求n!的時(shí)候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故本題填k=k*i。

38.33解析:分析程序運(yùn)行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,軸出結(jié)果為3。

39.str[i]或str+iistr[i]或str+i\r\ni

40.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求兩個(gè)矩陣的和只要將對應(yīng)元素相加即可。

41.B

42.B解析:本題考查的是C語言中實(shí)型常量的指數(shù)表示法。實(shí)型常量的指數(shù)表示法是用字母e(或E)將一個(gè)實(shí)數(shù)的小數(shù)部分和指數(shù)部分分隔開。字母e(或E)之前是小數(shù)部分,之后是指數(shù)部分,這兩部分都不能省略,且指數(shù)部分必須為整數(shù)。故選項(xiàng)B不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

43.DD?!窘馕觥勘绢}主要考查對排序算法的理解。冒泡排序法首先將第一個(gè)記錄的關(guān)鍵字與第二個(gè)記錄的關(guān)鍵字進(jìn)行比較,若逆序則交換,然后比較第二個(gè)與第三個(gè),以此類推,直至第n-1個(gè)與第n個(gè)記錄的關(guān)鍵字進(jìn)行比較。第一趟冒泡排序使最大的關(guān)鍵字元素放到最后。以此類推,進(jìn)行第2~n次冒泡排序。如果在排序過程中不存在逆序,則排序結(jié)束。在最壞情況下,冒泡排序中,若初始序列為“逆序”序列,則需要比較n(D-1)/2次??焖倥判蚴菍γ芭菖判虻囊环N改進(jìn)。它的基本思想是:通過一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字比另一部分記錄的關(guān)鍵字小,然后分別對這兩部分記錄繼續(xù)進(jìn)行排序,最終達(dá)到整個(gè)記錄有序。對于快速排序,當(dāng)初始記錄序列按關(guān)鍵字有序或基本有序時(shí),快速排序退化為冒泡排序,最壞情況下比較次數(shù)為n(n-1)/2。

44.B解析:先計(jì)算關(guān)系表達(dá)式a<b=2<3為真(表達(dá)式為真時(shí),如果變量為int型變量則真用1表示,假用0表示),即a=1。

45.C解析:選項(xiàng)A的意思是:在x>O情況下,y為1,否則,在x=O時(shí),y為0,剩下x<O時(shí),y為-1,滿足本題中函數(shù)的要求。選項(xiàng)B描述的意思是:初始化y的值為0,在x>O時(shí),給y重新賦值為1,否則,在x<O時(shí),給y重新賦值為-1,滿足本題中函數(shù)的要求。選項(xiàng)C描述的意思是:在x>=0情況下,如果x>O,則y為1,否則,即x==0時(shí),y為-1;剩下的x<O時(shí),y為0??梢姶鸢窩實(shí)現(xiàn)的結(jié)果不是給定的表達(dá)式。選項(xiàng)D中描述的意思是:在x>=0的情況下,如果x>O,就給y賦值為1,否則即x==0時(shí)給y賦值為0,在不是x>=0的其他情況下,就給y賦值為-1,滿足本題中函數(shù)的要求。所以4個(gè)選項(xiàng)中C為所選。

46.C解析:由函數(shù)feof的定義得知,如果返回的是0,則表示沒有到文件末尾;如果返回為非0,則表示到文件末尾。

47.C解析:本題考查ifelse語句。第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a<b成立,執(zhí)行下列的復(fù)合語句,得c=a*b=20,b、a的值不變。

48.B解析:'\\0'作為標(biāo)志占用存儲(chǔ)空間,但是不計(jì)入串的實(shí)際長度。當(dāng)給一個(gè)字符型指針賦值時(shí),賦給這個(gè)指針的是這個(gè)字符串的地址。

49.B解析:順序結(jié)構(gòu)中,第n個(gè)元素的地址為An=A0+(n-1)*L(A為地址,L為元素長度)。

50.A

51.B

52.A解析:注意pad++和++pad的區(qū)別。

53.D解析:改變文件位置指針函數(shù)fseek()的功能:①改變文件的位置指針;②輔助實(shí)現(xiàn)文件的順序讀寫;③輔助實(shí)現(xiàn)文件的隨機(jī)讀寫。

54.B解析:軟件工程鼓勵(lì)研制和采用各種先進(jìn)的軟件開發(fā)方法、工具和環(huán)境。工具和環(huán)境的使用又進(jìn)一步提高了軟件的開發(fā)效率、維護(hù)效率和軟件質(zhì)量。

55.A解析:本題考查求字符串的長度。程序中定義字符串str時(shí)中請了12個(gè)字節(jié)的內(nèi)存空間,對它賦初值后,函數(shù)strlen在求串長度時(shí),以'\\0'作為串結(jié)束符,所以,strlen(str)的值為6。

56.C解析:本題考查ifelse語句。第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,執(zhí)行下列的語句;第二個(gè)if語句,先判斷條件,發(fā)現(xiàn)b<0條件不成立,則執(zhí)行與其配對的else語句,c+=1,得c=5。

57.D解析:主函數(shù)中首先定義了4個(gè)整型變量x、y、z和r,并分別給x、y、z賦初值為3、8、6,接著調(diào)用一個(gè)fun()函數(shù),并將返回值賦給變量r。其中將fun(x,y)函數(shù)的返回值和2*z作為fun()函數(shù)的兩個(gè)參數(shù)。在內(nèi)層fun(x,y)函數(shù)中,將x的值和y的值傳給形參a和b,此時(shí)a和b的值分別為3和8,執(zhí)行if浯句,由于if后面判斷條件表達(dá)式a>b為假,所以執(zhí)行else后面的語句,返回值為8。此時(shí),外層fun(x,y)函數(shù)兩個(gè)參數(shù)為8和2*z=12,所以r的賦值語句相當(dāng)于r=fun(8,12),同上分析可知tim(8,12)返回值為12,因此最后r的值為12。

58.B解析:如果一個(gè)字符數(shù)組中存放一個(gè)字符串,則函數(shù)strlen的值為“\\0”之前的全部字符個(gè)數(shù),也包括空格在內(nèi)。注意:字符串處理函數(shù)的使用。

59.C

60.D

61.AB)選項(xiàng),定義變量不能連等,C)選項(xiàng)b前沒有類型名,D)選項(xiàng)類型名與變量名之間不能有逗號,所以A)正確,其余錯(cuò)誤。

62.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

63.A表達(dá)式k=a>b?(b>c?1:0):0表示:如果(a>b)條件為真,則k取值(b>c?1:0),否則k取值0;當(dāng)a>b的情況下,如果b>c,則k值為1,

溫馨提示

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

最新文檔

評論

0/150

提交評論