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頁,還剩69頁未讀, 繼續(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.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計(jì)方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計(jì)算機(jī)的發(fā)展

2.下列關(guān)于效率的說法不正確的是()

A.效率是一個性能要求,其目標(biāo)應(yīng)該在需求分析時給出

B.提高程序效率的根本途徑在于選擇良好的設(shè)計(jì)方法,數(shù)據(jù)結(jié)構(gòu)與算法

C.效率主要指處理機(jī)時間和存儲器容量兩個方面

D.程序的效率與程序的簡單性無關(guān)

3.有以下結(jié)構(gòu)體說明、變量定義和賦值語句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];則下列scanf函數(shù)調(diào)用語句有錯誤的是()。

A.scanf(“%s”,s[0].name);

B.scanf(“%d”,&s[0].age);

C.scanf(“%c”,&(ps->sex));

D.scanf(“%d”,ps->age);

4.

5.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結(jié)果為()。

cb='b';

k=10;

printf("%X,%o,”,ch,ch,k);

printf("k=%%d\n",k);A.A.因變量類型與格式描述符的類型不匹配,輸出無定值

B.輸出項(xiàng)與格式描述符個數(shù)不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

6.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序運(yùn)行后的輸出結(jié)果是()。A.2B.1C.0D.3

7.有以下程序:

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

A.357B.753C.369D.751

8.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的運(yùn)行結(jié)果是()。A.2B.3C.7D.0

9.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

10.設(shè)有如下定義語句:intm[]={2,4,6,8,10},*k=m;以下選項(xiàng)中,表達(dá)式的值為6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

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

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

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

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

D.不使用指針

12.若x,i,j和k都是int型變量,則執(zhí)行下面表達(dá)式后x的值為()。x=(i=4,j=16,k=32)

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

13.定義無符號整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是A)B)369C)0.369D)A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}

14.

15.下列語句中,()是錯誤的。A.x=x+1;B.x=x+y;C.x+y=x;D.x=4;

16.在Windows環(huán)境下,單擊當(dāng)前窗口中的按鈕“”,其功能是A.將當(dāng)前應(yīng)用程序轉(zhuǎn)為后臺運(yùn)行

B.退出Windows后再關(guān)機(jī)

C.終止當(dāng)前應(yīng)用程序的運(yùn)行

D.退出Windows后重新啟動計(jì)算機(jī)

17.下列有關(guān)圖的遍歷說法中,不正確的是()

A.圖的遍歷必須用遞歸實(shí)現(xiàn)

B.基本遍歷算法兩種:深度遍歷和廣度遍歷

C.有向圖和無向圖都可以進(jìn)行遍歷操作

D.圖的遍歷算法可以執(zhí)行在有回路的圖上

18.設(shè)有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序?yàn)橹鞔鎯?,a1,1為第一個元素,其存儲地址為1,每個元素占1個地址空間,則a8,5的地址為()。

A.13B.33C.18D.40

19.設(shè)有以下說明,則不正確的敘述是()。

A.A.arr所占的內(nèi)存長度等于成員c的長度

B.arr的地址和它的各成員的地址都是同一地址

C.arr可以作為函數(shù)參數(shù)

D.不能在定義arr時對它初始化

20.定義下列結(jié)構(gòu)體(聯(lián)合)數(shù)組:structst{charname[15];intage;}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);執(zhí)行語句printf("%d,%C",a[2].a(chǎn)ge,*(a[3].name+2))的輸出結(jié)果為()。A.15,AB.16,HC.16,AD.17,H

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,e+d)*10;

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

}

22.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

23.數(shù)據(jù)的安全性是指保護(hù)數(shù)據(jù)以防止【】用戶的使用造成的數(shù)據(jù)泄密和破壞。

24.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達(dá)式______。

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

main()

{chars[]="abcdef";

s[3]='\0';

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

}

26.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當(dāng)編譯連接通過后,運(yùn)行程序T18時,輸入Thank!,則輸出結(jié)果是【】。

27.閱讀下面語句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

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

printf("\n");}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

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

printf("\n");

}

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

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

31.若從鍵盤輸入58,則以下程序輸出的結(jié)果是【】。

mam()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

32.設(shè)一棵完全二叉樹共有700個結(jié)點(diǎn),則在該二叉樹中有【】個葉子結(jié)點(diǎn)。

33.若給fun函數(shù)的形參s傳送字符串:"abc-6354abc",則函數(shù)的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

34.以下程序從輸入的10個字符串中找出最長的那個串,請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

#defineN10

main()

{charstr[N][81],*sp;

inti;

for(i=0;i<N;i++)gets(str[i]);

sp=str[0];

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

if(strlen(sp)<strlen(str[i]))

【】;

printf("輸出最長的那個串:\n%s\n",sp);

printf("輸出最長的那個串的長度:%d\n",strlen(sp));}

35.【】是數(shù)據(jù)庫設(shè)計(jì)的核心。

36.有下列程序,功能是把輸入的+進(jìn)制長整型數(shù)以+六進(jìn)制的形式輸出,完成程序

#include"stdio.h"

main()

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

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

longn;

scanf("%1d",&n);

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

while(n!=0);

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

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

printf("H\n");}

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

#defineP(a)printf("%d",a)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>l;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

38.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

39.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

三、1.選擇題(20題)41.以下選項(xiàng)中正確的語句組是()。

A.chars[];s="HELLO!";

B.char*s;s={"HELLO!"};

C.chars[10];s="HELLO!";

D.char*s;s="HELLO!";

42.有以下說明和定義語句structstudent{intage;charnum[8];structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;};以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯誤的是

A.(p++)->numB.p->numC.(*p).numD.stu[3].a(chǎn)ge

43.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n".k);}執(zhí)行后的輸出結(jié)果是()。

A.5,5B.5,11C.11,11D.11,5

44.若有定義intx,y;并已正確給變量賦值,則下列選項(xiàng)中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x-y)等價(jià)的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

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

A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大

B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小

C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小

D.上述三種說法都不對

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

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

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

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

48.為了提高軟件模塊的獨(dú)立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合

49.下列選項(xiàng)中正確的語句組是______。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beiiing";

D.char*s;s="Beijing";

50.在位運(yùn)算中,操作數(shù)每右移兩位,其結(jié)果相當(dāng)于()。

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4

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

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

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

A.chars[10]="abcdefg";

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

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

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

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

54.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

55.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序運(yùn)行的結(jié)果是()。

A.234B.432C.23D.4534554334344523

56.設(shè)變量x為float型且已經(jīng)賦值,則以下語句中能夠?qū)中的數(shù)值保留到小數(shù)點(diǎn)后面兩位,并將第三位四舍五入的是_______。

A.x=x*l00+0.5/100.0

B.x=(x*100+O.5)/100

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

57.設(shè)有語句:if(a==1)b=2;c=3;,以下語句中與之等價(jià)的是()。

A.if(a==1){b=2;c=3;}

B.if(a!=1){;}else{b=2;c=3;}

C.if(a=1)c=3;b=2;

D.(a==1)?b=2:a:=a;c=3;

58.下列程序的輸出結(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

59.在計(jì)算機(jī)中,算法是指()

A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法

60.下面程序的輸出結(jié)果是()。#include"stdio.h"intsub(intm){statica=4;a+=m;returna;}voidmain(){inti=2,j=1,k;k=sub(i);k=sub(j);printf("%d",k);}

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

四、選擇題(20題)61.以下選項(xiàng)中,能用作用戶標(biāo)識符的是()。A._0_B.8—8C.voidD.unsigned

62.有以下程序:

#include<stdio.h>

voidexch(intt[])

{t[0]=t[s];}

main()

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

while(i<=4){exch(&x[i]);i++;}

for(i=0;i<5;i++)printf("%dl"x[i]);

printf("\n");

}

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

A.246810

B.13579

C.12345

D.678910

63.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

64.

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

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]一1;

else

p[1][i]=1;)

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

65.

66.若有定義語句:

charS[10]=”1234567\0\0”;則strlen(s)的值是()。

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

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

A.c語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

B.c程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機(jī)器指令文件

C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個文本文件中

D.c語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序

68.有以下程序:執(zhí)行時輸入:0<;回車>;后,則輸出結(jié)果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

69.有如下程序

#include"stdio.h"

main()

{intj,i,k=0;

for(j=20;j<=30;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

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

A.2329B.2923

C.3292D.9232

70.軟件測試的目的是()。

A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤

71.

72.

73.

74.下面屬于黑盒測試方法的是()。

A.邊界值分析B.路徑覆蓋C.語句覆蓋D.邏輯覆蓋

75.

76.當(dāng)把以下四個表達(dá)式用作if語句的控制表達(dá)式時,有一個選項(xiàng)與表達(dá)式(k%2)!=0含義相同,這個選項(xiàng)是()。

A.k%2==0B.k%2==1C.!k%2==1D.都不同

77.若intk=8;則執(zhí)行下列程序后,變量k的正確結(jié)果是

main()

{intk=8;

switch(k)

{case9:k+=1;

case10:k+=1;

default:k+=1;

case11:k+=1;break;

}

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

}

A.12B.1

C.10D.9

78.有以下程序:

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

A.45B.20C.25D.36

79.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。

A.0B.-20C.-10D.10

80.

五、程序改錯題(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。

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

注意:不要改動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.請編一個函數(shù)fun(ohlr*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。

例如,字符串中原有的字符串為asdf9,則調(diào)用該函數(shù)后,串中的內(nèi)容為9fdsa。

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

試題程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a(chǎn));

fclose(out);

}

參考答案

1.C解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機(jī)。為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識到軟件工程是使計(jì)算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。

2.D

3.D題目中需要輸入一個變量,scanf要求輸入?yún)?shù)為指針,而D選項(xiàng)中“ps->age”為變量,不是指針。故本題答案為D選項(xiàng)。

4.C

5.C第1個printf函數(shù),格式說明的個數(shù)是2,而輸出項(xiàng)的個數(shù)是3,所以對于多余的輸出項(xiàng)k不予輸出;第2個printf函數(shù),有兩個%說明,第1個%后面的字符要原樣輸出。本題考查printf函數(shù)的格式。①“%x”和“%0”分別表示以十六進(jìn)制和八進(jìn)制無符合型輸出整型數(shù)據(jù)(不帶前導(dǎo)ox或0);②printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出;③格式說明與輸出項(xiàng)的個數(shù),也要相等,如果格式說明的個數(shù)少于輸出項(xiàng)的個數(shù),則對于多余的輸出項(xiàng)不予輸出。

6.C在ifelse語句中else,總是與離它最近的配對。本題目中x勸1所以!x為0,所以執(zhí)行else齬句中的內(nèi)容,判斷(x==0)是否成立,因?yàn)閤為1所以條件不成立,所以else部分的近.else語句不再執(zhí)行,所以y的值還是初始值0。

7.A本題考查的是for循環(huán)與二維數(shù)組的定義和引用。當(dāng)定義二維數(shù)組的初始化列表只使用一重花括號時,其中的每個值依次代表從第l行的第1個元素起,直到第l行滿,接著代表第2行、第3行……的每一個元素。程序中的循環(huán)將循環(huán)3次,循環(huán)變量i的值分別是0、1、2,所以3次循環(huán)中輸出的數(shù)分別是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后輸出的結(jié)果為357。故應(yīng)該選擇A)。

8.A因?yàn)閒un(intx)是一個遞歸函數(shù)。在主函數(shù)中fun(7)經(jīng)過3次遞歸調(diào)用。其過程可以描述為fun(7)=7-fun(5)=7-(5*fun(3))=7*(5*(3*fun(1)))=7-(5-(3-3))=7-5=2。最后的輸出結(jié)果為2。故本題答案為A選項(xiàng)。

9.C解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求先序遍歷遍歷順序應(yīng)該為:訪問根結(jié)點(diǎn)->先序遍歷左子樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDECF。

10.A本題考查數(shù)組和指針,*k指針是指向rn數(shù)組的首地址,所以要使表達(dá)武的值為6,只需要指針指向第m[2],所以答案選擇A。-

11.C

12.C

13.B

14.A

15.C

16.C解析:在Windows環(huán)境下,單擊當(dāng)前窗口中的按鈕“x”,其功能是終止當(dāng)前應(yīng)用程序的運(yùn)行,關(guān)閉當(dāng)前窗口。

17.A

18.B

19.C本題主要考查聯(lián)合體的內(nèi)存使用:聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間,int占2個字節(jié),char占1個字節(jié),float占4個字節(jié),所以arr所占的內(nèi)存長度等于成員c的長度:arr的地址和它的各成員的地址都是同一地址;不能直接對arr賦值,即不能在定義arr時對它初始化:arr也不可以作為函數(shù)參數(shù)。

20.C本題考查結(jié)構(gòu)體數(shù)組。a[2].a(chǎn)ge為結(jié)構(gòu)體aEZ]的age成員,即a[3].name為指向結(jié)構(gòu)體a[3]的name成員的第一個元素的指針,即指向“2”,(a[3].name+2)將指針后移兩位指向第三個元素“A”,*(a[3].name+2)是取指針?biāo)赶虻刂返膬?nèi)容。

21.77解析:在C語言中,宏定義是直接替換的,所以在對表達(dá)式MAX(a+b,c+d)*l0進(jìn)行替換后,表達(dá)式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。在這個條件表達(dá)式中,(a+b)>(c+d)為真,所以用(a+b)的值作為整個表達(dá)式的值(否則用(c+9d)*10)的值作為整個表達(dá)式的值),而(a+b)的值為7。所以整個表達(dá)式的值為7。

22.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)

23.(非法)不合法(非法)不合法

24.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達(dá)式是(y%2)==0。

25.abcabc解析:字符串的結(jié)束標(biāo)記'\\0',當(dāng)輸出一個存放在字符數(shù)組中的字符串時,只需輸出到'\\0'為止,而不管其后有什么數(shù)據(jù)。本題給字符數(shù)組s的元素s[3]賦值為'\\0',故只能輸出3個字符“abc”。

26.!knahT!knahT解析:此程序是一道次序顛倒題,即輸入'Thank!',則輸出'!knahT'。

27.918273645918273645解析:for是C語言的關(guān)鍵字,其后的一對圓括號中通常含有3個表達(dá)式,各個表達(dá)式之間用分號隔開,這3個表達(dá)式可以是任意形式的表達(dá)式,通常主要用于for循環(huán)控制。

28.77解析:本題考查的是函數(shù)的遞歸調(diào)用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計(jì)算出最終結(jié)果。

29.246246解析:本題考查靜態(tài)(static)局部變量的使用。fun函數(shù)中的靜態(tài)局部變量a所占用的存儲單元在程序運(yùn)行過程中始終不釋放,即當(dāng)下一次調(diào)用該函數(shù)時,該變量仍然保留上一次函數(shù)調(diào)用結(jié)束時已有的值,3次調(diào)用fun函數(shù)分別得到2,4,6。

30.33解析:條件表達(dá)式的一般形式為;表達(dá)式1?表達(dá)式2:表達(dá)式3條件運(yùn)算符的執(zhí)行順序:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值;若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。30/3=10>0,所以執(zhí)行p/10,結(jié)果為3。

31.585858585858解析:在程序小,執(zhí)行scanf()語句后,a被賦值為58。接著執(zhí)行第一個if語句,因?yàn)?,a=58>50,執(zhí)行第一個if語句后面的輸出語句,輸出58;接著執(zhí)行第二個if語句,因?yàn)?,a=58>40,執(zhí)行第二個if語句后面的輸出語句,輸出58;接著執(zhí)行第三個if語句,因?yàn)?,a=58>30,執(zhí)行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。

32.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點(diǎn)。因此,設(shè)一棵完全二叉樹具有n個結(jié)點(diǎn),若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點(diǎn)以及n/2-1個度為2的結(jié)點(diǎn),還有1個是度為1的結(jié)點(diǎn):若n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點(diǎn)以及[n/2]個度為2的結(jié)點(diǎn),沒有度為1的結(jié)點(diǎn)。本題中,完全二叉樹共有700個結(jié)點(diǎn),700是偶數(shù),所以,在該二叉樹中有350個葉子結(jié)點(diǎn)以及349個度為2的結(jié)點(diǎn),還有1個是度為1的結(jié)點(diǎn)。所以,本題的正確答案為350。

33.-6354-6354解析:本題的考查點(diǎn)是函數(shù)的返回值。這個函數(shù)的目的是提取出由函數(shù)的形參傳送來的字符串中的數(shù)字字符,并通過相應(yīng)字符位置計(jì)算出它們數(shù)值形式的冪,最后返回字符串中的數(shù)字字符的數(shù)值形式,所以函數(shù)的返回值應(yīng)當(dāng)是“-6354”。

34.sp=str[i]sp=str[i]解析:二維字符數(shù)組即數(shù)組的每個元素又是一個字符串,即字符串?dāng)?shù)組。題中二維數(shù)組的第一行的首地址賦給字符指針sp,使sp指向了二維字符數(shù)組的一個字符串。求字符串長度函數(shù)strlen比較當(dāng)前字符串與數(shù)組的下一個元素的字符串的長度,如果當(dāng)前字符串的長度小于下一個元素的,則指針sp又指向了下一個元素,直到比較到數(shù)組的最后一個元素,得到的sp指針?biāo)赶虻淖址礊殚L度最長的字符串。

35.數(shù)據(jù)模型數(shù)據(jù)模型

36.n/base或n/16c[i]n/base或n/16\r\nc[i]解析:字符串的綜合運(yùn)用。

37.5555解析:分析程序執(zhí)行過程,第一次循環(huán)時,j=3,i-5,因?yàn)閟witch(3),所以執(zhí)行case3,調(diào)用P(a[-i)=p(a[4])=P(5),輸出5;第二次循環(huán)時,j=2,i=4,因?yàn)閟witch(2),所以執(zhí)行case2,調(diào)用P(s[i++])=P(a[4])=P(5),輸出5,之后i的n等于5。

38.軟件危機(jī)軟件危機(jī)

39.非0非0解析:邏輯運(yùn)算中,非0表示邏輯“真”,用。表示邏輯“假”。

40.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。

41.D本題考查數(shù)組和字符串的賦值。選項(xiàng)A)中數(shù)組s沒有明確其大小就賦值是錯誤的。選項(xiàng)B)中不能有大括號,選項(xiàng)C)中的寫法應(yīng)該為{\'H\'\'E\'\'L\'\'L\'\'O'!\'}。

42.D解析:結(jié)構(gòu)體變量也有地址,因此可以把它的地址賦值給一個指針變量,然后通過該指針變量來引用結(jié)構(gòu)體的成員,選項(xiàng)A和選項(xiàng)B就是通過指針變量來引用結(jié)構(gòu)體的成員,也可以通過結(jié)構(gòu)體數(shù)組元素的成員引用,而在選項(xiàng)D中stu[3].a(chǎn)ge不正確,因?yàn)榻Y(jié)構(gòu)體數(shù)組stu共有三個元素,其下標(biāo)應(yīng)該為0,1,2。

43.B解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。

44.C

45.D解析:時間復(fù)雜度是指一個算法執(zhí)行時間的相對度量;空間復(fù)雜度是指算法在運(yùn)行過程中臨時占用所需存儲空間大小的度量。人們都希望選擇一個既省存儲空間、又省執(zhí)行時間的算法。然而,有時為了加快算法的運(yùn)行速度,不得不增加空間開銷;有時為了能有效地存儲算法和數(shù)據(jù),又不得不犧牲運(yùn)行時間。時間和空間的效率往往是一對矛盾,很難做到兩全。但是,這不適用于所有的情況,也就是說時間復(fù)雜度和空間復(fù)雜度之間雖然經(jīng)常矛盾,但是二者不存在必然的聯(lián)系。因此,選項(xiàng)A、B、C的說法都是錯誤的。故本題的正確答案是D。

46.C

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

48.D解析:耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個定性標(biāo)準(zhǔn),是互相關(guān)聯(lián)的。在程序設(shè)計(jì)中,各模塊間的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚、低耦合,有利于提高模塊的獨(dú)立性。

49.D解析:C語言規(guī)定可以對字符指針變量直接賦字符串常量,但不能給字符數(shù)組直接賦字符串常量,對字符數(shù)組賦字符串常量應(yīng)使用的是strcpy函數(shù)。正確答案為選項(xiàng)D。

50.C解析:在位運(yùn)算中,操作數(shù)每右移兩位,相當(dāng)于在操作數(shù)的左側(cè)添0,最右面的兩位被移出,即操作數(shù)除以4。

51.C

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

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

54.A解析:在C語言中,合法標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下畫線3種字符組成,且第一個字符必須為字母或下畫線。C語言的標(biāo)識符可以分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符。選項(xiàng)B)和C)中的橫線以及點(diǎn)都不合法,選項(xiàng)D)中的case為C語言關(guān)鍵字。

55.D解析:本題主要考查for循環(huán)語句的嵌套。外層主循環(huán)執(zhí)行了3次,嵌套的循環(huán)語句每輪執(zhí)行2次,每次輸出i+j的值,推出嵌套循環(huán)語句后換行。

56.C解析:本題通過算術(shù)表達(dá)式的運(yùn)算實(shí)現(xiàn)小數(shù)保保留兩位并四舍五入的操作,其中(int)(x*100+0.5)是指將(x*100+0.5)的值強(qiáng)制轉(zhuǎn)換成整型。

57.D

58.B解析:算術(shù)運(yùn)行符“/”、“%”的優(yōu)先級處于同一級,并且兩者的結(jié)合性都是從左到右。所以算術(shù)表達(dá)式運(yùn)算過程為:a=25/10%9=2%9=2:當(dāng)邏輯運(yùn)算符“&&”兩邊的值都是非零時,邏輯表達(dá)式的值才為真(即為1)。所以b=2&&(-1)=1。

59.B在計(jì)算機(jī)中,算法被定義為對一個問題求解步驟的一種描述,是求解問題的方法,它是指令的有限序列,其中每條指令表示一個或者多個操作。算法具有有窮性、確定性、可行性、輸入和輸出五大特點(diǎn)。

在本題中,選項(xiàng)A、C、D的說法明顯偏離了算法的定義,因此正確答案選B。

60.B解析:在函數(shù)sub()的函數(shù)體中定義了一個靜態(tài)存儲變量a,a的值在函數(shù)調(diào)用完畢返回主函數(shù)后仍存在。第一次調(diào)用sub(i),a=a+m=4+2=6,返回值為6。第二次調(diào)用sub(j),a=a+m=6+1=7,返回值為7,最后輸出k的值為7。

61.Ac語言中標(biāo)識符由字母、下劃線或數(shù)字組成,且開頭必須是字母或下劃線。另外,關(guān)鍵字不能作為標(biāo)識符。B)選項(xiàng)中以數(shù)字8開頭,所以錯誤。c)與D)中用的是關(guān)鍵字void與unsigned,因此錯誤。故本題答案為A)。

62.D本題中exch函數(shù)是用數(shù)組中的第6個元素對第1個元素進(jìn)行賦值,所以數(shù)組的值應(yīng)該為678910。

63.D

64.B\n根據(jù)判斷本題共進(jìn)行三次for循環(huán),第一次執(zhí)行for循環(huán),p[1][0]=p[1][0]-1=3;第2次執(zhí)行for循環(huán),p[1][1]=p[1][1]-1=4;第3次執(zhí)行for循環(huán),[1][2]=1,最后輸出的是a[o][1]+a[1][1]+a[1][2]=2+4+1=7。

\n

65.C

66.Astrlen()函數(shù)在計(jì)算字符串長度時,遇到結(jié)束標(biāo)識為止,且長度不包括結(jié)束標(biāo)識。本題中字符串,從第一個字符開始,遇到第一個結(jié)束標(biāo)識‘\0’為止,注意‘\0’不占字符串長度,所以字符串長度為7。因此A選項(xiàng)正確。

67.Ac語言中的非執(zhí)行語句不會被編譯,不會生成二進(jìn)制的機(jī)器指令,因此A)選項(xiàng)錯誤。由C語言構(gòu)成的指令序列稱為C源程序,c源程序經(jīng)過c語言編譯程序編譯之后生成一個后綴為obj的二進(jìn)制文件(稱為目標(biāo)文件);最后要由“連接程序”把此.0bj文件與c語言提供的各種庫函數(shù)連接起來生成一個后綴為.exe的可執(zhí)行文件。根據(jù)上述分析可知,A)選項(xiàng)敘述錯誤。

68.C”anf(”%c”,&c),輸入的字符,題目中輸入了0,字符0,對應(yīng)于ASCIl碼為48,因此for循環(huán)中,i的范圍從0~5,均小于48,if條件不成立,直接執(zhí)行下一條語句,執(zhí)行語句prinff,因此得到的結(jié)果是0,1,2,3,4。故答案為C選項(xiàng)。

69.A在本題中,程序首先定義了三個整型變量,并將變量k賦值為0,然后開始循環(huán),循環(huán)開始時,變量j的值為20,結(jié)束時,變量j的值為30,每循環(huán)一次,變量j自加1,即循環(huán)10。

當(dāng)j=20,k=0時,“!(k%10)”為真,輸出換行,即循環(huán)開始時,輸出從新的一行開始,執(zhí)行第二重循環(huán),此時的i=2,“!(j%i)”為真,運(yùn)行break語句,即跳出本層循環(huán)(從這里我們可以看出,j如果可以被i整除,則跳出本層循環(huán)),然后判斷i是否不小于j-1,如果是,則輸出此時j的值,否則k自加1。

從程序執(zhí)行的過程來看,這個題目確實(shí)非常復(fù)雜,循環(huán)的次數(shù)太多,但經(jīng)過上面一次循環(huán)過程的分析,我們可以發(fā)現(xiàn),其實(shí)這個程序的作用是找出20~30之間除1和本身外,不能被其他小于本身的數(shù)據(jù)整除的數(shù),并從小到大輸出這樣的數(shù)。這樣就能很容易地得到答案是2329。

70.D軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能,也不是為了評估軟件或改正錯誤,因此本題答案為D)。

71.D

72.A

73.D

74.A黑盒測試方法主要有等價(jià)類劃分、邊界值分析、因果圖、錯誤推測等。白盒測試的主要方法有邏輯驅(qū)動、路徑測試等,主要用于軟件驗(yàn)證。

75.D

76.BA選項(xiàng)說的是偶數(shù),B選項(xiàng)求的是奇數(shù),C選項(xiàng)求的是偶數(shù),而題目求的是奇數(shù)。

77.C在本題中,程序首先定義了一個整型變量k,并賦初值8,然后執(zhí)行switch選擇結(jié)構(gòu)。由于k的初值為8,與程序中給出的選擇結(jié)構(gòu)不匹配,那么只能執(zhí)行default結(jié)構(gòu),即執(zhí)行k+=1,將變量k的值變?yōu)?,執(zhí)行完后,由于沒有break語句,程序接著往下執(zhí)行,執(zhí)行case11結(jié)構(gòu),將變量k的值再加1,然后執(zhí)行break語句,跳出switch選擇結(jié)構(gòu)。此時變量k的值為10,然后執(zhí)行輸出語句輸出k的值。因此,本題程序的最后輸出結(jié)果為10,答案選C。\r\n\r\n\r\n

78.C統(tǒng)計(jì)1~9九個數(shù)中的奇數(shù)和,此題重點(diǎn)考察指向數(shù)組的指針。c語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第i+1個元素。程序運(yùn)行的結(jié)果是l+3+5+7+9=25。1

79.C算術(shù)運(yùn)算符+的優(yōu)先級高于-=.且-=的結(jié)合方向?yàn)樽杂蚁蜃?,所以表達(dá)式x-=x+x可以表示成;=x-(x+x)=10-(10+10)=-10,選擇C。

80.A

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

\n正確:switch(g)

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

\n正確:casel;case2:returnl;

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

\nswitch語句的一般形式如下:

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

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

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

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

\ndefault:語句n+1;

\n}

\n

82.\n\tcharch;

\ninti,m,n;

\ni=0:

\nm=n=strlen(str)-1;//求字符串str長度

\nwhile(i<(n+1)/2)//循環(huán)逆置交換

\n{

\nch=str[i];

\nstr[i]=str[m];

\nstr[m]=ch:

\ni++;

\nm--;

\n}

\n【解析】在fun函數(shù)中,首先求行字符串的長度,然后通過循環(huán)進(jìn)行字符交換。要注意的是,如果字符串長度是奇數(shù),則最中間的元素在逆置前后的位置是沒有改變的。\n2021年湖南省湘潭市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計(jì)方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計(jì)算機(jī)的發(fā)展

2.下列關(guān)于效率的說法不正確的是()

A.效率是一個性能要求,其目標(biāo)應(yīng)該在需求分析時給出

B.提高程序效率的根本途徑在于選擇良好的設(shè)計(jì)方法,數(shù)據(jù)結(jié)構(gòu)與算法

C.效率主要指處理機(jī)時間和存儲器容量兩個方面

D.程序的效率與程序的簡單性無關(guān)

3.有以下結(jié)構(gòu)體說明、變量定義和賦值語句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];則下列scanf函數(shù)調(diào)用語句有錯誤的是()。

A.scanf(“%s”,s[0].name);

B.scanf(“%d”,&s[0].age);

C.scanf(“%c”,&(ps->sex));

D.scanf(“%d”,ps->age);

4.

5.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結(jié)果為()。

cb='b';

k=10;

printf("%X,%o,”,ch,ch,k);

printf("k=%%d\n",k);A.A.因變量類型與格式描述符的類型不匹配,輸出無定值

B.輸出項(xiàng)與格式描述符個數(shù)不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

6.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序運(yùn)行后的輸出結(jié)果是()。A.2B.1C.0D.3

7.有以下程序:

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

A.357B.753C.369D.751

8.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的運(yùn)行結(jié)果是()。A.2B.3C.7D.0

9.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

10.設(shè)有如下定義語句:intm[]={2,4,6,8,10},*k=m;以下選項(xiàng)中,表達(dá)式的值為6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

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

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

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

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

D.不使用指針

12.若x,i,j和k都是int型變量,則執(zhí)行下面表達(dá)式后x的值為()。x=(i=4,j=16,k=32)

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

13.定義無符號整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是A)B)369C)0.369D)A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}

14.

15.下列語句中,()是錯誤的。A.x=x+1;B.x=x+y;C.x+y=x;D.x=4;

16.在Windows環(huán)境下,單擊當(dāng)前窗口中的按鈕“”,其功能是A.將當(dāng)前應(yīng)用程序轉(zhuǎn)為后臺運(yùn)行

B.退出Windows后再關(guān)機(jī)

C.終止當(dāng)前應(yīng)用程序的運(yùn)行

D.退出Windows后重新啟動計(jì)算機(jī)

17.下列有關(guān)圖的遍歷說法中,不正確的是()

A.圖的遍歷必須用遞歸實(shí)現(xiàn)

B.基本遍歷算法兩種:深度遍歷和廣度遍歷

C.有向圖和無向圖都可以進(jìn)行遍歷操作

D.圖的遍歷算法可以執(zhí)行在有回路的圖上

18.設(shè)有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序?yàn)橹鞔鎯Γ琣1,1為第一個元素,其存儲地址為1,每個元素占1個地址空間,則a8,5的地址為()。

A.13B.33C.18D.40

19.設(shè)有以下說明,則不正確的敘述是()。

A.A.arr所占的內(nèi)存長度等于成員c的長度

B.arr的地址和它的各成員的地址都是同一地址

C.arr可以作為函數(shù)參數(shù)

D.不能在定義arr時對它初始化

20.定義下列結(jié)構(gòu)體(聯(lián)合)數(shù)組:structst{charname[15];intage;}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);執(zhí)行語句printf("%d,%C",a[2].a(chǎn)ge,*(a[3].name+2))的輸出結(jié)果為()。A.15,AB.16,HC.16,AD.17,H

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,e+d)*10;

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

}

22.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

23.數(shù)據(jù)的安全性是指保護(hù)數(shù)據(jù)以防止【】用戶的使用造成的數(shù)據(jù)泄密和破壞。

24.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達(dá)式______。

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

main()

{chars[]="abcdef";

s[3]='\0';

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

}

26.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當(dāng)編譯連接通過后,運(yùn)行程序T18時,輸入Thank!,則輸出結(jié)果是【】。

27.閱讀下面語句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

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

printf("\n");}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

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

printf("\n");

}

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

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

31.若從鍵盤輸入58,則以下程序輸出的結(jié)果是【】。

mam()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

32.設(shè)一棵完全二叉樹共有700個結(jié)點(diǎn),則在該二叉樹中有【】個葉子結(jié)點(diǎn)。

33.若給fun函數(shù)的形參s傳送字符串:"abc-6354abc",則函數(shù)的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

34.以下程序從輸入的10個字符串中找出最長的那個串,請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

#defineN10

main()

{charstr[N][81],*sp;

inti;

for(i=0;i<N;i++)gets(str[i]);

sp=str[0];

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

if(strlen(sp)<strlen(str[i]))

【】;

printf("輸出最長的那個串:\n%s\n",sp);

printf("輸出最長的那個串的長度:%d\n",strlen(sp));}

35.【】是數(shù)據(jù)庫設(shè)計(jì)的核心。

36.有下列程序,功能是把輸入的+進(jìn)制長整型數(shù)以+六進(jìn)制的形式輸出,完成程序

#include"stdio.h"

main()

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

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

longn;

scanf("%1d",&n);

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

while(n!=0);

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

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

printf("H\n");}

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

#defineP(a)printf("%d",a)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>l;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

38.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

39.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

三、1.選擇題(20題)41.以下選項(xiàng)中正確的語句組是()。

A.chars[];s="HELLO!";

B.char*s;s={"HELLO!"};

C.chars[10];s="HELLO!";

D.char*s;s="HELLO!";

42.有以下說明和定義語句structstudent{intage;charnum[8];structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;};以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯誤的是

A.(p++)->numB.p->numC.(*p).numD.stu[3].a(chǎn)ge

43.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n".k);}執(zhí)行后的輸出結(jié)果是()。

A.5,5B.5,11C.11,11D.11,5

44.若有定義intx,y;并已正確給變量賦值,則下列選項(xiàng)中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x-y)等價(jià)的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

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

A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大

B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小

C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小

D.上述三種說法都不對

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

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

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

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

48.為了提高軟件模塊的獨(dú)立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合

49.下列選項(xiàng)中正確的語句組是______。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beiiing";

D.char*s;s="Beijing";

50.在位運(yùn)算中,操作數(shù)每右移兩位,其結(jié)果相當(dāng)于()。

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4

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

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

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

A.chars[10]="abcdefg";

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

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

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

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

54.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

55.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序運(yùn)行的結(jié)果是()。

A.234B.432C.23D.4534554334344523

56.設(shè)變量x為float型且已經(jīng)賦值,則以下語句中能夠?qū)中的數(shù)值保留到小數(shù)點(diǎn)后面兩位,并將第三位四舍五入的是_______。

A.x=x*l00+0.5/100.0

B.x=(x*100+O.5)/100

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

57.設(shè)有語句:if(a==1)b=2;c=3;,以下語句中與之等價(jià)的是()。

A.if(a==1){b=2;c=3;}

B.if(a!=1){;}else{b=2;c=3;}

C.if(a=1)c=3;b=2;

D.(a==1)?b=2:a:=a;c=3;

58.下列程序的輸出結(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

59.在計(jì)算機(jī)中,算法是指()

A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法

60.下面程序的輸出結(jié)果是()。#include"stdio.h"intsub(intm){statica=4;a+=m;returna;}voidmain(){inti=2,j=1,k;k=sub(i);k=sub(j);printf("%d",k);}

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

四、選擇題(20題)61.以下選項(xiàng)中,能用作用戶標(biāo)識符的是()。A._0_B.8—8C.voidD.unsigned

62.有以下程序:

#include<stdio.h>

voidexch(intt[])

{t[0]=t[s];}

main()

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

while(i<=4){exch(&x[i]);i++;}

for(i=0;i<5;i++)printf("%dl"x[i]);

printf("\n");

}

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

A.246810

B.13579

C.12345

D.678910

63.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

64.

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

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]一1;

else

p[1][i]=1;)

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

65.

66.若有定義語句:

charS[10]=”1234567\0\0”;則strlen(s)的值是()。

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

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

A.c語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

B.c程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機(jī)器指令文件

C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個文本文件中

D.c語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序

68.有以下程序:執(zhí)行時輸入:0<;回車>;后,則輸出結(jié)果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

69.有如下程序

#include"stdio.h"

main()

{intj,i,k=0;

for(j=20;j<=30;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

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

A.2329B.2923

C.3292D.9232

70.軟件測試的目的是()。

A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤

71.

72.

73.

74.下面屬于黑盒測試方法的是()。

A.邊界值分析B.路徑覆蓋C.語句覆蓋D.邏輯覆蓋

75.

76.當(dāng)把以下四個表達(dá)式用作if語句的控制表達(dá)式時,有一個選項(xiàng)與表達(dá)式(k%2)!=0含義相同,這個選項(xiàng)是()。

A.k%2==0B.k%2==1C.!k%2==1D.都不同

77.若intk=8;則執(zhí)行下列程序后,變量k的正確結(jié)果是

main()

{intk=8;

switch(k)

{case9:k+=1;

case10:k+=1;

default:k+=1;

case11:k+=1;break;

}

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

}

A.12B.1

C.10D.9

78.有以下程序:

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

A.45B.20C.25D.36

79.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。

A.0B.-20C.-10D.10

80.

五、程序改錯題(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。

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

注意:不要改動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.請編一個函數(shù)fun(ohlr*str),該函數(shù)的

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論