2021年山西省朔州市全國計算機等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第1頁
2021年山西省朔州市全國計算機等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第2頁
2021年山西省朔州市全國計算機等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第3頁
2021年山西省朔州市全國計算機等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第4頁
2021年山西省朔州市全國計算機等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年山西省朔州市全國計算機等級考試C語言程序設(shè)計重點匯總測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.第

2

現(xiàn)有如下程序段

#include"stdio.h"

main()

{intk[30]={12,324,45,6,768,98,21,34,453,456};

intcount=0,i=0;

while(k[i])

{if(k[i]%2==0‖k[i]%5==0)count++;

i++;}

printf("%d,%d\n",count,i);}

則程序段的輸出結(jié)果為

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

2.在如下結(jié)構(gòu)定義中,不正確的是()。A.

B.

C.

D.

3.

4.

5.以下有關(guān)宏替換的敘述不正確的是()。

A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示

6.若有語句“typedefstructS{intg;charh;}T;”,則下列敘述中正確的是()。

A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

7.視圖設(shè)計一般有3種設(shè)計次序,下列不屬于視圖設(shè)計次序的是()。

A.自頂而下B.由內(nèi)向外C.由外向內(nèi)D.自底向上

8.

9.下面不屬于需求分析階段任務(wù)的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審

10.有定義語句:“int*p[4];”,以下選項中與此語句等價的是()。

A.intp[4];B.int**P;C.int*(p[4]);D.int(*p)[4];

11.下面哪個序列不是此圖的一個拓?fù)渑判?)A.ebfgadchB.aebdgfchC.adchebfgD.Aedbfgch

12.以下關(guān)于順序存儲結(jié)構(gòu)的敘述中,()是不正確的。

A.存儲密度大

B.邏輯上相鄰的結(jié)點物理上不必鄰接

C.可以通過計算機直接確定第i個結(jié)點的存儲地址

D.插入、刪除運算操作不方便

13.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen("myfile,dat","");{puts("abe",ip);fclose(fp);fp=fopen("myfile.dat","a*");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%S",str);puts(str);fclose(fp);}程序運行后的輸出結(jié)果是()。A.abcB.28cC.abc28D.內(nèi)類型不一致而出錯

14.以下數(shù)據(jù)結(jié)構(gòu)中,()是線性結(jié)構(gòu)。

A.有向圖B.棧C.線索二叉樹D.B樹

15.有定義語句:inta=1,b=2,c=3,x;,則以下選項中各程序段執(zhí)行后,x的值不為3的是A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;

B.if(a<3)x=3;elseif(b<a)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

16.以下選項中敘述錯誤的是()。

A.C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值

B.在同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)

C.C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值

D.C程序函數(shù)的性能不可以說明為static型變量

17.以下選項中關(guān)于C語言算術(shù)表達式的敘述中錯誤的是()。

A.可以通過使用圓括號來改變算術(shù)表達式中某些算術(shù)運算符的計算優(yōu)先級

B.C語言采用的是人們熟悉的四則運算規(guī)則,即先乘除后加減

C.算術(shù)表達式中,運算符兩側(cè)類型不同時,將進行類型之間的轉(zhuǎn)換

D.C語言僅提供了“+”“-”“*”“/”這4個基本算術(shù)運算符

18.設(shè)有以下定義則下面語句中錯誤的是()。A.a++;B.b++C.c++;D.d++;

19.有以下程序

#include<stdio.h>

main()

{charch[3][5]={“AAAA”,”BBB”,”CC”};

printf(“%s\n”,ch[1];)

}

程序運行后的輸出結(jié)果是()A.A.AAAA

B.CC

C.BBBCC

D.BBB

20.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a(chǎn)’+‘A’);}程序運行后的輸出結(jié)果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

二、2.填空題(20題)21.若輸入tear、test、arj,則下列程序的運行結(jié)果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

22.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

23.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

[8]

if(s[*k]<s[i])*k=i;

return[9];}

main()

{inta[10]:{876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

pfintf("%d,%d\n"

24.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和方法的機制稱為______。

25.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

26.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。

27.如果一個工人可管理多個設(shè)施,而一個設(shè)施只可被一個工人管理,則實體“工人”與實體“設(shè)備”之間存在【】聯(lián)系。

28.當(dāng)運行以下程序時,輸入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",str);insert(str);

}

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

main()

{inta[]={31,27,20,12,6,1),*p=a;

p++;

printf("%d\n",*(p+2));

}

30.設(shè)i,j,k均為int型變量,則執(zhí)行完下面的for語句后,k的值為【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

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

ints=12;

while(s);

--s;

32.若輸入tc,則程序的運行結(jié)果為【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

33.若有定義:inta=10,b=8,c=4;然后順序執(zhí)行下列語句后,變量a中的值是()。c=(b-=(a-4));a=(c%2)+(b-1);

34.以下程序運行后的輸出結(jié)果是______。

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

35.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是【】。

structnode

{chardata;

structnode*next;}a,b

36.若fp已正確定義為—‘個文件指針,d1.dd為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:fp=fopen(______);。

37.下面程序的運行結(jié)果是()。#include<stdio.h>main(){chara[80],*p="AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

38.一名學(xué)生只能住一間宿舍,一間宿舍可住多名學(xué)生,則實體“宿舍”與實體“學(xué)生”的聯(lián)系屬于()的聯(lián)系。

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

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case1:n++;break;

default:k++;n++;

}

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

}

40.已知字符A的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>。則輸出結(jié)果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

printf('%c%c\n",a,b);

}

三、1.選擇題(20題)41.fgetc函數(shù)的作用是從指定文件讀入—個字符,該文件的打開方式必須是______。

A.只讀B.追加C.讀或讀寫D.以上均正確

42.以下程序的輸出結(jié)果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}

D.1111222334

43.以下不合法的數(shù)值常量是()。

A.11B.lelC.8.0E0.5D.0xabcd

44.下列說法正確的是()。

A.在C語言中,可以使用動態(tài)內(nèi)存分配技術(shù),定義元素個數(shù)可變的數(shù)組

B.在C語言中,數(shù)組元素的個數(shù)可以不確定,允許隨機變動

C.在C語言中,數(shù)組元素的數(shù)據(jù)類型可以不一致

D.在C語言中,定義了一個數(shù)組后,就確定了它所容納的元素的個數(shù)

45.若有定義語句:inta[2][3],*p[3],則以下語句中正確的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

46.有以下程序

main()

{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;

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

for(j=0;j<3;j++)

for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

for(i=0;i<4;i++)printf("%d,",a[i][i]);

}

程序運行后的輸出結(jié)果是

A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,

47.可以在C語言程序中用做用戶標(biāo)識符的一組標(biāo)識符是()。

A.voidB.aa123_abcBBNcasC.as+b3D.6f-123DoIfSIG

48.現(xiàn)有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(L[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}則程序段的輸出結(jié)果為

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

49.以下程序的結(jié)果是()

main()

{unsignedinta=3,b=10;

printf("%d\n",a<<2|b>>1);

}

A.1B.5C.12D.13

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

A.10<回車>

B.10.0,22.0,33.0<回車>22<回車>33<回車>

C.10.0<回車>

D.1022<回車>22.033.0<回車>33<回車>

51.下面能正確進行字符串賦值操作的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;scanf("%s",&s);

52.在int(*prt)[3];定義中,標(biāo)識符prt()。

A.定義不合法

B.是一個指針數(shù)組名,每個元素都是一個指向整型變量的指針

C.是一個指針,它指向一個具有三個元素的一維數(shù)組

D.是一個指向整型變量的指針

53.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

54.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達式a/b+c-k值的類型為:

A.intB.doubleC.floatD.char

55.已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4,下列正確的輸入語句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scanf("%d,%d,%d",&i,&j,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

56.下述程序文件輸出的結(jié)果是______。#inelude<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%d5.of%c%d",58,76273.0,'-',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件為二進制文件而不可讀

57.若有下列說明和語句,已知int型數(shù)據(jù)占2個字節(jié),則下列語句的輸出結(jié)果是()。structst{chara[15];intb;doublec;};printf("%d",sizeof(structst));

A.15B.8C.25D.2

58.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是______。

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

59.在下列敘述中,錯誤的一條是()

A.scanf()函數(shù)可以用來輸入任何類型的多個數(shù)據(jù)

B.數(shù)組名作函數(shù)參數(shù)時,也采用“值傳遞”方式

C.如果形參發(fā)生改變,不會改變主調(diào)函數(shù)的實參值

D.函數(shù)的實參與形參的類型應(yīng)一致

60.下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10};int*p=a,**q=&p;printf("%d,",*(p++));pfintf("%d",**q);}

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

四、選擇題(20題)61.有以下程序程序的運行結(jié)果是()。

A.123B.12300C.1D.321

62.設(shè)有如下函數(shù)定義:

若執(zhí)行調(diào)用語句“l(fā)l=fm(3);”,則函數(shù)tim總共被調(diào)用的次數(shù)是()。

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

63.

64.

65.有以下程序程序運行后的輸出結(jié)果是()。

A.143B.197C.33D.28

66.若變量X、y已正確定義并賦值,以下符合c語言語法的表達式是()。

A.++x,y=x-一B.x+l=yC.x=x+10--x+yD.double(x)/lO

67.

68.以下敘述中錯誤的是()。

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值

D.當(dāng)在程序的開頭包含文件stdi0.h時,可以給指針變量賦NULL

69.

70.在面向?qū)ο蠓椒ㄖ?,一個對象請求另一對象為其服務(wù)的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息

71.(46)面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是()

A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系

B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念

C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題

D.鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領(lǐng)域的概念去思考

72.

73.設(shè)有如下程序段:

則以下敘述中正確的是()。

A.輸出值為2004

B.輸出值為2008

C.運行時產(chǎn)生出錯信息

D.輸出語句中格式說明符的個數(shù)少于輸出項的個數(shù),不能正確輸出

74.以下敘述中正確的是

A.C語言比其他語言高級

B.C語言可以不用編譯就能被計算機識別執(zhí)行

C.C語言以接近英語國家的自然語言和數(shù)學(xué)語言作為語言的表達形式

D.C語言出現(xiàn)得最晚,具有其他語言的一切優(yōu)點

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

76.有以下程序程序的運行結(jié)果是()。

A.20B.10C.0D.出錯

77.下列敘述中正確的是()。A.循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)

B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況

C.在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況

D.循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定

78.

79.有以下程序:

#include<stdio.h>

structSTU{charname[9];charsex;intscore[2];};

voidf(structSTUa[])

{structSTUb={"Zhao",m,85,90);

a[1]=b;

}

main()

{structSTUc[2]={{"Qian",f,95,92},{"Sun",m98,99}};

f(c);

printf(”%s,%c,%d,%d,¨,c[o].name,c[o].sex,c[o].score[o],c[o].score[1]);

printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[o],c[1].score

[1]);

}

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

A.Zhao,m,85,90,Sun,m,98,99

B.Zhao,m,85,90,Qian,f,95,92

C.Qian,f,95,92,Sun,m,98,99

D.Qian,f,95,92,Zhao,m,85,90

80.有以下程序(strcat函數(shù)用以連接兩個字符串)

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有小寫字母c。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,其功能是將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。例如,當(dāng)a=25,b=43,實際輸入時個數(shù)之間以Enter鍵分隔,調(diào)用該函數(shù)后,c=3452。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.B

3.D

4.A

5.D解析:本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數(shù)的宏替換兩類。使用宏時應(yīng)注意以下幾點:①定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標(biāo)識符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

6.BT為結(jié)構(gòu)體類型名,可以用來定義結(jié)構(gòu)體變量。故本題答案為B選項。

7.C視圖設(shè)計的設(shè)計次序分3種:自頂向下、自底向上和由內(nèi)向外。它們?yōu)橐晥D設(shè)計提供了具體的操作方法,設(shè)計者可根據(jù)實際情況靈活掌握。

8.C

9.C【答案】:C

【知識點】:需求分析階段的任務(wù)

【解析】:需求分析階段的任務(wù)是深入描述軟件的功能和性能,確定軟件設(shè)計的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題??煞譃樾枨筇岢?、需求描述及需求評審三個階段。從此可以看出需求分析的任務(wù)不包括制定軟件集成測試計劃,故選C。

10.D本題int*p[4]的作用是聲明一個指針數(shù)組,每個元素都是int*型指針。

11.C

12.B

13.C本題考查文件的操作,首先打開文件,進行寫操作,把“abc”寫入“myfile”文件,再打開“myfile.data"文件,輸入28,在鍵盤上接收字符,輸出并關(guān)閉文件。本題結(jié)果為abc28。

14.B

15.C解析:選項A),B)考查了多分支結(jié)構(gòu)的用法,選項A)中的程序段執(zhí)行時,c<a,b<a條件均不成立,故執(zhí)行else后的語句,x值為3;選項B)中a<3條件成立,執(zhí)行x=3;而選項C),D)是單分支結(jié)構(gòu)的用法,選項C)中程序段執(zhí)行時,a<3條件成立,x=3,但條件a<2也成立,此時執(zhí)行x=2,下一個條件不成立,不再執(zhí)行其后的語句。

16.A靜態(tài)變量不是每調(diào)用一次就賦一次初值,而是將需要定義許多相同的具有相同屬性的值時,使用靜態(tài)變量來節(jié)省空間,所以A選項錯誤。

17.DC語言的算術(shù)運算符是有優(yōu)先級的。圓括號可以改變算術(shù)表達式中某些算術(shù)運算符的優(yōu)先級,選項A正確;算術(shù)運算符中,乘除運算符的優(yōu)先級比加減運算符的優(yōu)先級高,C語言采用的是四則運算規(guī)則,選項B正確;算術(shù)表達式中,運算符兩側(cè)運算對象的數(shù)據(jù)類型不同時,將進行隱式類型轉(zhuǎn)換,選項C正確;C語言中基本的算術(shù)運算符除了“+”“-”“*”“/”之外,還有“%”,即求余運算符,選項D錯誤。故本題答案為D選項。

18.D

19.Dch[1]即輸出的為第二個字符串,即BBB。

20.C程序定義一個字符數(shù)組b,并使用字符串“happynewyeai”進行初始化。然后通過for循環(huán),遍歷字符數(shù)組b中的每個字符,再將b中的字符元素修改為大寫字母。程序輸出:HAPPYNEWYEAR。故本題答案為C選項。

21.arjteartest

22.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。

23.本題中直接使用指針變量k,但在使用時要注意對k的指針運算,此外,一開始應(yīng)使*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

24.繼承繼承解析:在面向?qū)ο蟮某绦蛟O(shè)計方法中,某些屬性和方法是可以共享的,由于類從父類中繼承而來,這樣提高了軟件的可重用性。

25.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf('%d\\n',z);語句。

26.數(shù)據(jù)存儲數(shù)據(jù)存儲

27.一對多或1:N實體之間的對應(yīng)關(guān)系稱為聯(lián)系,它反映現(xiàn)實世界事物之間的相互關(guān)聯(lián)。兩個實體間的聯(lián)系可以歸結(jié)為三種類型:一對一聯(lián)系表現(xiàn)為某一實體與另一實體一一對應(yīng)相關(guān)聯(lián);一對多聯(lián)系表現(xiàn)為某一實體與相關(guān)多個實體相關(guān)聯(lián);多對多聯(lián)系表現(xiàn)為多個實體與相關(guān)多個實體相關(guān)聯(lián)。

28.a*b*c*d*a*b*c*d*解析:字符處理函數(shù)strlen()測試字符串常量的長度,不包括‘\\0’在內(nèi)。因此,函數(shù)insert()實現(xiàn)了將字符數(shù)組中每個非‘\\0’的字符后插入字符‘*’的功能。故輸出結(jié)果是a*b*c*d*。

29.1212解析:本題考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3]的值12。

30.1010解析:該for語句以i為0,j為10作為初始值,循環(huán)條件是i<=j,每次循環(huán)后i增1、j減1,循環(huán)體是將i與j的和賦給k,這樣變量k將保存的是最后一次賦給它的值。一次循環(huán)后i為1、j為9,二次循環(huán)后i為2、j為8,……,五次循環(huán)后i為5、j為5,第六次循環(huán),將i與j的和10賦給k后,i為6、j為4,循環(huán)結(jié)束,k值為10。

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

32.tc

33.22解析:本題考查的是基本賦值運算符和賦值表達式。表達式c=(b-=a-4)等價于c=(b=b-a+4)等價于c=b=2;表達式a(c%2+(b-1))等價于a=1+2-1=2;因此最后a的值為2。

34.abcbcc

35.a.next=aba.next=ab解析:選項A)中,指針變量q保存的就是變量b的地址,選項B)中的p是指針變量,應(yīng)該是p->next=&b;在選項D)中,用*運算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址。

36.d1.dat""rb"或"d1.dat""r+b”或"d1.dat""rb+"d1.dat','rb'或'd1.dat','r+b”或'd1.dat','rb+'解析:本題考查的知識點是二進制文件的打開方式。打開文件的函數(shù)為fopen('文件名''mode'),其中'mode'表示文件的打開方式.如果打開的是二進制文件,其mode字符串可以是:'rb''wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已有在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件.'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進行追加.當(dāng)文件不存在,將創(chuàng)建新文件。'r='打開一個已有在文件用于更新(可讀可寫)。'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當(dāng)文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據(jù)題意,應(yīng)該填'd1.dat','rb'或其他等價的表達法。

37.babcdbabcd解析:C語言中“\\0”表示字符串的結(jié)束。程序?qū)指針指向字符串“AbabCDcd”的首地址,循環(huán)開始后若指針不是指向當(dāng)前字符串的結(jié)束標(biāo)志位,則進入循環(huán)體。循環(huán)中每次檢驗字符串中字母是否在'a'與'z'之間,若滿足則將當(dāng)前值賦值給數(shù)組a,最后給數(shù)組添加字符結(jié)束標(biāo)志。此程序可以篩選出字符串中的小寫字母。

38.一對多一對多解析:在現(xiàn)實世界中事物間的關(guān)聯(lián)稱為聯(lián)系。在概念世界中聯(lián)系反映了實體集間的一定關(guān)系。兩個實體集間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有3種,分別是一對一,一對多和多對多,依據(jù)題意,一名學(xué)生只能住一間宿舍,一間宿舍可住多名學(xué)生,所以實體“宿舍”與實體“學(xué)生”的聯(lián)系屬于一對多的聯(lián)系。

39.130130解析:本題主函數(shù)中用了一個for循環(huán),循環(huán)了3次:當(dāng)i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各增1,變?yōu)?和1,然后遇到break語句,退出switch語句;當(dāng)i=10和11時,i/10都等于1,執(zhí)行switch語句中的case1分支,兩次使n增1,變?yōu)?,退出switch語句。故該空格處應(yīng)該填130。

40.1B1B解析:在C語古中,字符型變量可以看作整型變量來對待,與整型所不同的是字符型變量在內(nèi)存中只占1個字節(jié),而整型是2個字節(jié).字符型變量中所有的數(shù)值是它所表示字符的ASCII碼值.ASCII碼中的一些相關(guān)字符是順序排列的,如'0',的ASCII碼值為48,'1'為49以此類推一直到'9';'A'的ASCII碼值為65,'B'為66以此類推一直到'Z'。本題程序首先定義了兩個字符型變量a和b,然后分別使用getchar()和scanf()函數(shù)讀取輸入的字符'B'和十進制整數(shù)33到a和b中,因為a-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最終輸出的結(jié)果是:1B。

41.D解析:fgetc函數(shù)是指從指定的文件讀入—個字符,該文件必須是以讀或讀寫方式打開的。fgetc函數(shù)的調(diào)用形式為:ch=fgetc(fp);。

42.2解析:while的執(zhí)行過程是:先計算條件表達式的值,若成立則執(zhí)行循環(huán)體,重復(fù)上述過程,直到條件表達式的值為“假”(值為零)時,退出循環(huán),并轉(zhuǎn)下一語句去執(zhí)行。本題在輸出num的值為3之后,再判斷while的循環(huán)條件3<=2,不成立,所以不再輸出num的值,故本題的答案選B。

43.C解析:指數(shù)形式規(guī)定字母e(或E)之前必須有數(shù)字(可以是一個十進制的整數(shù)或小數(shù)),之后必須是一個整數(shù)。選項C的字母E之后是一個小數(shù),故應(yīng)該選擇C。

44.D解析:本題考查數(shù)組的兩個知識點:①在C語言中,數(shù)組元素的個數(shù)是確定的,不允許隨機變動,數(shù)組定義好之后,它所能容納的元素的個數(shù)也就確定了;②同一個數(shù)組中所有元素的類型是一樣的。

45.C解析:選項A中,p為數(shù)組名,其值是不能被改變的,故非法;選項B中,p[0]的類型是int*,而a是二維數(shù)組名(類型為int[][3]),兩者無法賦值,故非法:選項C中,p[0]為int型指針,&a[1][2]是int型變量的地址,可以合法賦值;選項D中,p[1]是int型指針,而&a是二維數(shù)組的地址(類型為int(*)[2][3]),兩者無法賦值,故非法。所以本題應(yīng)該選擇C。

46.A解析:本題利用多重for循環(huán)的嵌套來實現(xiàn)對二維數(shù)組元素的按列排序。利用最外層循環(huán)來實現(xiàn)對列的控制。內(nèi)部循環(huán)利用選擇法對數(shù)組元素按照從小到大的順序進行排列,最后輸出對角線上的元素值。

47.B解析:C語言規(guī)定,標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。

48.D解析:在C語言中,定義一維數(shù)組的語句一般形式如下:

類型名數(shù)組名[常量表達式];

一維數(shù)組的引用形式為:數(shù)組名[下標(biāo)表達式]。count表示能被2整除或被5整除的個數(shù),i則計算有多少個數(shù)組元素。

49.D

50.B解析:本題scanf()函數(shù)中輸入格式串為“%f%f%f”,要求輸入變量a、b和c時用空格隔開,也可以用<回車>分隔。選項A中從鍵盤輸入3個變量的值時用<回車>符隔開,滿足輸入格式串的要求,故選項A的輸入方式能達到題意的要求。選項B中從鍵盤輸入3個變量的值時中間用了“,”隔開,而在輸入格式串中沒有要求用“,”隔開,故選項B的輸入方式不能達到題意的要求;選項C和D中分別都用了<回車>和空格宋分隔,滿足輸入格式串的要求,故選項C和D的輸入方式也能達到題意的要求。所以,4個選項中選項B符合題意。

51.C解析:如果一個字符數(shù)組用來存儲字符串,那么在定義該字符數(shù)組時,數(shù)組的大小應(yīng)該比它將要實際存放的字符串長度大1,所以選項A)和B)錯;選項D)中s本身就是一個字符指針,不需再取地址。

52.C解析:此題的關(guān)鍵是要分清指針數(shù)組與指向一維數(shù)組指針之間的不同,題中的說明語句定義了一個指針變量prt,它指向包含三個整數(shù)元素的一維數(shù)組。要注意:*prt兩側(cè)的圓括號不能缺少,如果寫成*ptr[3],則ptr與[3]先結(jié)合,是數(shù)組,然后再與前面的。號結(jié)合,則*ptr[3]將是一個指針數(shù)組。

53.B解析:棧操作原則上“后進先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧。所以出棧時一定是先出D,再出C,最后出A。

54.B解析:雙目運算中兩邊運算量類型轉(zhuǎn)換規(guī)律:

運算數(shù)1運算數(shù)2轉(zhuǎn)換結(jié)果類型

短整型長整型短整型->長整型

整型長整型整型->長整型

字符型整型字符型->整型

有符號整型無符號整型有符號整型->無符號整型

整型浮點型整型->浮點型

在a/b的時候,a、b的類型不一致,根據(jù)類型轉(zhuǎn)換規(guī)則,把整型轉(zhuǎn)換成double類型,之后的加、減類似。轉(zhuǎn)化規(guī)則為char,short->int->unsigned->long->double←float。

55.B解析:函數(shù)scanf()的調(diào)用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符:“輸入項地址表”是要輸入的變量的地址。若在格式符中插入了其他字符,則在輸入時要求按一一對應(yīng)的位置原樣輸入這些字符,其中的逗號也必須輸入。

56.C解析:fprintf函數(shù)工作時,多個數(shù)據(jù)間不會自動加分隔符,選項A錯誤;浮點數(shù)的搞出格式是“%5.0f”表明其小數(shù)部分輸出0位,即沒有輸出,所以選項B也是錯誤的。

57.C解析:本題主要考查結(jié)構(gòu)體的內(nèi)存使用:對結(jié)構(gòu)體而言,結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立。題中intb占2個字節(jié),chara[15]占15個字節(jié),doublec占8個字節(jié),所以共25個字節(jié)。

58.D解析:在switch語句中,若case語句后沒有break語句,則執(zhí)行完本層case后會繼續(xù)執(zhí)行后面case中的操作。k的初值為5,while條件成立,進入switch(5),執(zhí)行default語句,退出switch,執(zhí)行k--后得4,再進入while循環(huán),執(zhí)行switch(4),退出switch,再執(zhí)行k--后得3,繼續(xù)while循環(huán),執(zhí)行switch(3),n=n+k=3,再執(zhí)行k--后得2,進入while循環(huán),執(zhí)行case2,再執(zhí)行n=n+k=5,然后執(zhí)行k--后得1,最后一次進入while循環(huán),執(zhí)行case1,n=n+k=6,然后繼續(xù)執(zhí)行case2和case3后的語句,n=n+k=7,且執(zhí)行k--后得0,此時while條件不滿足,退出循環(huán),輸出n的值為7。

59.B

60.D

61.A程序首先將數(shù)組a[10]中的元

溫馨提示

  • 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

提交評論