2021年四川省眉山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2021年四川省眉山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2021年四川省眉山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2021年四川省眉山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2021年四川省眉山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩69頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021年四川省眉山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下敘述中錯(cuò)誤的是______。A.C程序必須由—個(gè)或—個(gè)以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為—個(gè)獨(dú)立的語(yǔ)句存在

C.若函數(shù)有返回值,必須通過(guò)return語(yǔ)句返回

D.函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參

2.有以下程序:voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main{char*s1="abe",*s2="123":swap(s1,s2);printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結(jié)果是()。A.123,abeB.abc.123C.1bc,a23D.321,cba

3.下列程序的輸出結(jié)果是()。main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}

A.22B.76C.72D.62

4.結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括A.順序結(jié)構(gòu)B.GOTO跳轉(zhuǎn)C.選擇(分支)結(jié)構(gòu)D.重復(fù)(循環(huán))結(jié)構(gòu)

5.線性表的順序存儲(chǔ)結(jié)構(gòu)是一種()。

A.隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)B.順序存取的存儲(chǔ)結(jié)構(gòu)C.索引存取的存儲(chǔ)結(jié)構(gòu)D.Hash存取的存儲(chǔ)結(jié)構(gòu)

6.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。

A.隨機(jī)值B.0C.5D.6

7.數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段中,()沒(méi)有專門的軟件對(duì)數(shù)據(jù)進(jìn)行管理。

I.人工管理階段

II.文件系統(tǒng)階段

Ⅲ.?dāng)?shù)據(jù)庫(kù)階段A.A.僅IB.僅ⅢC.I和IID.II和Ⅲ

8.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))

B.每個(gè)函數(shù)都可以被單獨(dú)編譯

C.每個(gè)函數(shù)都可以單獨(dú)運(yùn)行

D.在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)

9.下面哪種排序的平均比較次數(shù)最少()

A.插入排序B.選擇排序C.堆排序D.快速排序

10.有以下程序:#include<stdio.h>main(){chars[]="012xy\O8s34f4w2‘;inti;n=0;,for(i=0;s[i]!=0;i++)if(s[i]>=0s[i]<=9)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.3C.7D.8

11.順序結(jié)構(gòu)的本質(zhì)特點(diǎn)是()。

A.數(shù)據(jù)元素存儲(chǔ)在地址連續(xù)的內(nèi)存空間

B.數(shù)據(jù)元素緊鄰

C.數(shù)據(jù)元素在內(nèi)存中的相對(duì)位置表示數(shù)據(jù)之間的邏輯關(guān)系

D.不使用指針

12.有以下程序main(intargc,char*argv[]){intn=0,i;for(i=1;i<argc;i++)n=n*10+*argv[i]'0';printf("%d\n",n);}編譯連接后生成可執(zhí)行文件tt.exe。若運(yùn)行時(shí)輸入以下命令行tt12345678程序運(yùn)行后的輸出結(jié)果是A.12B.12345C.12345678D.136

13.若有序表的關(guān)鍵字序列為(b,c,d,e,f,g,q,r,s,t),則在二分查找關(guān)鍵字b的過(guò)程中,先后進(jìn)行的關(guān)鍵字依次為()

A.f,c,BB.f,d,BC.g,c,BD.g,d,B

14.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊(duì)列SQ的存儲(chǔ)空間,f為隊(duì)頭指示,r為隊(duì)尾指示,則執(zhí)行出隊(duì)操作的語(yǔ)句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)

15.設(shè)有定義“intm=1,n=2;”,則以下if語(yǔ)句中,編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤信息的是()。

A.if(m>n)m--elsen--;

B.if(m=n){m++;n++;}

C.if(m<0&&n<0){}

D.if(m>0);elsem++;

16.二叉樹(shù)的第三層最少有________個(gè)結(jié)點(diǎn)。

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

17.設(shè)有條件表達(dá)式:(EXP)?i++:j--,則以下表達(dá)式中與(E)(P)完全等價(jià)的是A.(EXP==0)B.(EXP!=0)C.(EXP=-1)D.(EXP!=1)

18.

19.下列一維數(shù)組初始化語(yǔ)句中,正確且與語(yǔ)句floata[]={0,3,8,0,9};等價(jià)的是().

A.floata[6]={0,3,8,0,9};

B.floata[4]={0,3,8,0,9};

C.floata[7]={0,3,8,0,9};

D.floata[5]={0,3,8,0,9};

20.以下說(shuō)法錯(cuò)誤的是()。

A.C語(yǔ)言中的常量是指在程序運(yùn)行過(guò)程中經(jīng)常被用到的變量

B.C語(yǔ)言中的常量是指在程序運(yùn)行過(guò)程中其值不能被改變的量

C.C語(yǔ)言中的常量可以用一個(gè)符號(hào)名來(lái)代表

D.C語(yǔ)言中的常量可以用宏來(lái)定義

二、2.填空題(20題)21.當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入abcdabcdef<CR>

cde<CR>

(<CR>表示回車),則下面程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

main()

{inta;chars[80],t[80];

gets(s);gets(t);

a=fun(s,t);

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

fun(char*p,char*q)

{inti;

char*p1=p;

char*q1;

for(i=0;*p!='\0';p++,i++)

{p=p1+i;

if(*p!=*q)continue;

for(q1=q+1,p=p+1;*p!='\0'&&*q1!='\0';q1++,p++)

if(*p!=*q1)break;

if(*q1=='\0')returni;}

return(-1);}

22.執(zhí)行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

23.以下程序的功能是進(jìn)行位運(yùn)算main(){unsignedchara,b;a=7^3;b=~4&3;pfintf("%d%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是

24.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對(duì)其中的圖形元素進(jìn)行確切解釋。

25.數(shù)據(jù)庫(kù)恢復(fù)是將數(shù)據(jù)庫(kù)從______狀態(tài)恢復(fù)到某一已知的正確狀態(tài)。

26.在結(jié)構(gòu)化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為【】。

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

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

28.在scanf()函數(shù)調(diào)用語(yǔ)句中,可以在格式字符和%號(hào)之間加上一個(gè)星號(hào),它的作用是跳過(guò)對(duì)應(yīng)的輸入數(shù)據(jù);當(dāng)輸入以下數(shù)據(jù)時(shí),100200300400500<回車>,下面語(yǔ)句的執(zhí)行結(jié)果為【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

printf("%d%d%d",a,b,c);}

29.注釋一般分為序言性注釋和______注釋。

30.與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是【】方法。

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

main()

{inta=1,b=2,c=3;

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

main()

{unsignedshorta=65536;intb;

printf("%d\n",b=A);

}

33.若有說(shuō)明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9);

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

35.以下程序中函數(shù)fun的功能是求出能整除x且不是偶數(shù)的務(wù)正整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過(guò)形參n返回。

例如,若x中的值為30,則有4個(gè)數(shù)符合要求,它們是1,3,5,15。

請(qǐng)按題意,完成填空。

試題程序:

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{inti,j=0;

【】;

if(x%i==0)pp[j++]=i;

【】;

}

main()

{intx,aa[1000],n,i;

printf("\nPleaseenteranintegernumber:\n");

scanf("%d",&x);

fun(x,aa,&n);

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

printf("\n");

}

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

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

37.按照“先進(jìn)先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

38.下面程序把從終端讀入的文本(用#作為文本結(jié)束標(biāo)志)復(fù)制到一個(gè)名為file.txt的新文件中。補(bǔ)足所缺語(yǔ)句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

39.為建立如下圖所示的存儲(chǔ)結(jié)構(gòu)(即每個(gè)結(jié)點(diǎn)兩個(gè)域,p是指向結(jié)點(diǎn)的指針域,data用以存放整型數(shù)),請(qǐng)將定義補(bǔ)充完整。

pdata

a

structlist

{【】;intdata;}a;

40.若fp已正確定義為一個(gè)文件指針,d1.dat為二進(jìn)制文件,請(qǐng)?zhí)羁?,以便為“讀”而打開(kāi)此文件:

fp=fopen(【】);。

三、1.選擇題(20題)41.若有下列定義,則對(duì)a數(shù)組元素地址的正確引用是()。inta[5],*p=a;

A.p+5B.a+1C.&a+1D.&a[0]

42.為了避免嵌套的if-else的二義性,C語(yǔ)言規(guī)定:else與______配對(duì)。

A.縮排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if

43.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.lf%3.lf\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

44.有以下程序

main()

{inti=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

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

}

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

A.123

B.234

C.223

D.233

45.fwrite函數(shù)的一般調(diào)用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

46.以下4個(gè)選項(xiàng)中,不能看成一條語(yǔ)句的是

A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;

47.以下程序段中,不能正確賦字符串(編譯時(shí)系統(tǒng)會(huì)提示錯(cuò)誤)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

48.請(qǐng)閱讀以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;}case2:a++,b++;break;}printf("a=%d,b=%d\n",a,b);上面程序的輸出結(jié)果是

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

49.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

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

A.1B.2C.4D.死循環(huán)

50.在C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是()。

A./B.++C.!=D.%

51.在下述程序中,判斷i>j共執(zhí)行的次數(shù)是()。main(){inti=O,j=10,k=2,s=0;for(;;){i+=k;if(i>j){ptintf("%d",s);break;}s+=i;}}

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

52.下面語(yǔ)句的輸出結(jié)果是______。printf("%d\n",strlen("\t\"065\xff\n"));

A.14B.8C.5D.輸出項(xiàng)不合法,無(wú)正常輸出

53.閱讀如下程序段#include"stdio.h"main(){intx,a,b;scanf("%d",&x);a=b=x;for(;x!=0;){if(x<b)b=x;if(x>a)a=x;scanf("%d",&x);}printf("a=%d,b=%d\n",a,b);}

輸入后輸出結(jié)果是

A.a=7569,b=789B.a=5,b=365C.a=7,b=789D.a=7569,b=5

54.在C語(yǔ)言中,while和do…while循環(huán)的主要區(qū)別是()。

A.do…while的循環(huán)體不能是復(fù)合語(yǔ)句

B.do…while允許從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)

C.while的循環(huán)體至少被執(zhí)行一次

D.do…while的循環(huán)體至少被執(zhí)行一次

55.若變量已正確定義并賦值,下面符合C語(yǔ)言的表達(dá)式是_____。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

56.執(zhí)行下面程序片段的結(jié)果是()intx=123;do{printf("%3d\n",x--);}while(!x);

A.打印出321B.打印出123C.不打印任何內(nèi)容D.陷入死循環(huán)

57.請(qǐng)選出以下程序段的輸出結(jié)果______。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%d\n",k);}

A.15B.100C.10D.150

58.下列程序的運(yùn)行結(jié)果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}

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

59.有以下程序:main(){intp[7]={11,13,14,15,16,17,18);i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執(zhí)行后輸出結(jié)果是()。

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

60.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing":pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開(kāi)頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

四、選擇題(20題)61.

62.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()A.軟件過(guò)程不規(guī)范B.軟件開(kāi)發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

63.以下敘述中錯(cuò)誤的是()。A.可以通過(guò)typedef增加新的類型

B.可以用typedef將已存在的類型用一個(gè)新的名字來(lái)代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedd可以為各種類型起別名,但不能為變量起別名

64.

65.下列定義數(shù)組的語(yǔ)句中,正確的是()。

66.在C程序中有如下語(yǔ)句:char*func(intx,inty);它是()。

A.對(duì)函數(shù)func的定義。B.對(duì)函數(shù)func的調(diào)用。C.對(duì)函數(shù)func的原型說(shuō)明。D.不合法的

67.有以下程序

main()

{inta[3][2]={0},(*ptr)[2],i,j;

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

{ptr=a+i;scanf("%d",ptr);ptr++;}

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

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

printf("\n");

}

}

若運(yùn)行時(shí)輸入123<回車>,則輸出結(jié)果為

68.

69.沒(méi)有以下語(yǔ)句

則Z的二進(jìn)制值是()。

A.00010100B.00011011C.00011100D.00011000

70.設(shè)整型變量n的值為2,執(zhí)行語(yǔ)句“n+=n-=n*n;”后,n的值是__________

A.0B.4C.-4D.2

71.在C語(yǔ)言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時(shí)在函數(shù)首部所說(shuō)明的函數(shù)類型

B.return語(yǔ)句中表達(dá)式值的類型

C.調(diào)用函數(shù)時(shí)主調(diào)函數(shù)所傳遞的實(shí)參類型

D.函數(shù)定義時(shí)形參的類型

72.

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

A.簡(jiǎn)單c語(yǔ)句必須以分號(hào)結(jié)束

B.C程序中的每—行只能寫—條i{}句

C.c語(yǔ)言程序中的注釋必須與語(yǔ)句寫在同一行

D.C語(yǔ)句必須在一行內(nèi)寫完

74.有以下程序

structSTU

{

charname[10];

intnum;

intScore;

};

main()

{

structSTUs[5]={{"YangSan",20041,703},

{"LiSiGuo",20042,580},

{"WangYin",20043,680},

{"SunDan",20044,550},

{"Penghua",20045,537}},*p[5],*t;

inti,j;

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

p[i]=&s[i];

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

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

if(p[i]->Score>p[j]->Score)

{

t=p[i];

p[i]=p[j];

p[j]=t;

}

printf("%d%d\n",s[1].Score,p[1]->Score);

}

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

A.550550B.580550

C.680680D.580680

75.

76.

77.有以下程序:main(){inti=1,j=1,k=2;if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);}執(zhí)行后的輸出結(jié)果是______。

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

78.有以下程序段:

以下選項(xiàng)中表達(dá)式的值為11的是()。

A.

B.

C.

D.

79.有以下程序

#include"stdio.h"

main()

{structdate

{intnumber;

floatfenzhi;

charname;

}stu;

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

}程序的運(yùn)行結(jié)果是

A.3B.5

C.7D.8

80.

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

#include<stdio.h>

main

{inta=0,i;

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

{switch(i)

{case0:

case3:a+=1;

case1;

case2:a+=2;

default:a+=3;

}

}

printf("%d",a);

}

A.19B.1C.6D.8

五、程序改錯(cuò)題(1題)81.下列給定程序中函數(shù)fun的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第l項(xiàng)起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…

例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為l3。

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

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

試題程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

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

}

六、程序設(shè)計(jì)題(1題)82.下列程序定義了M×M的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫函數(shù)proc(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為則返回主程序后s的值應(yīng)為310。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

參考答案

1.D解析:在調(diào)用函數(shù)時(shí),給形參分配存儲(chǔ)單元,并將實(shí)參對(duì)應(yīng)的值傳遞紿形參,調(diào)用結(jié)束后,形參單元彼釋放,實(shí)參單元仍保留并維持原值。因此,在執(zhí)行—個(gè)被調(diào)用函數(shù)時(shí),形參的值如果發(fā)生改變,并不會(huì)改變主調(diào)函數(shù)的實(shí)參的值,也就是說(shuō)形參的值是不傳回紿對(duì)應(yīng)的實(shí)參的。

2.C本題考查swap函數(shù),它的作用是把x、Y所指的內(nèi)容互換,其他的不變,因此當(dāng)執(zhí)行完調(diào)用函數(shù)后,僅僅a與1互換,其他的沒(méi)有變。

3.C解析:函數(shù)slzeof(a)的功能是求出字符串a(chǎn)中的字符占用存儲(chǔ)空間的大小,由于字符數(shù)組a有長(zhǎng)度為7,所以i=7;函數(shù)strlen(a)的功能是:求出字符串a(chǎn)的長(zhǎng)度。而每個(gè)字符串都以'\\0'為字符串的結(jié)束標(biāo)記,所以j的值等于2。

4.BB【解析】1966年Boehm和JaCopini證明了程序設(shè)計(jì)語(yǔ)言僅僅使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。

5.A

6.B解析:通過(guò)賦值語(yǔ)句“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語(yǔ)句中的spl等價(jià)于*(s+2),即x[5]值為0。所以,B選項(xiàng)為所選。

7.A數(shù)據(jù)管理技術(shù)發(fā)展的蘭個(gè)階段中,只有人工管理階段,沒(méi)有操作系統(tǒng),沒(méi)有管理數(shù)據(jù)的軟件,數(shù)據(jù)處理方式是批處理。在文件系統(tǒng)階段,操作系統(tǒng)中已經(jīng)有了專門數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。在數(shù)據(jù)庫(kù)系統(tǒng)階段,出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門軟件系統(tǒng),即數(shù)據(jù)庫(kù)管理系統(tǒng)。

8.B在C語(yǔ)言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒(méi)有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項(xiàng)A)錯(cuò)誤;C程序從main函數(shù)開(kāi)始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時(shí),整個(gè)程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)開(kāi)始,選項(xiàng)C)選項(xiàng)錯(cuò)誤;函數(shù)不能嵌套定義,選項(xiàng)D)錯(cuò)誤。

9.D

10.B考查簡(jiǎn)單的C程序數(shù)組和循環(huán)。for循環(huán)是指i=0,如果s/[3]!=0,則i自動(dòng)加1。if循環(huán)指的是s[i]中的元素大于等于0且小于等于9,則n加l,所以答案為B。

11.C

12.D解析:運(yùn)行時(shí)輸入該命令后,參數(shù)argc的值為4,字符串?dāng)?shù)組argv[1]、argv[2]、argv[3]分別為“12”、“345”、“678”,然后取這3個(gè)參數(shù)的第一個(gè)字符,將其轉(zhuǎn)化成原來(lái)的數(shù)字并組合成一個(gè)新的三位數(shù)。

13.A

14.B

15.A選項(xiàng)A中,if語(yǔ)句的語(yǔ)句塊“m--”后面少了分號(hào),不合法,編譯會(huì)出錯(cuò)。其他選項(xiàng)都是正確的。故本題答案為A選項(xiàng)。

16.B

17.B解析:在C語(yǔ)言中,邏輯表達(dá)式的結(jié)果只有兩種情況“tree”和“false”。如果要把一個(gè)邏輯值看成一個(gè)整數(shù)的話,true等于1;false等于0。如果要把一個(gè)整數(shù)看成一個(gè)邏輯值的話,非0等于true:0等于false。由此可見(jiàn),如果EXP表達(dá)式的結(jié)果為0的話;(EXP)為假:(EXP==0)為真;(EXP!=O)為假;(EXP==1)為假;(EXP!=1)為真。如果EXP表達(dá)式的結(jié)果為非0的話:(EXP)為真:(EXP=0)為假;(EXP!=0)為真;(EXP=1)結(jié)果不定;(EXP!=1)結(jié)果不定。綜上所述,只有(EXP!=0)完全等價(jià)于表達(dá)式(EXP)。故應(yīng)該選擇B。

18.C

19.D

20.AC語(yǔ)言中的常量是指在程序運(yùn)行過(guò)程中其值不能被改變的量,它可以用宏來(lái)定義,用一個(gè)符號(hào)名來(lái)代表。選項(xiàng)A錯(cuò)誤,選項(xiàng)B、C、D正確。本題答案為A選項(xiàng)。

21.a=6a=6解析:字符指針p++使指針向后移動(dòng)一個(gè)字符的位置,而*p則是取得指針p所在位置的字符元素。

22.3636解析:本題循環(huán)體共執(zhí)行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。

23.A

24.數(shù)據(jù)字典或DD數(shù)據(jù)字典或DD解析:數(shù)據(jù)流圖用來(lái)對(duì)系統(tǒng)的功能需求進(jìn)行建模,它可以用少數(shù)幾種符號(hào)綜合地反映出信息在系統(tǒng)中的流動(dòng)、處理和存儲(chǔ)情況。數(shù)據(jù)詞典(DataDictionary,DD)用于對(duì)數(shù)據(jù)流圖中出現(xiàn)的所有成分給出定義,它使數(shù)據(jù)流圖上的數(shù)據(jù)流名字、加工名字和數(shù)據(jù)存儲(chǔ)名字具有確切的解釋。

25.錯(cuò)誤。錯(cuò)誤。解析:數(shù)據(jù)庫(kù)恢復(fù)是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)從錯(cuò)誤狀態(tài)中恢復(fù)到某種邏輯一致的狀態(tài)。如果數(shù)據(jù)庫(kù)中包含成功事務(wù)提交的結(jié)果,則稱數(shù)據(jù)庫(kù)處于一致性狀態(tài)。

26.數(shù)據(jù)字典數(shù)據(jù)字典解析:在結(jié)構(gòu)化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為數(shù)據(jù)字典。

27.2002Shanxian2002Shanxian解析:本題中第一個(gè)if語(yǔ)句將結(jié)構(gòu)體變量a.name和結(jié)構(gòu)體變量b.name中較小的那個(gè)賦值給結(jié)構(gòu)體變量d,第二個(gè)if語(yǔ)句將結(jié)構(gòu)體變量c.name和結(jié)構(gòu)體變量d.name較大的那個(gè)賦給結(jié)構(gòu)體變量d。通過(guò)函數(shù)strcmp比較。strcmp()函數(shù)有兩個(gè)參數(shù),分別為被比較的兩個(gè)字符串。如果第一個(gè)字符串大于第二個(gè)字符串返回值大于0,若第一個(gè)小于第二個(gè)返回值小于0,相等時(shí)返回值為0。字符串比較大小的標(biāo)準(zhǔn)是從第一個(gè)字符開(kāi)始依次向右比較,遇到某一個(gè)字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個(gè)字符小,該字符所在的字符串就是較小的字符串。本程序中第一個(gè)if語(yǔ)句strcmp(a.name,b.name)>0為真,故將b的值賦給d,第二個(gè)if語(yǔ)句strcmp(c.name,d.name)>0為假,故不執(zhí)行后面的語(yǔ)句,最后d的值為b的值,因此d.sno和p->name的值為2002Shangxian。

28.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳過(guò)對(duì)應(yīng)的輸入數(shù)據(jù),所以第二個(gè)輸入數(shù)200被跳過(guò)去了,只有100,300,400三個(gè)數(shù)被從鍵盤輸入了進(jìn)來(lái)。

29.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個(gè)程序的開(kāi)頭部分,給出程序的整體說(shuō)明;功能性注釋一般嵌在源程序體之中,主要描述其后的語(yǔ)句或程序做什么,

30.結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)解析:與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是結(jié)構(gòu)化設(shè)計(jì)方法。結(jié)構(gòu)化設(shè)計(jì)就是采用最佳的可能方法設(shè)計(jì)系統(tǒng)的各個(gè)組成部分以及各個(gè)成分之間的內(nèi)部聯(lián)系的技術(shù)。

31.11解析:本題是一個(gè)陷阱題。在if語(yǔ)句的判斷表達(dá)式中,使用的不是邏輯運(yùn)算符==而是賦值運(yùn)算符=,使該表達(dá)式返回的結(jié)果正好相反。如果是c==a,則結(jié)果為假。但是c=a則是將a賦給c,且表達(dá)式的結(jié)果是賦值之后的c的值,因此結(jié)果為1是真.故最后輸出c的值1。

32.00解析:對(duì)于一個(gè)unsignedshort來(lái)說(shuō),它能取的最大值是65535。這里給a賦值65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實(shí)際為0。

33.-1-1解析:strcmp(s1,s2)函數(shù)的作用是:對(duì)字符數(shù)組s2和字符數(shù)組s1進(jìn)行比較。如果s1<s2,則返回負(fù)數(shù);如果s1==s2,則返回0;如果s1>s2,則返回正數(shù)。

34.123056009123\r\n056\r\n009解析:本題中,定義了一個(gè)元素類型為整型的二維數(shù)組a[][3]={1,2,3,4,5,6,7,8,9},它是一個(gè)3*3的矩陣,“for(i=0;i<3;i++)for(j=i=1;j<3;j++)a[j][i]=0;”將列下標(biāo)i小于行下標(biāo)j的元素a[1][0]、a[2][0]、a[2][1]賦值為0,最后“for(j=0;j<3;j++)printf('%n',a[i][j]);printf('\\n');”進(jìn)行換行輸出,所以輸出結(jié)果為:

123

056

009

35.for(i=1;i<=x;i+=2)*n=jfor(i=1;i<=x;i+=2)*n=j解析:本題題干信息是求能整除x且不是偶數(shù)的所有正整數(shù)。循環(huán)語(yǔ)句中i從1開(kāi)始且每次增2,所以i始終是奇數(shù),語(yǔ)句,n=j;是記錄符合題意的整數(shù)的個(gè)數(shù)。

36.21

37.隊(duì)列隊(duì)列解析:隊(duì)列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊(duì)尾”,刪除元素的一端叫做“隊(duì)頭”,先插入的元素先被刪除,是按先進(jìn)先出的原則組織數(shù)據(jù)的。

38.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中寫數(shù)據(jù),并且該文件是新文件,應(yīng)當(dāng)使用文件打開(kāi)方式'w',文件操作結(jié)束時(shí)要用函數(shù)fclose關(guān)閉文件,以防數(shù)據(jù)丟失。

39.structlist*nextstructlist*next解析:定義的指針類型變量next也應(yīng)該是結(jié)構(gòu)體類型的。

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

41.D解析:本題考查如何引用數(shù)組元素的地址。

選項(xiàng)A)中,p+5引用的是a[5]的地址,而數(shù)組a只有5個(gè)元素,即a[0]、a[1],a[2]、a[3]、a[4],所以引用錯(cuò)誤;選項(xiàng)B)中,*a+1指的是將數(shù)組a的第一個(gè)元素加1;選項(xiàng)C)中,這種引用方式錯(cuò)誤;選項(xiàng)D)中,&a[0]引用的是數(shù)組的首地址。

42.B解析:在if語(yǔ)句中又包含—個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套。應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系,在C語(yǔ)言中,從最內(nèi)層開(kāi)始,else總是與它上面最近的(未曾配對(duì)的)if配對(duì)。

43.B解析:主函數(shù)中先定義了一個(gè)整型變量a,一個(gè)字符變量c并賦初值10,一個(gè)浮點(diǎn)型變量f并賦初值100.00和一個(gè)double型x,接著執(zhí)行“a=f/=C*=x=6.5)”,該語(yǔ)句從右向左計(jì)算,先把6.5賦值給x(該括號(hào)表達(dá)式的值也為6.5),此時(shí)x的值的變?yōu)?.5,然后執(zhí)行“c*=(x=6.5)”相當(dāng)于執(zhí)行“c=c*(x=6.5)”,此時(shí)c的值為65,接著向左執(zhí)行“f/c*=(x=6.5)”,語(yǔ)句相當(dāng)于執(zhí)行“f=f/c”接著向最右邊執(zhí)行“a=f”,由于a是整型變量,所以a最后去f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值分別為1、65、1.5、6.5。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

44.D解析:根據(jù)優(yōu)先級(jí)順序,先計(jì)算內(nèi)層括號(hào)的值。j自加1等于3,所以++j==3成立,表達(dá)式為1,由于1“|”任何數(shù)都為1,所以不用計(jì)算“||”后面的表達(dá)式,所以k=3,最后計(jì)算“&&”之前的表達(dá)式,i先進(jìn)行判斷再自加1,所以i++==1成立,自加1后i=2。if語(yǔ)句的條件為“1”,所以輸出i、j、k的值分別是2,3,3。

45.D解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示準(zhǔn)備輸出的數(shù)據(jù)塊的起始地址,size表示每個(gè)數(shù)據(jù)塊的字節(jié)數(shù),count用來(lái)指定每寫一次或輸出的數(shù)據(jù)塊,fp為文件指針。

46.D解析:選項(xiàng)D)為兩條語(yǔ)句。

47.C解析:選項(xiàng)A中定義了一個(gè)字符型數(shù)組并賦初值,故選項(xiàng)A正確;選項(xiàng)B定義了一個(gè)字符型數(shù)組t并初始化,然后定義了一個(gè)指針變量s并讓它指向t,故選項(xiàng)B正確;選項(xiàng)C先定義?一個(gè)長(zhǎng)度為10的字符型數(shù)組,然后在給它賦值,這時(shí)應(yīng)該分別給數(shù)組中的每個(gè)元素賦值,故選項(xiàng)C不正確;選項(xiàng)D中先定義了一個(gè)長(zhǎng)度為10的字符型數(shù)組s,然后通過(guò)字符串拷貝函數(shù)將字符串“abedefs”賦值給它,選項(xiàng)D正確。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

48.A

49.A解析:因?yàn)樵趙hile循環(huán)的循環(huán)條件中,一運(yùn)算符是前綴形式,所以表達(dá)式—k的值是k自減之后的值。程序開(kāi)始時(shí),將k的值初始化為5,然后進(jìn)入while循環(huán),因?yàn)椤猭的值為4(非零),所以執(zhí)行循環(huán)體輸出k-=3的值1,此時(shí)k的值也變?yōu)?。第2次執(zhí)行循環(huán)條件,—k的值為0,所以循環(huán)結(jié)束。因此最后輸出的結(jié)果是1,故應(yīng)該選擇A。

50.D解析:/、++和!=的操作數(shù)既可能是整型,又可能是實(shí)型。而%的操作數(shù)只能是整型。

51.D解析:本題for后小括號(hào)中的表達(dá)式為空仍能執(zhí)行循環(huán)體,當(dāng)條件i>j滿足時(shí),退出循環(huán)。執(zhí)行“i+=k;”使i的值每次循環(huán)增加2,直到i>j。i的值分別為2、4、6、8、10、12,當(dāng)i=12時(shí),i>j成立,執(zhí)行if語(yǔ)句的子句,輸出s的值并退出循環(huán)。判斷i>j共執(zhí)行的次數(shù)是6次。

52.C解析:在C語(yǔ)言中,以“\\”開(kāi)頭的字符均為轉(zhuǎn)義字符,其中“\\”后可跟1~3位八進(jìn)制數(shù)或在“\\”后跟字母x及1~2位十六進(jìn)制數(shù),以此來(lái)代表一個(gè)特定的字符。

53.D解析:本題的功能是求出輸入序列的最大值和最小值,并打印輸出。

54.D解析:本題考查while和do…while循環(huán)的區(qū)別。while循環(huán)的控制出現(xiàn)在循環(huán)體之前,只有當(dāng)while后面的表達(dá)式的值為非零時(shí),才可能執(zhí)行循環(huán)體:在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值,因此無(wú)論表達(dá)式的值是否為零,循環(huán)體至少要被執(zhí)行一次。

55.B解析:選項(xiàng)A和C一望而知其錯(cuò);對(duì)于表達(dá)式a=a+7=c+b(答案D),是先執(zhí)行賦值表達(dá)式a+7=c+b,再把這個(gè)表達(dá)式的值賦給a,顯然,表達(dá)式a+7=c+b非法,因?yàn)橘x值表達(dá)式的左側(cè)不能為常量或表達(dá)式。

56.B

57.A

58.D解析:if...else語(yǔ)句的執(zhí)行過(guò)程如下,首先計(jì)算if后面一對(duì)圓括號(hào)內(nèi)表達(dá)式的值,若表達(dá)式的值為非0,執(zhí)行if子句,然后跳過(guò)else子句,去執(zhí)行if語(yǔ)句后的下一條語(yǔ)句;若表達(dá)式的值為0,跳過(guò)if子句,去執(zhí)行else子句,接著去執(zhí)行if語(yǔ)句后的下一條語(yǔ)句。C語(yǔ)言的語(yǔ)法規(guī)定,else子句總是與前面最近的不帶else的if匹配,與書寫格式無(wú)關(guān),本題目的后一個(gè)ifelse相當(dāng)于嵌套在第一個(gè)if子句里,相當(dāng)于x<y&&y<0時(shí),z=0;當(dāng)x<y&&y>=0時(shí),z=z+1。

59.D解析:在主函數(shù)中首先定義了一個(gè)數(shù)組p并初始化,在while后面括號(hào)里的表達(dá)式中,i初值為0,當(dāng)p[i]為偶數(shù)時(shí),p[i]%2等于0;當(dāng)i=2時(shí),p[i]=14為偶數(shù),此時(shí)while后面括號(hào)里的表達(dá)式的值為假,退出循環(huán),此時(shí)k=p[0]+p[1],即k=11+13。所以最后輸出k為24。

60.B

61.D

62.A軟件危機(jī)主要表現(xiàn)在:軟件需求的增長(zhǎng)得不到滿足;軟件開(kāi)發(fā)成本和進(jìn)度無(wú)法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件的成本不斷提高;軟件開(kāi)發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長(zhǎng)。所以選擇A。

63.Atypede偽原類型起個(gè)別名,并沒(méi)有增加新的類型,所以答案選擇A)。

64.A

65.A數(shù)組說(shuō)明的一般形式為:類型說(shuō)明符

數(shù)組名[常量表達(dá)式]。B選項(xiàng)中N是變量,不能用變量定義數(shù)組長(zhǎng)度。c選項(xiàng)中數(shù)組長(zhǎng)度是非法的一串?dāng)?shù)字。定義數(shù)組時(shí)必須為其指明長(zhǎng)度,D選項(xiàng)中數(shù)組長(zhǎng)度為空,所以非法。

66.C

67.B主函數(shù)中首先定義了一個(gè)3行2列的數(shù)組a,初始時(shí)各元素的值為0。定義了一個(gè)指向數(shù)組的指針ptr[2],并用該指針指向數(shù)組a,因?yàn)樵撝羔槥橹赶蛴?個(gè)元素的數(shù)組的指針,故只能指向數(shù)組a的前2行,雖然在第一個(gè)for語(yǔ)句中有語(yǔ)句ptr=a+2,指向數(shù)組a的第3行,并對(duì)該指針?biāo)傅臄?shù)組賦值,實(shí)際上這條語(yǔ)句是無(wú)效的,超過(guò)了指針ptr的定義范圍。對(duì)指針輸入1,2,3時(shí),只有1和2有效,通過(guò)指針ptr只能更改數(shù)組的前2行元素的數(shù)據(jù)。ptr=a指向a[0],即第1行的起始地址。ptr=a+1指向a[1],即第2行的起始地址。

后面的2個(gè)for循環(huán)是將數(shù)組a進(jìn)行輸出,最后結(jié)果為

10

20

00

68.A

69.B本題考查兩個(gè)位運(yùn)算符。按位異或運(yùn)算

70.C

71.A解析:在C語(yǔ)言中,應(yīng)當(dāng)在定義函數(shù)時(shí)指定函數(shù)值的類型。凡不加類型說(shuō)明的函數(shù),默認(rèn)按整型處理。在定義函數(shù)時(shí)對(duì)函數(shù)值說(shuō)明的類型一般應(yīng)該和return語(yǔ)句中的表達(dá)式類型一致。如果函數(shù)值的類型和return語(yǔ)句中的表達(dá)式類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換,即函數(shù)類型決定返回值的類型。

72.D

73.A語(yǔ)句必須以分號(hào)結(jié)束,所以A)正確,c語(yǔ)言中書寫格式自由,所以B)、C)、D)錯(cuò)誤

74.B本題實(shí)際上是按成員變量Score的值進(jìn)行由小到大的排序,程序執(zhí)行后,數(shù)組p[5]中各元素分別為:

{{'Penghua',20045,537},

{'SunDan',20044,550},

{'LiSiGuo',20042,580},

{'WangYin',20043,680},

{'YangSan',20041,703}}

所以,p[1]->Score=550,s[1].Score=580。故本題答案為B。

75.C

76.C

77.C解析:本題考查“邏輯或”運(yùn)算的特例。本題中if語(yǔ)句的條件表達(dá)式為(j++||k++)&&i++,首先計(jì)算表達(dá)式(j++||k++)的值,++運(yùn)算符位于右側(cè),因此先取j、k當(dāng)前值進(jìn)行運(yùn)算,因j=1,所以表達(dá)式(j++||k++)的值為真,k++表達(dá)式不再執(zhí)行,故執(zhí)行完表達(dá)式(j++||k++)&&i++后,j=2、k=2、i=2。

78.C→的運(yùn)算優(yōu)先級(jí)比++高,此時(shí),pt→x=10,執(zhí)行自加運(yùn)算后為11。

79.C本題主要考查結(jié)構(gòu)體所占存儲(chǔ)單元的計(jì)算。在C語(yǔ)言中,函數(shù)sizeof的作用是用以計(jì)算變量所處存儲(chǔ)單元的大小,即占的字節(jié)數(shù)。

在本題中,程序首先定義了一個(gè)結(jié)構(gòu)體,該結(jié)構(gòu)體包含三個(gè)成員變量,分別為整型、浮點(diǎn)型和字符型。在C語(yǔ)言中,這三種類型的變量所占的字節(jié)數(shù)分別為2、4、1,然后定義一個(gè)該結(jié)構(gòu)體的結(jié)構(gòu)體變量,并輸出該結(jié)構(gòu)體變量所占的字節(jié)數(shù)。那么結(jié)果應(yīng)為2+4+1=7,因此本題正確的答案為C。

80.A

\n本題考查switch語(yǔ)句。當(dāng)i一1時(shí),執(zhí)行case1,因?yàn)闆](méi)有遇到break語(yǔ)句,所以依次往下運(yùn)行,“a=a+2=2,a=a+3=5”;當(dāng)i=2時(shí),執(zhí)行case2,因?yàn)闆](méi)有遇到break語(yǔ)句,所以依次往下執(zhí)行,“a=a+2=7,a=a+3=10”;當(dāng)i=3時(shí),執(zhí)行case3,a=a+1=11,因?yàn)闆](méi)有遇到break語(yǔ)句,所以依次往下運(yùn)行,a—a+2—13,a—a+3一l6:當(dāng)i=4時(shí),執(zhí)行default,a=a+3=19,結(jié)束循環(huán)。

81.(1)錯(cuò)誤:switch(g);

\n正確:switch(g)

\n(2)錯(cuò)誤:casel:case2:returnl;

\n正確:casel;case2:returnl;

\n【解析】此題考查C語(yǔ)言的語(yǔ)法規(guī)則,switch(表達(dá)式)后不應(yīng)該帶有“;”,case語(yǔ)句常量后應(yīng)該是“:”。

\nswitch語(yǔ)句的一般形式如下:

\nswitch(表達(dá)式){

\ncase常量表達(dá)式1:語(yǔ)句1;

\ncase常量表達(dá)式2:語(yǔ)句2;

\ncase常量表達(dá)式n:語(yǔ)句i;

\ndefault:語(yǔ)句n+1;

\n}

\n

82.

【解析】要求出數(shù)組周邊元素的平方和,首先要找到二維數(shù)組所有的周邊元素。二維數(shù)組的周邊元素的特點(diǎn)為行下標(biāo)或列下標(biāo)為0或M一1。根據(jù)這個(gè)特點(diǎn),找出二維數(shù)組中所有的周邊元素,求出其平方和放在變量s中。最后將變量s返回到主函數(shù)中。

2021年四川省眉山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下敘述中錯(cuò)誤的是______。A.C程序必須由—個(gè)或—個(gè)以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為—個(gè)獨(dú)立的語(yǔ)句存在

C.若函數(shù)有返回值,必須通過(guò)return語(yǔ)句返回

D.函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參

2.有以下程序:voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main{char*s1="abe",*s2="123":swap(s1,s2);printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結(jié)果是()。A.123,abeB.abc.123C.1bc,a23D.321,cba

3.下列程序的輸出結(jié)果是()。main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}

A.22B.76C.72D.62

4.結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括A.順序結(jié)構(gòu)B.GOTO跳轉(zhuǎn)C.選擇(分支)結(jié)構(gòu)D.重復(fù)(循環(huán))結(jié)構(gòu)

5.線性表的順序存儲(chǔ)結(jié)構(gòu)是一種()。

A.隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)B.順序存取的存儲(chǔ)結(jié)構(gòu)C.索引存取的存儲(chǔ)結(jié)構(gòu)D.Hash存取的存儲(chǔ)結(jié)構(gòu)

6.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。

A.隨機(jī)值B.0C.5D.6

7.數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段中,()沒(méi)有專門的軟件對(duì)數(shù)據(jù)進(jìn)行管理。

I.人工管理階段

II.文件系統(tǒng)階段

Ⅲ.?dāng)?shù)據(jù)庫(kù)階段A.A.僅IB.僅ⅢC.I和IID.II和Ⅲ

8.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))

B.每個(gè)函數(shù)都可以被單獨(dú)編譯

C.每個(gè)函數(shù)都可以單獨(dú)運(yùn)行

D.在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)

9.下面哪種排序的平均比較次數(shù)最少()

A.插入排序B.選擇排序C.堆排序D.快速排序

10.有以下程序:#include<stdio.h>main(){chars[]="012xy\O8s34f4w2‘;inti;n=0;,for(i=0;s[i]!=0;i++)if(s[i]>=0s[i]<=9)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.3C.7D.8

11.順序結(jié)構(gòu)的本質(zhì)特點(diǎn)是()。

A.數(shù)據(jù)元素存儲(chǔ)在地址連續(xù)的內(nèi)存空間

B.數(shù)據(jù)元素緊鄰

C.數(shù)據(jù)元素在內(nèi)存中的相對(duì)位置表示數(shù)據(jù)之間的邏輯關(guān)系

D.不使用指針

12.有以下程序main(intargc,char*argv[]){intn=0,i;for(i=1;i<argc;i++)n=n*10+*argv[i]'0';printf("%d\n",n);}編譯連接后生成可執(zhí)行文件tt.exe。若運(yùn)行時(shí)輸入以下命令行tt12345678程序運(yùn)行后的輸出結(jié)果是A.12B.12345C.12345678D.136

13.若有序表的關(guān)鍵字序列為(b,c,d,e,f,g,q,r,s,t),則在二分查找關(guān)鍵字b的過(guò)程中,先后進(jìn)行的關(guān)鍵字依次為()

A.f,c,BB.f,d,BC.g,c,BD.g,d,B

14.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊(duì)列SQ的存儲(chǔ)空間,f為隊(duì)頭指示,r為隊(duì)尾指示,則執(zhí)行出隊(duì)操作的語(yǔ)句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)

15.設(shè)有定義“intm=1,n=2;”,則以下if語(yǔ)句中,編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤信息的是()。

A.if(m>n)m--elsen--;

B.if(m=n){m++;n++;}

C.if(m<0&&n<0){}

D.if(m>0);elsem++;

16.二叉樹(shù)的第三層最少有________個(gè)結(jié)點(diǎn)。

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

17.設(shè)有條件表達(dá)式:(EXP)?i++:j--,則以下表達(dá)式中與(E)(P)完全等價(jià)的是A.(EXP==0)B.(EXP!=0)C.(EXP=-1)D.(EXP!=1)

18.

19.下列一維數(shù)組初始化語(yǔ)句中,正確且與語(yǔ)句floata[]={0,3,8,0,9};等價(jià)的是().

A.floata[6]={0,3,8,0,9};

B.floata[4]={0,3,8,0,9};

C.floata[7]={0,3,8,0,9};

D.floata[5]={0,3,8,0,9};

20.以下說(shuō)法錯(cuò)誤的是()。

A.C語(yǔ)言中的常量是指在程序運(yùn)行過(guò)程中經(jīng)常被用到的變量

B.C語(yǔ)言中的常量是指在程序運(yùn)行過(guò)程中其值不能被改變的量

C.C語(yǔ)言中的常量可以用一個(gè)符號(hào)名來(lái)代表

D.C語(yǔ)言中的常量可以用宏來(lái)定義

二、2.填空題(20題)21.當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入abcdabcdef<CR>

cde<CR>

(<CR>表示回車),則下面程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

main()

{inta;chars[80],t[80];

gets(s);gets(t);

a=fun(s,t);

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

fun(char*p,char*q)

{inti;

char*p1=p;

char*q1;

for(i=0;*p!='\0';p++,i++)

{p=p1+i;

if(*p!=*q)continue;

for(q1=q+1,p=p+1;*p!='\0'&&*q1!='\0';q1++,p++)

if(*p!=*q1)break;

if(*q1=='\0')returni;}

return(-1);}

22.執(zhí)行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

23.以下程序的功能是進(jìn)行位運(yùn)算main(){unsignedchara,b;a=7^3;b=~4&3;pfintf("%d%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是

24.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對(duì)其中的圖形元素進(jìn)行確切解釋。

25.數(shù)據(jù)庫(kù)恢復(fù)是將數(shù)據(jù)庫(kù)從______狀態(tài)恢復(fù)到某一已知的正確狀態(tài)。

26.在結(jié)構(gòu)化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為【】。

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

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

28.在scanf()函數(shù)調(diào)用語(yǔ)句中,可以在格式字符和%號(hào)之間加上一個(gè)星號(hào),它的作用是跳過(guò)對(duì)應(yīng)的輸入數(shù)據(jù);當(dāng)輸入以下數(shù)據(jù)時(shí),100200300400500<回車>,下面語(yǔ)句的執(zhí)行結(jié)果為【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

printf("%d%d%d",a,b,c);}

29.注釋一般分為序言性注釋和______注釋。

30.與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是【】方法。

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

main()

{inta=1,b=2,c=3;

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

main()

{unsignedshorta=65536;intb;

printf("%d\n",b=A);

}

33.若有說(shuō)明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9);

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

35.以下程序中函數(shù)fun的功能是求出能整除x且不是偶數(shù)的務(wù)正整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過(guò)形參n返回。

例如,若x中的值為30,則有4個(gè)數(shù)符合要求,它們是1,3,5,15。

請(qǐng)按題意,完成填空。

試題程序:

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{inti,j=0;

【】;

if(x%i==0)pp[j++]=i;

【】;

}

main()

{intx,aa[1000],n,i;

printf("\nPleaseenteranintegernumber:\n");

scanf("%d",&x);

fun(x,aa,&n);

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

printf("\n");

}

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

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

37.按照“先進(jìn)先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

38.下面程序把從終端讀入的文本(用#作為文本結(jié)束標(biāo)志)復(fù)制到一個(gè)名為file.txt的新文件中。補(bǔ)足所缺語(yǔ)句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

39.為建立如下圖所示的存儲(chǔ)結(jié)構(gòu)(即每個(gè)結(jié)點(diǎn)兩個(gè)域,p是指向結(jié)點(diǎn)的指針域,data用以存放整型數(shù)),請(qǐng)將定義補(bǔ)充完整。

pdata

a

structlist

{【】;intdata;}a;

40.若fp已正確定義為一個(gè)文件指針,d1.dat為二進(jìn)制文件,請(qǐng)?zhí)羁眨员銥椤白x”而打開(kāi)此文件:

fp=fopen(【】);。

三、1.選擇題(20題)41.若有下列定義,則對(duì)a數(shù)組元素地址的正確引用是()。inta[5],*p=a;

A.p+5B.a+1C.&a+1D.&a[0]

42.為了避免嵌套的if-else的二義性,C語(yǔ)言規(guī)定:else與______配對(duì)。

A.縮排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if

43.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.lf%3.lf\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

44.有以下程序

main()

{inti=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

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

}

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

A.123

B.234

C.223

D.233

45.fwrite函數(shù)的一般調(diào)用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

46.以下4個(gè)選項(xiàng)中,不能看成一條語(yǔ)句的是

A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;

47.以下程序段中,不能正確賦字符串(編譯時(shí)系統(tǒng)會(huì)提示錯(cuò)誤)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

48.請(qǐng)閱讀以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;}case2:a++,b++;break;}printf("a=%d,b=%d\n",a,b);上面程序的輸出結(jié)果是

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

49.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

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

A.1B.2C.4D.死循環(huán)

50.在C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是()。

A./B.++C.!=D.%

51.在下述程序中,判斷i>j共執(zhí)行的次數(shù)是()。main(){inti=O,j=10,k=2,s=0;for(;;){i+=k;if(i>j){ptintf("%d",s);break;}s+=i;}}

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

52.下面語(yǔ)句的輸出結(jié)果是______。printf("%d\n",strlen("\t\"065\xff\n"));

A.14B.8C.5D.輸出項(xiàng)不合法,無(wú)正常輸出

53.閱讀如下程序段#include"stdio.h"main(){intx,a,b;scanf("%d",&x);a=b=x;for(;x!=0;){if(x<b)b=x;if(x>a)a=x;scanf("%d",&x);}printf("a=%d,b=%d\n",a,b);}

輸入后輸出結(jié)果是

A.a=7569,b=789B.a=5,b=365C.a=7,b=789D.a=7569,b=5

54.在C語(yǔ)言中,while和do…while循環(huán)的主要區(qū)別是()。

A.do…while的循環(huán)體不能是復(fù)合語(yǔ)句

B.do…while允許從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)

C.while的循環(huán)體至少被執(zhí)行一次

D.do…while的循環(huán)體至少被執(zhí)行一次

55.若變量已正確定義并賦值,下面符合C語(yǔ)言的表達(dá)式是_____。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

56.執(zhí)行下面程序片段的結(jié)果是()intx=123;do{printf("%3d\n",x--);}while(!x);

A.打印出321B.打印出123C.不打印任何內(nèi)容D.陷入死循環(huán)

57.請(qǐng)選出以下程序段的輸出結(jié)果______。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%d\n",k);}

A.15B.100C.10D.150

58.下列程序的運(yùn)行結(jié)果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}

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

59.有以下程序:main(){intp[7]={11,13,14,15,16,17,18);i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執(zhí)行后輸出結(jié)果是()。

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

60.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing":pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開(kāi)頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

四、選擇題(20題)61.

62.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()A.軟件過(guò)程不規(guī)范B.軟件開(kāi)發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

63.以下敘述中錯(cuò)誤的是()。A.可以通過(guò)typedef增加新的類型

B.可以用typedef將已存在的類型用一個(gè)新的名字來(lái)代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedd可以為各種類型起別名,但不能為變量起別名

64.

65.下列定義數(shù)組的語(yǔ)句中,正確的是()。

66.在C程序中有如下語(yǔ)句:char*func(intx,inty);它是()。

A.對(duì)函數(shù)func的定義。B.對(duì)函數(shù)func的調(diào)用。C.對(duì)函數(shù)func的原型說(shuō)明。D.不合法的

67.有以下程序

main()

{inta[3][2]={0},(*ptr)[2],i,j;

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

{ptr=a+i;scanf("%d",ptr);ptr++;}

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

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

printf("\n");

}

}

若運(yùn)行時(shí)輸入123<回車>,則輸出結(jié)果為

68.

69.沒(méi)有以下語(yǔ)句

則Z的二進(jìn)制值是()。

A.00010100B.00011011C.00011100D.00011000

70.設(shè)整型變量n的值為2,執(zhí)行語(yǔ)句“n+=n-=n*n;”后,n的值是__________

A.0B.4C.-4D.2

71.在C語(yǔ)言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時(shí)在函數(shù)首部所說(shuō)明的函數(shù)類型

B.return語(yǔ)句中表達(dá)式值的類型

C.調(diào)用函數(shù)時(shí)主調(diào)函數(shù)所傳遞的實(shí)參類型

D.函數(shù)定義時(shí)形參的類型

72.

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

A.簡(jiǎn)單c語(yǔ)句必須以分號(hào)結(jié)束

B.C程序中的每—行只能寫—條i{}句

C.c語(yǔ)言程序中的注釋必須與語(yǔ)句寫在同一行

D.C語(yǔ)句必須在一行內(nèi)寫完

74.有以下程序

structSTU

{

charname[10];

intnum;

intScore;

};

main()

{

structSTUs[5]={{"YangSan",20041,703},

{"LiSiGuo",20042,580},

{"WangYin",20043,680},

{"SunDan",20044,550},

{"Penghua",20045,537}},*p[5],*t;

inti,j;

for(i=0;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論