2021-2022年吉林省白山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2021-2022年吉林省白山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2021-2022年吉林省白山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2021-2022年吉林省白山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2021-2022年吉林省白山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(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-2022年吉林省白山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲(chǔ)空間

B.可隨機(jī)訪問任意元素

C.插入、刪除不需要移動(dòng)元素

D.所需空間與線性表長(zhǎng)度成正比

2.若已定義:“inta[9],*p=a;”,并在以后的語(yǔ)句中未改變p的值,不能表示a[1]地址的表達(dá)式是______。

A.p+1B.a+1C.a++D.++p

3.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

4.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(“d.dat”,“w+b”);for(i=0;i<6;i++)fwrite(&a[i],sizeof(int),1,fp);rewind(fp);fread(&a[3],sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,a[i]);}程序運(yùn)行后的輸出結(jié)果是()。

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

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

6.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

7.在具有101個(gè)元素的順序表中查找值為x的元素結(jié)點(diǎn)時(shí),平均比較元素的次數(shù)為()。

A.50B.51C.100D.101

8.當(dāng)c的值不為0時(shí),在下列選項(xiàng)中不能正確將c的值賦給變量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

9.有以下程序

include<stdio.h>

main()

{chara[30],b[30];

scanf(“%s”,a);

gets(b);

printf(“%s\n%s\n”,a,b);

}

程序運(yùn)行時(shí)若輸入:

howareyou?Iamfine<回車>

則輸出結(jié)果是A.howareyou?Iamfine

B.howareyou?1amfine

C.howareyou?Iamfine

D.howareyou?

10.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

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

A.28

B.27

C.42

D.41

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

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

12.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序運(yùn)行后的輸出結(jié)果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1

13.A.A.75310246B.01234567C.76310462D.13570246

14.下列程序的輸出結(jié)果是()。char*point(char*pt):main{charb[4]={a,c,s,f),*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}A.sB.cC.fD.a

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

16.下列敘述中錯(cuò)誤的是()。A.在程序中凡是以“#”開始的語(yǔ)句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號(hào)表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過(guò)程中進(jìn)行的

17.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執(zhí)行后的輸出結(jié)果是A.A.45B.20C.25D.36

18.若有定義"int(*pt)[3];",則下列說(shuō)法正確的是()。

A.定義了基類型為int的三個(gè)指針變量

B.定義了基類型為int的具有三個(gè)元素的指針數(shù)組pt

C.定義了一個(gè)名為*pt、具有三個(gè)元素的整型數(shù)組

D.定義了一個(gè)名為pt的指針變量,它可以指向每行有三個(gè)整數(shù)元素的二維數(shù)組

19.

20.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請(qǐng)輸人2個(gè)數(shù):");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是()。A.定義語(yǔ)句出錯(cuò),case是關(guān)鍵字,不能用做用戶自定義標(biāo)識(shí)符

B.定義語(yǔ)句出錯(cuò),printF不能用做用戶自定義標(biāo)識(shí)符

C.定義語(yǔ)句無(wú)錯(cuò),scanf不能作為輸入函數(shù)使用

D.定義語(yǔ)句無(wú)錯(cuò),printf不能輸出case的值

二、2.填空題(20題)21.當(dāng)運(yùn)行以下程序時(shí),輸入abcd,程序的輸出結(jié)果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

22.算法的執(zhí)行過(guò)程中,所需要的存儲(chǔ)空間稱為算法的【】。

23.以下程序中,主函數(shù)調(diào)用了LineMax函數(shù),實(shí)現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值。

請(qǐng)?zhí)羁铡?/p>

#defineN3

#defineM4

voidLineMax(intx[N][M])

{inti,j,P;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j])【】;

printf("Themaxvalueinline%dis%d\n",i,【】);

}

main()

{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【】;

}

24.設(shè)變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為【】。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

26.設(shè)有以下程序:

main()

{inti,sum=0;

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

{if((i%2)==0)

continue;

sum+=i;}

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

}

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

27.某二叉樹中度為2的結(jié)點(diǎn)有n個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。

28.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

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

}

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

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

30.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

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

}

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

31.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使相同的數(shù)只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)fun返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

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

}

32.已知head指向一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,鏈表中每個(gè)結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域?yàn)檎汀R韵潞瘮?shù)求出鏈表中所有鏈結(jié)點(diǎn)數(shù)據(jù)域的和值,作為函數(shù)值返回。請(qǐng)?jiān)谙聞澗€內(nèi)填入正確內(nèi)容。

{intdata;structlink*next;}

main()

{structlink*head;

sum(head);

┆}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

33.單獨(dú)測(cè)試一個(gè)模塊時(shí),有時(shí)需要一個(gè)【】程序驅(qū)動(dòng)被測(cè)試的模塊。

34.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。

35.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請(qǐng)?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

36.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出,請(qǐng)?zhí)羁铡?/p>

#inelude<stdio.h>

main()

{eharb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");

seanf("%ld",&n);

do{c[i]=【】;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

for(--i;i>=0;--i)

{d=c[i];printf("%c",b【】);}

printf("\n");

}

37.在C語(yǔ)言中,字符的比較就是對(duì)它們的【】碼進(jìn)行比較。

38.軟件生命周期包括2今階段。為了使各時(shí)期的任務(wù)更明確,又可分為3個(gè)時(shí)期:軟件定義期、軟件開發(fā)期、軟件維護(hù)期。編碼和測(cè)試屬于【】期。

39.數(shù)據(jù)流的類型有______和事務(wù)型。

40.在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);}

三、1.選擇題(20題)41.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其輸出結(jié)果為______。

A.10B.5C.6D.編譯錯(cuò)誤

42.設(shè)R是一個(gè)二元關(guān)系,S是一個(gè)三元關(guān)系,則下列運(yùn)算中正確的是()。

A.R-SB.R×SC.R∩SD.R∪S

43.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后輸出結(jié)果是

A.70B.7C.11D.430

44.有以下程序int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b:8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}執(zhí)行后輸出結(jié)果是

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

45.設(shè)x、y\z和k都是int型變量,執(zhí)行表達(dá)式x=(y=4,z=16,k=32)后,x的值為______。

A.4B.16C.32D.52

46.在結(jié)構(gòu)化方法中,軟件功能分解屬于軟件開發(fā)中的______階段。

A.詳細(xì)設(shè)計(jì)B.需求分析C.總體設(shè)計(jì)D.編程調(diào)試

47.若變量已正確定義,有以下程序段

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(c!=a)c=b;

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

其輸出結(jié)果是

A.程序段有語(yǔ)法錯(cuò)B.3,5,3C.3,5,5D.3,5,7

48.能夠?qū)τ?jì)算機(jī)的硬件設(shè)備進(jìn)行管理,并使應(yīng)用軟件能夠方便、高效地使用這些設(shè)備的是()

A.數(shù)據(jù)庫(kù)存系統(tǒng)B.操作系統(tǒng)C.編輯軟件D.應(yīng)用軟件

49.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。

A.5B.24C.32D.40

50.下列選項(xiàng)中,合法的C語(yǔ)言關(guān)鍵字是______。

A.VARB.cherC.integerD.default

51.下列程序的輸出結(jié)果為______。main(){intp,y=0,x=0;p=x<<8|~y>>8;printf("%d",p);p+=(p+=2);printf("%d\n",p);}

A.-10B.00C.04D.-12

52.以下程序的輸出結(jié)果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,21.12,42,22

53.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%s,%s\n",ss,aa);

}

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

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

54.若變量a,i已正確定義,且i已正確賦值,下面合法的語(yǔ)句是()。

A.a==1B.++i;C.a=a++=5;D.a=int(i);

55.下列程序的輸出結(jié)果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

56.下列說(shuō)法正確的是()。

A.在C程序中,main()函數(shù)必須位于程序的最前面

B.在C程序中,一條語(yǔ)句只能寫一行而不能寫多行

C.C程序是以行為基本單位的

D.C語(yǔ)言本身沒有輸入輸出語(yǔ)句

57.兩次運(yùn)行下列的程序,如果從鍵盤上分別輸入3和1,則輸出結(jié)果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

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

58.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=1;j<=();j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是()。

A.iB.2*-1C.2*i+1D.i+2

59.下列不屬于軟件工程的3個(gè)要素的是()。

A.32具B.過(guò)程C.方法D.環(huán)境

60.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}該程序的輸出結(jié)果是

A.987B.876C.8765D.9876

四、選擇題(20題)61.以下選項(xiàng)中能表示合法常量的是()。

A.1,200B.1.5E2.0C.”\”D.”\007”

62.

63.在軟件設(shè)計(jì)中不使用的工具是()。

A.系統(tǒng)結(jié)構(gòu)圖B.PAD圖C.數(shù)據(jù)流圖(DFD圖)D.程序流程圖

64.

65.以下程序的輸出結(jié)果為

main()

{

char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char**p;

inti;

p=alpha;

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

printf("%s",p[i]);

printf("\n");

}

A.ABCDEFGHIJKLB.ABCD

C.ABCDEFGHIJKLMNOPD.AEIM

66.下列與char*pa[3][5]={"a","bb","ccc"}等價(jià)的是()。

A.char(*pa)[][5]={"a","bb","ccc"}

B.char*pa[3][]={"a","bb","ccc"}

C.charpa[3][]={"a","bb","ccc"}

D.都不等價(jià)

67.以下與存儲(chǔ)類別有關(guān)的四組說(shuō)明符中,全部屬于靜態(tài)類的一組是()。

A.extem和static

B.auto和static

C.register和static

D.register和ex[erll

68.計(jì)算機(jī)能直接執(zhí)行的程序是()。

A.源程序B.目標(biāo)程序C.匯編程序D.可執(zhí)行程序

69.

70.

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

A.C程序中注釋部分只能放在程序最后

B.花括號(hào)“{“和”}”可以作為函數(shù)體的定界符,也可以作為復(fù)合語(yǔ)句的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號(hào)不是語(yǔ)句的一部分,是C語(yǔ)句之間的分隔符

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

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

73.

74.在“文件包含,預(yù)處理語(yǔ)句的使用形式中,當(dāng)#include后面的文件名用(雙引號(hào))括時(shí),尋找被包含文件的方式是()。

A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當(dāng)前目錄

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

A.10,l4B.8,11C.7,llD.9,l8

76.C語(yǔ)言源程序名的后綴是()。A.CB.exeC.obiD.ep

77.

78.下列定義變量的語(yǔ)句中錯(cuò)誤的是()。

A.intjnt;B.doubleint_;C.charFor;D.floatUS$;

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

A.棧是“先進(jìn)先出”的線性表

B.隊(duì)列是“先進(jìn)后出”的線性表

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

D.循環(huán)隊(duì)列中隊(duì)頭指針是固定不變的

80.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語(yǔ)句后,表達(dá)式“**c”的值是()。

A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)fun()的功能是按以下遞歸公式求函數(shù)值。例如,當(dāng)給n輸入3時(shí),函數(shù)值為60;當(dāng)給n輸入6時(shí),函數(shù)值為480。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),其功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換成與其面值相同的長(zhǎng)整型整數(shù)。可調(diào)用strlen函數(shù)求字符串的長(zhǎng)度。例如,在鍵盤輸入字符串2345210,函數(shù)返回長(zhǎng)整型整數(shù)2345210。注意:部分源程序存放在文件prog1.c中,請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語(yǔ)句。試題程序:

參考答案

1.B鏈表采用的是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),它的結(jié)點(diǎn)空間可以動(dòng)態(tài)申請(qǐng)和釋放;它的數(shù)據(jù)元素的邏輯次序靠結(jié)點(diǎn)的指針來(lái)指示,插入、刪除不需要移動(dòng)數(shù)據(jù)元素。但是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)也有不足之處:每個(gè)結(jié)點(diǎn)中的指針域需額外占用存儲(chǔ)空間,它是一種非隨機(jī)存儲(chǔ)結(jié)構(gòu)。

2.C

3.Cf函數(shù)的功能是對(duì)形參a的各個(gè)成員用結(jié)構(gòu)體變量b的各個(gè)成員進(jìn)行賦值后,然后返回變量a。

4.D程序首先以讀和寫二進(jìn)制文件的方式打開文件d.dat;然后通過(guò)for循環(huán),調(diào)用fwrite函數(shù)將數(shù)組a中的各個(gè)元素寫入d.dat中;接下來(lái)調(diào)用rewind函數(shù),將文件指針fp重定位到文件的開始位置;再調(diào)用fread函數(shù)將文件的前3個(gè)整數(shù)1,2,3讀入a[3]開始的位置,所以此時(shí)數(shù)組a中的元素值分別為:1,2,3,1,2,3。故本題答案為D選項(xiàng)。

5.C

6.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

7.B

8.C選項(xiàng)A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項(xiàng)中由于c的值不為0,在將c的值賦給變量a后,表達(dá)式a=c的值為1,不再對(duì)表達(dá)式b=c計(jì)算;對(duì)于c選項(xiàng),表達(dá)式a=c的值為1,再求表達(dá)式b=c的值為1,然后進(jìn)行邏輯與運(yùn)算;D選項(xiàng)將b的值賦給c后再賦給e,故選擇C選項(xiàng)。

9.B

10.C\n只有當(dāng)3個(gè)if條件同時(shí)成立,即能夠同時(shí)被2、3、7整除時(shí),才輸出i的值,而從0到50能夠同時(shí)被2、3、7整除的數(shù)只有42,故選擇c選鞏。

\n

11.C棧和隊(duì)列都是一種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種“后進(jìn)先出”的線性表;而隊(duì)列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種“先進(jìn)先出”的線性表:本題答案為C)。

12.C整型變量x、y的初值都為1,“x++,y++,++y”是一個(gè)逗號(hào)表達(dá)式,程序執(zhí)行“z=x++,y++,++y”之后,x的值為2,y的值為3,z取逗號(hào)表達(dá)式中的第二個(gè)表達(dá)式的值,為1。因此本題的答案為選項(xiàng)C。

13.A本題的考點(diǎn)是C語(yǔ)言的數(shù)組及其排序。本題的程序中分為2個(gè)循環(huán)體,第一個(gè)循環(huán)體將數(shù)組中1,3,5,7,2,4,6,0的前4個(gè)元素從大到小排序,這個(gè)循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,2,4,6,0。第二個(gè)循環(huán)體將數(shù)組中7,5,3,1,2,4,6,0從第5個(gè)開始的4個(gè)元素從小到大排序,這個(gè)循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,0,2,4,6。所以正確答案是選項(xiàng)A。

14.C本題考查函數(shù)的調(diào)用及參數(shù)傳遞,當(dāng)執(zhí)行函數(shù)point時(shí),剛開始指針P指向“a”,經(jīng)過(guò)+3,指針p指向“f”,所以最后的輸出結(jié)果是f。

15.A函數(shù)的功能是對(duì)數(shù)組某一區(qū)域內(nèi)的元素隔個(gè)求和;a[3]=4,所以從4開始進(jìn)行隔個(gè)求和,a[7]=8,即對(duì)4到8的元素隔個(gè)求和,4+6=10。

16.C解析:預(yù)處理命令行是以“#”開始的語(yǔ)句,預(yù)處理命令行的最后不能以分號(hào)表示結(jié)束,預(yù)處理命令行。其中宏定義的字符替換的定義格式為:#define標(biāo)識(shí)符字符串,預(yù)處理命令行是在系統(tǒng)對(duì)源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過(guò)程中。

17.C解析:統(tǒng)計(jì)1~9九個(gè)數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針,C語(yǔ)言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個(gè)元素的地址。因此*(t+i)代表數(shù)組的第i+1個(gè)元素。程序運(yùn)行的結(jié)果是1+2+3+4+5+6+7+8+9=25。

18.D\n數(shù)組指針是指向數(shù)組的一個(gè)指針,int(*pt)[3]表示一個(gè)指向3個(gè)int元素的數(shù)組的一個(gè)指針。

\n

19.D

20.A本題中定義了整形變量case,但case是關(guān)鍵字,關(guān)鍵字不能用做標(biāo)識(shí)符。單精度printF不是關(guān)鍵字,因?yàn)闃?biāo)識(shí)符區(qū)分大小寫。所以A不正確。

21.a*b*c*d*a*b*c*d*解析:程序中的變量i用于存放字符串str的長(zhǎng)度,執(zhí)行while語(yǔ)句,通過(guò)分析可知,字符串第2*i項(xiàng)的值可由第i項(xiàng)的值得到;第2*i-1項(xiàng)直接賦值為。號(hào),i減1,如此反復(fù)直到不滿足i>0的條件時(shí),輸出運(yùn)行后的字符串。

22.空間復(fù)雜度空間復(fù)雜度解析:算法執(zhí)行時(shí)所需要的存儲(chǔ)空間,稱為算法的空間復(fù)雜度。

23.p=jx[i][p]LineMax(x)

24.33解析:本題考查的是C語(yǔ)言逗號(hào)表達(dá)式的相關(guān)知識(shí)。程序在計(jì)算逗號(hào)表達(dá)式時(shí),從左到右計(jì)算由逗號(hào)分隔各表達(dá)式的值,整個(gè)逗號(hào)表達(dá)式的值等于其中最后一個(gè)表達(dá)式的值。本題中,首先i被賦值為2,再自加1,最后i++的值計(jì)算為3。

25.2468

26.2424解析:continue語(yǔ)句功能:結(jié)束本次循環(huán)(注:不是終止整個(gè)循環(huán)),即跳過(guò)循環(huán)體中continue語(yǔ)句后面的語(yǔ)句,開始下一次循環(huán)。

27.n+1n+1解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為0的結(jié)點(diǎn)多一個(gè)。

28.503503解析:此處需注意的是:如果if后面的條件為真,只執(zhí)行其后的一條語(yǔ)句或一條復(fù)合語(yǔ)句,如果if后面的條件為假,只執(zhí)行else后面的一條語(yǔ)句或一條復(fù)合語(yǔ)句。先判斷表達(dá)式“a<b”為假,不執(zhí)行“t=a”,但執(zhí)行“a=b;b=t;”,s的值為3,b的值為0。在判斷表達(dá)式“a<c”,值為真,所以執(zhí)行后面的3條語(yǔ)句“t=a;a=c;c=t”,結(jié)果a的值為5,c的值為3,所以最后輸出的結(jié)果為5、0和3。

29.A

30.11解析:首先計(jì)算if語(yǔ)句后面的表達(dá)式,根據(jù)運(yùn)算符的優(yōu)先級(jí)可知,先算“a!=0”,該值為1,再把1賦值給p,結(jié)果為1(真),執(zhí)行其后的printf語(yǔ)句,輸出的值為1。

31.!=returnj!=returnj解析:函數(shù)fun中,變量j用于控制刪除后剩下的數(shù)中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個(gè)元素的下一個(gè)元素的下標(biāo),所以訂語(yǔ)句中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個(gè)元素,若條件成立則表示出現(xiàn)了不同的值,a[i]要添加到新數(shù)組中。該算法只能用于數(shù)組已排序的題目中。

32.structlink*headstructlink*head解析:因?yàn)楸绢}中是用結(jié)構(gòu)體變量構(gòu)成了鏈表,所以要從鏈表頭節(jié)點(diǎn)逐個(gè)節(jié)點(diǎn)的引用結(jié)構(gòu)體的數(shù)據(jù)域,需要有個(gè)指向結(jié)構(gòu)體變量的指針依次指向各個(gè)節(jié)點(diǎn),即p=p->next,而用指針引用結(jié)構(gòu)體成員數(shù)據(jù)的方法為:p->data。注意:結(jié)構(gòu)體變量和共用體變量之間的區(qū)別為聯(lián)系。

33.驅(qū)動(dòng)驅(qū)動(dòng)

34.前件前件

35.k=p;k=p;解析:為尋找數(shù)組中最大元素的下標(biāo),需先預(yù)設(shè)1個(gè)臨時(shí)最大元素的下標(biāo),并順序逐一考查數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時(shí)最大元素更大時(shí),就用當(dāng)前元素的下標(biāo)更新臨時(shí)最大元素下標(biāo)。直至考查了數(shù)組的全部元素后,這臨時(shí)最大元素下標(biāo)就是數(shù)組的最大元素下標(biāo)。通常預(yù)設(shè)的最大元素下標(biāo)是數(shù)組的首元素下標(biāo),考查通常從首元素開始順序向后繼元素考查。程序中,存儲(chǔ)臨時(shí)最大元素下標(biāo)的變量是k,變量p控制順序考查的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時(shí)最大元素s[k]更大時(shí),應(yīng)該用p更新k,所以在空框處應(yīng)填入代碼'k=p;'。

36.n%base[d]n%base[d]解析:程序中的字符數(shù)組b存儲(chǔ)了十六進(jìn)制16個(gè)數(shù)字的字符,整型數(shù)組c用于存儲(chǔ)轉(zhuǎn)換的十六進(jìn)制數(shù)的各位數(shù)值。將整數(shù)n轉(zhuǎn)換成它的各位十六進(jìn)制數(shù)值,需采用除以16取余的方法,即求n除以16的余,得到它的十六進(jìn)制的末位數(shù),接著將n除以16,在n不等于0的情況下循環(huán),順序求出n的十六進(jìn)制的倒數(shù)第一、第二、第三位數(shù)等。程序中變量base已預(yù)置16,所以在第一處填n%base。當(dāng)n的十六進(jìn)制數(shù)的倒數(shù)第一、第二、第三位等依次存放于數(shù)組c中后,就從最高位至最低位,參照數(shù)組c[i]的內(nèi)容d(以其內(nèi)容為下標(biāo)),取十六進(jìn)制數(shù)字符表中的字符b[d)輸出,所以在第二處填[d]。

37.ASCⅡ

38.軟件開發(fā)軟件開發(fā)解析:軟件生命周期包括8個(gè)階段:?jiǎn)栴}定義、可行性研究、需求分析、系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試、運(yùn)行維護(hù)。為了使各時(shí)期的任務(wù)更明確,又可以分為3個(gè)時(shí)期:軟件定義期,包括問題定義、可行性研究和需求分析3個(gè)階段;軟件開發(fā)期,包括系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測(cè)試4個(gè)階段;軟件維護(hù)期,即運(yùn)行維護(hù)階段。可知,編碼和測(cè)試屬于軟件開發(fā)階段。

39.變換型變換型

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

41.B解析:在C語(yǔ)言中,宏定義是直接替換的,所以在c+a>b?a:b這個(gè)條件表達(dá)式中,c+a>b為真,所以用a的值作為整個(gè)表達(dá)式的值,而a的值為5,所以整個(gè)表達(dá)式的值為5。

42.BB。【解析】關(guān)系的交(∩)、并(∪)和差(-)運(yùn)算要求兩個(gè)關(guān)系是同元的,顯然作為二元的R和三元的S只能做笛卡兒積運(yùn)算。

43.A解析:按位與運(yùn)算符“&”中參加運(yùn)算的兩位都為1時(shí),其結(jié)果為1,否則結(jié)果為0,或位或運(yùn)算符“|”中參加運(yùn)算的兩位只要有一個(gè)為1,則結(jié)果為1,只有當(dāng)相應(yīng)的兩位都為0結(jié)果才為0。所以最后輸出a和b的值為7和0。

44.B解析:本題定義了一個(gè)返回值為指針的函數(shù)f(),此函數(shù)有兩個(gè)指針型的形參x和y,該函數(shù)的功能,是返回x和y指向的變量中值較小的那個(gè)指針變量。主函數(shù)中定義了兩個(gè)指針變量p和q,井讓它們指向了變量a和b,調(diào)用函數(shù)f(),返回指向的變量值較小的指針變量,r的值為指針變量p的值(變量a的地址),因此最后輸出的*p、*q和*r的值是7、8和7。

45.C

46.C解析:總體設(shè)計(jì)過(guò)程通常由兩個(gè)主要階段組成:系統(tǒng)設(shè)計(jì),確定系統(tǒng)的具體實(shí)現(xiàn)方案;結(jié)構(gòu)設(shè)計(jì),確定軟件,結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實(shí)現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解。分析員結(jié)合算法描述仔細(xì)分析數(shù)據(jù)流圖中的每個(gè)處理,如果一個(gè)處理的功能過(guò)分復(fù)雜,必須把它的功能適當(dāng)?shù)胤纸獬梢幌盗斜容^簡(jiǎn)單的功能。

47.B解析:兩個(gè)if語(yǔ)句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語(yǔ)句,所以變量c的值等于3,變量b的值沒能變化,程序輸出的結(jié)果為3,5,3。所以正確答案為B)。

48.B

49.C解析:在for循環(huán)體中,首先判斷自變量i能否被5整除,然后再自加兩次,最后判斷i能否被8整除。當(dāng)for循環(huán)執(zhí)行到第30次時(shí),i的值為30能被5整除,然后i經(jīng)過(guò)兩次自加1運(yùn)算,值變?yōu)?2,能被8整除,故執(zhí)行“printf('%d',i);”語(yǔ)句,即輸出32。本題的答案為選項(xiàng)C)。

50.D解析:選項(xiàng)A中的VAR不是C語(yǔ)言中關(guān)鍵字,故選項(xiàng)A不正確:選項(xiàng)B中cher,應(yīng)改char,char才是C語(yǔ)言中的關(guān)鍵字,故選項(xiàng)B不正確;選項(xiàng)C中integer在C語(yǔ)言中簡(jiǎn)化為int,這里應(yīng)該將integer改為int,int才是C語(yǔ)言中的關(guān)鍵字,選項(xiàng)D中default為C語(yǔ)言中默認(rèn)的關(guān)鍵字,故選項(xiàng)D正確。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。

51.D

52.B解析:盡管C語(yǔ)言以傳值方式進(jìn)行函數(shù)調(diào)用,但也可以通過(guò)傳遞指針的值(變量的地址)來(lái)達(dá)到修改實(shí)參變量值的目的,這是此題主要說(shuō)明的問題。其次,應(yīng)注意表達(dá)式。(z++)的值是*z,其后的z++在程序中無(wú)實(shí)際作用。函數(shù)調(diào)用時(shí),由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次調(diào)用函數(shù)時(shí),*x=a=10,*y=b=40,*z=c=20輸出結(jié)果為11,41,20,至此,已經(jīng)可以肯定選項(xiàng)B)是正確的。在第一次輸出后,a=11,b=41,c=20,第二次輸出為:12,42,20。注意:指針作為參數(shù)的函數(shù)調(diào)用的執(zhí)行過(guò)程。

53.D解析:本題中fun函數(shù)實(shí)現(xiàn)丁字符串函數(shù)str-eat的功能,將字符串a(chǎn)a連接到字符串ss的末尾。調(diào)用fun函數(shù)時(shí),形參t和s分別指向了字符串ss和aa,然后通過(guò)一個(gè)while循環(huán)使t指向字符串ss的結(jié)束符的位置,第二個(gè)while循環(huán)將字符串a(chǎn)a中的字符(包括結(jié)束符'\\0')逐個(gè)復(fù)制到字符串ss的末尾處。

54.B解析:選項(xiàng)A)缺少分號(hào),是一個(gè)表達(dá)式,而不是語(yǔ)句;選項(xiàng)C)包含一個(gè)不合法的運(yùn)算符“++=”;選項(xiàng)D)應(yīng)改為a=(int)i;。

55.B解析:在C語(yǔ)言中,數(shù)組的下標(biāo)默認(rèn)為0,因此數(shù)組p的下標(biāo)范圍為:0~7。程序循環(huán)過(guò)程為:第1次循環(huán)i=0,執(zhí)行循環(huán),并且i自加,得i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語(yǔ)句;接著進(jìn)行第2次循環(huán),此時(shí)i=1,小于7執(zhí)行循環(huán),并且i自加,得i=2,因此p[i]為p[2]=13,13%2=1,執(zhí)行后面的語(yǔ)句;這樣一直到退出循環(huán)。最后j的值為j=13+15+17=45。

56.D解析:本題涉及C語(yǔ)言最基本的4個(gè)知識(shí)點(diǎn):①C語(yǔ)言程序是由函數(shù)構(gòu)成的,C程序的基本單位是函數(shù);②每個(gè)C程序有且只有一個(gè)主函數(shù)main(),且程序必須從main()函數(shù)開始執(zhí)行,但是main()函數(shù)可以放在程序中的任意位置;③C語(yǔ)言的書寫格式是自由的,一行可以寫多條語(yǔ)句,一條語(yǔ)句也可以寫在不同的行上;④C語(yǔ)言本身不提供輸入輸出語(yǔ)句,可以通過(guò)函數(shù)來(lái)實(shí)現(xiàn)輸入和輸出操作。

57.A解析:本題考查ifelse語(yǔ)句。首先scanf函數(shù)通過(guò)鍵盤讀入x的值。當(dāng)x=3時(shí),第一個(gè)if語(yǔ)句,先判斷條件,取x的值3和2比較,然后將x的值加1,發(fā)現(xiàn)條件成立,執(zhí)行下列的printf語(yǔ)句,輸出x的值4。當(dāng)x=1時(shí),第一個(gè)if語(yǔ)句,先判斷條件,取x的值1和2比較,然后將x的值加1(x的值變?yōu)?),發(fā)現(xiàn)條件不成立,執(zhí)行下列的else語(yǔ)句,先輸出x的值2,再將x的值減1。

58.B解析:觀察可知圖形共4行,主函數(shù)中通過(guò)一個(gè)for5循環(huán)循環(huán)4次,輸出4行。第1行輸出3個(gè)空格和1個(gè)*,第2行輸出2個(gè)空格和3個(gè)*,第3行輸出1個(gè)空格和5個(gè)*,第4行輸出7個(gè)*,主函數(shù)中通過(guò)第2個(gè)循環(huán)控制每行的輸出空格數(shù),第3個(gè)for循環(huán)控制輸出*的個(gè)數(shù),總結(jié)規(guī)律:每行輸出*的個(gè)數(shù),總比前一行的多2個(gè),且第1行的個(gè)數(shù)為1,可以斷定每行輸出*的個(gè)數(shù)組成了一個(gè)公差為2的等差數(shù)列,所以每行輸出。的個(gè)數(shù)即該等差數(shù)列的通項(xiàng),故該空白處應(yīng)該填寫2*i-1,所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

59.D解析:軟件工程包括3個(gè)要素,即方法、工具和過(guò)程。方法是完成軟件工程項(xiàng)目的技術(shù)手段:工具支持軟件的開發(fā)、管理和文檔生成:過(guò)程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理。

60.B解析:該題目應(yīng)該根據(jù)循環(huán)體第一次和最后一次執(zhí)行時(shí)的輸出結(jié)果來(lái)決定哪一項(xiàng)是正確的。第一次進(jìn)入循環(huán)時(shí),n的值是9,循環(huán)體內(nèi),先經(jīng)過(guò)n--運(yùn)算,n的值變?yōu)?,所以第一次的輸出值是8,由此可以排除選項(xiàng)A)和D)。由循環(huán)條件n>6可以知道,最后一次循環(huán)開始時(shí),n的值應(yīng)該為7,所以最后一次執(zhí)行循環(huán)時(shí),輸出為6,由此可以排除選項(xiàng)C)。

61.DA選項(xiàng)中整型常量應(yīng)表示為1200,不能包含“?!薄選項(xiàng)中E后面的指數(shù)必須為整數(shù)。C選項(xiàng)中轉(zhuǎn)義字符以“、”開始,若要表示字符“、”,應(yīng)寫為“、、”。

62.A

63.C在軟件開發(fā)的各個(gè)階段經(jīng)常會(huì)使用到一些圖形工具,如在需求分析階段使用數(shù)據(jù)流圖,在概要設(shè)計(jì)階段使用系統(tǒng)結(jié)構(gòu)圖,在詳細(xì)設(shè)計(jì)階段使用程序流程圖、N-S圖或者PAD圖等。

64.B

65.C指針數(shù)組*alpha[6]實(shí)際上相當(dāng)于一個(gè)二維數(shù)組,而p是一個(gè)指向指針的指針,p=alpha后,引用p[x]便是引用數(shù)組*alpha[6]中的第x個(gè)數(shù)組元素的首地址,所以打印的結(jié)果應(yīng)當(dāng)為ABCDEFGHIJKLMNOP。

66.D數(shù)組的二維下標(biāo)不能省,一維的倒是可以省略,題目定義的是數(shù)組指針,A項(xiàng)錯(cuò)誤,B,C項(xiàng)省略了數(shù)組下標(biāo)所以錯(cuò)誤。

67.Aauto用于聲明變量的生存期為自動(dòng),即將不在任何類、結(jié)構(gòu)、枚舉、聯(lián)合和函數(shù)中定義的變量視為全局變量,而在函數(shù)中定義的變量視為局部變量。這個(gè)關(guān)鍵字通常會(huì)被省,因?yàn)樗械淖兞磕J(rèn)就是aut0的。register定義的變量告訴編譯器盡可能的將變量存在CPU內(nèi)部寄存器中而不是通過(guò)內(nèi)存尋址訪問以提高效率。static變量會(huì)被放在程序的全局存儲(chǔ)區(qū)中,這樣可以在下一次調(diào)用的時(shí)候還可以保持原來(lái)的賦值。這一點(diǎn)是它與堆棧變量和堆變量的區(qū)別。變量用static告知編譯器,自己僅僅在變量的作用范圍內(nèi)可見。這一點(diǎn)是它與全局變量的區(qū)別。當(dāng)static用來(lái)修飾全局變量時(shí),它就改變了全局變量的作用域。extern限制在了當(dāng)前文件里,但是沒有改變其存放位置,還是在全局靜態(tài)儲(chǔ)存區(qū)。extem外部聲明,該變量在其他地方有被定義過(guò)。因此,答案為A選項(xiàng)。

68.D計(jì)算機(jī)能直接執(zhí)行的程序是可執(zhí)行程序,其擴(kuò)展名為.exe。故本題答案為D選項(xiàng)。

69.C

70.B

71.B花括號(hào)可以作為函數(shù)體的定界符,也可以作為復(fù)合語(yǔ)句的定界符。函數(shù)是c程序的基本單位,用戶可以命名自定義函數(shù),而庫(kù)函數(shù)名是固定的。c語(yǔ)句以分號(hào)結(jié)尾,分號(hào)是語(yǔ)句的一部分。

72.B若有以下定義:inta[3][4],i,j;且當(dāng)0<=i<3,0<=j<4,則可以有以下幾種方式來(lái)引用數(shù)組中的第i行,第j列的元素:

a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[O][0]+4*i+j)。

賦值語(yǔ)句完成后數(shù)組中數(shù)據(jù)如下:

024

024

024

因?yàn)閒unc函數(shù)打印的是第1行第2列的數(shù)據(jù),所以為4。

73.C

74.B#include”文件名”,預(yù)處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標(biāo)準(zhǔn)目錄搜索。

75.A第一次循環(huán)后,a為4,b為3,第二次循環(huán)后,a為7,b為7,第三次循環(huán)后,a為10,b為14,故答案為A)。

76.AC語(yǔ)言源程序名的后綴為.C’所以A)正確。

77.D

78.DC語(yǔ)言規(guī)定,變量命名必須符合標(biāo)識(shí)符的命名規(guī)則。D選項(xiàng)中包含了非法字符“$”,所以錯(cuò)誤。標(biāo)識(shí)符由字母、數(shù)字或下劃線組成,且第一個(gè)字符必須是大小寫英文字母或者下劃線,而不能是數(shù)字。大寫字符與小寫字符被認(rèn)為是兩個(gè)不同的字符,所以For不是關(guān)鍵字for。

79.C棧是“先進(jìn)后出”的線性表;隊(duì)列是“先進(jìn)先出”的線性表;在循環(huán)隊(duì)列結(jié)構(gòu)中,每進(jìn)行一次入隊(duì)運(yùn)算,隊(duì)尾指針就加1,每進(jìn)行一次出隊(duì)運(yùn)算,隊(duì)頭指針就加1,隊(duì)頭指針和隊(duì)尾指針一起反映了隊(duì)列中元素的動(dòng)態(tài)變化情況。

80.C解析:主函數(shù)中定義了一個(gè)整型變量a,一個(gè)整型指針變量b和一個(gè)二級(jí)指針變量c,并讓c指向指針變量b,讓指針b指向整形變量a,所以**c為變量a的值,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

81.(1)錯(cuò)誤:fun(intn);

正確:fun(intn)

(2)錯(cuò)誤:if(n=1)

正確:if(n==1)

【解析】根據(jù)C語(yǔ)言的語(yǔ)法規(guī)則,函數(shù)定義之后是不加分號(hào)的。由整個(gè)程序看,函數(shù)fun()是函數(shù)定義。因此“fun(intn);”應(yīng)改為“fun(intn)”;表達(dá)式n-1表示的是將1賦給變量n,顯’然是不對(duì)的。這里應(yīng)該判斷變量n是否等于l,因此“if(n=1)”應(yīng)改為“if(n==1)”。

82.longfun(char*s)}inti,len;Longsum=0;len=strlen(s);for(i=0;i<len;i++){sum=sum*10+*s-'0's++;}returnsum;}<len;i++)要把一個(gè)數(shù)字字符轉(zhuǎn)為相應(yīng)的數(shù)字,只要將它的ASCII值減去48(或D1)即可。要把數(shù)字字符串轉(zhuǎn)為相應(yīng)的數(shù)字,則要從左到右依次取出字符轉(zhuǎn)為相應(yīng)數(shù)字,乘10再加上下一位數(shù)字。</len;i++)2021-2022年吉林省白山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲(chǔ)空間

B.可隨機(jī)訪問任意元素

C.插入、刪除不需要移動(dòng)元素

D.所需空間與線性表長(zhǎng)度成正比

2.若已定義:“inta[9],*p=a;”,并在以后的語(yǔ)句中未改變p的值,不能表示a[1]地址的表達(dá)式是______。

A.p+1B.a+1C.a++D.++p

3.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

4.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(“d.dat”,“w+b”);for(i=0;i<6;i++)fwrite(&a[i],sizeof(int),1,fp);rewind(fp);fread(&a[3],sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,a[i]);}程序運(yùn)行后的輸出結(jié)果是()。

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

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

6.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

7.在具有101個(gè)元素的順序表中查找值為x的元素結(jié)點(diǎn)時(shí),平均比較元素的次數(shù)為()。

A.50B.51C.100D.101

8.當(dāng)c的值不為0時(shí),在下列選項(xiàng)中不能正確將c的值賦給變量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

9.有以下程序

include<stdio.h>

main()

{chara[30],b[30];

scanf(“%s”,a);

gets(b);

printf(“%s\n%s\n”,a,b);

}

程序運(yùn)行時(shí)若輸入:

howareyou?Iamfine<回車>

則輸出結(jié)果是A.howareyou?Iamfine

B.howareyou?1amfine

C.howareyou?Iamfine

D.howareyou?

10.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

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

A.28

B.27

C.42

D.41

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

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

12.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序運(yùn)行后的輸出結(jié)果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1

13.A.A.75310246B.01234567C.76310462D.13570246

14.下列程序的輸出結(jié)果是()。char*point(char*pt):main{charb[4]={a,c,s,f),*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}A.sB.cC.fD.a

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

16.下列敘述中錯(cuò)誤的是()。A.在程序中凡是以“#”開始的語(yǔ)句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號(hào)表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過(guò)程中進(jìn)行的

17.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執(zhí)行后的輸出結(jié)果是A.A.45B.20C.25D.36

18.若有定義"int(*pt)[3];",則下列說(shuō)法正確的是()。

A.定義了基類型為int的三個(gè)指針變量

B.定義了基類型為int的具有三個(gè)元素的指針數(shù)組pt

C.定義了一個(gè)名為*pt、具有三個(gè)元素的整型數(shù)組

D.定義了一個(gè)名為pt的指針變量,它可以指向每行有三個(gè)整數(shù)元素的二維數(shù)組

19.

20.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請(qǐng)輸人2個(gè)數(shù):");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是()。A.定義語(yǔ)句出錯(cuò),case是關(guān)鍵字,不能用做用戶自定義標(biāo)識(shí)符

B.定義語(yǔ)句出錯(cuò),printF不能用做用戶自定義標(biāo)識(shí)符

C.定義語(yǔ)句無(wú)錯(cuò),scanf不能作為輸入函數(shù)使用

D.定義語(yǔ)句無(wú)錯(cuò),printf不能輸出case的值

二、2.填空題(20題)21.當(dāng)運(yùn)行以下程序時(shí),輸入abcd,程序的輸出結(jié)果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

22.算法的執(zhí)行過(guò)程中,所需要的存儲(chǔ)空間稱為算法的【】。

23.以下程序中,主函數(shù)調(diào)用了LineMax函數(shù),實(shí)現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值。

請(qǐng)?zhí)羁铡?/p>

#defineN3

#defineM4

voidLineMax(intx[N][M])

{inti,j,P;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j])【】;

printf("Themaxvalueinline%dis%d\n",i,【】);

}

main()

{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【】;

}

24.設(shè)變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為【】。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

26.設(shè)有以下程序:

main()

{inti,sum=0;

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

{if((i%2)==0)

continue;

sum+=i;}

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

}

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

27.某二叉樹中度為2的結(jié)點(diǎn)有n個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。

28.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

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

}

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

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

30.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

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

}

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

31.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使相同的數(shù)只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)fun返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

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

}

32.已知head指向一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,鏈表中每個(gè)結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域?yàn)檎汀R韵潞瘮?shù)求出鏈表中所有鏈結(jié)點(diǎn)數(shù)據(jù)域的和值,作為函數(shù)值返回。請(qǐng)?jiān)谙聞澗€內(nèi)填入正確內(nèi)容。

{intdata;structlink*next;}

main()

{structlink*head;

sum(head);

┆}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

33.單獨(dú)測(cè)試一個(gè)模塊時(shí),有時(shí)需要一個(gè)【】程序驅(qū)動(dòng)被測(cè)試的模塊。

34.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。

35.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請(qǐng)?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

36.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出,請(qǐng)?zhí)羁铡?/p>

#inelude<stdio.h>

main()

{eharb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");

seanf("%ld",&n);

do{c[i]=【】;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

for(--i;i>=0;--i)

{d=c[i];printf("%c",b【】);}

printf("\n");

}

37.在C語(yǔ)言中,字符的比較就是對(duì)它們的【】碼進(jìn)行比較。

38.軟件生命周期包括2今階段。為了使各時(shí)期的任務(wù)更明確,又可分為3個(gè)時(shí)期:軟件定義期、軟件開發(fā)期、軟件維護(hù)期。編碼和測(cè)試屬于【】期。

39.數(shù)據(jù)流的類型有______和事務(wù)型。

40.在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);}

三、1.選擇題(20題)41.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其輸出結(jié)果為______。

A.10B.5C.6D.編譯錯(cuò)誤

42.設(shè)R是一個(gè)二元關(guān)系,S是一個(gè)三元關(guān)系,則下列運(yùn)算中正確的是()。

A.R-SB.R×SC.R∩SD.R∪S

43.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后輸出結(jié)果是

A.70B.7C.11D.430

44.有以下程序int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b:8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}執(zhí)行后輸出結(jié)果是

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

45.設(shè)x、y\z和k都是int型變量,執(zhí)行表達(dá)式x=(y=4,z=16,k=32)后,x的值為______。

A.4B.16C.32D.52

46.在結(jié)構(gòu)化方法中,軟件功能分解屬于軟件開發(fā)中的______階段。

A.詳細(xì)設(shè)計(jì)B.需求分析C.總體設(shè)計(jì)D.編程調(diào)試

47.若變量已正確定義,有以下程序段

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(c!=a)c=b;

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

其輸出結(jié)果是

A.程序段有語(yǔ)法錯(cuò)B.3,5,3C.3,5,5D.3,5,7

48.能夠?qū)τ?jì)算機(jī)的硬件設(shè)備進(jìn)行管理,并使應(yīng)用軟件能夠方便、高效地使用這些設(shè)備的是()

A.數(shù)據(jù)庫(kù)存系統(tǒng)B.操作系統(tǒng)C.編輯軟件D.應(yīng)用軟件

49.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。

A.5B.24C.32D.40

50.下列選項(xiàng)中,合法的C語(yǔ)言關(guān)鍵字是______。

A.VARB.cherC.integerD.default

51.下列程序的輸出結(jié)果為______。main(){intp,y=0,x=0;p=x<<8|~y>>8;printf("%d",p);p+=(p+=2);printf("%d\n",p);}

A.-10B.00C.04D.-12

52.以下程序的輸出結(jié)果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,21.12,42,22

53.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%s,%s\n",ss,aa);

}

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

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

54.若變量a,i已正確定義,且i已正確賦值,下面合法的語(yǔ)句是()。

A.a==1B.++i;C.a=a++=5;D.a=int(i);

55.下列程序的輸出結(jié)果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

56.下列說(shuō)法正確的是()。

A.在C程序中,main()函數(shù)必須位于程序的最前面

B.在C程序中,一條語(yǔ)句只能寫一行而不能寫多行

C.C程序是以行為基本單位的

D.C語(yǔ)言本身沒有輸入輸出語(yǔ)句

57.兩次運(yùn)行下列的程序,如果從鍵盤上分別輸入3和1,則輸出結(jié)果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

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

58.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=1;j<=();j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是()。

A.iB.2*-1C.2*i+1D.i+2

59.下列不屬于軟件工程的3個(gè)要素的是()。

A.32具B.過(guò)程C.方法D.環(huán)境

60.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}該程序的輸出結(jié)果是

A.987B.876

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論