2021年湖北省荊州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021年湖北省荊州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021年湖北省荊州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021年湖北省荊州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021年湖北省荊州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年湖北省荊州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是()。

A.循環(huán)隊(duì)列B.棧C.順序表D.循環(huán)鏈表

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

A.A2A3BB.2B4DFC.B4CD7D.B2D4F

3.若以下選項(xiàng)中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。

A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}

B.switcha*b{casel0:x=a+b;default:y=a-b;}

C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}

D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}

4.以下不能將s所指字符串正確復(fù)制到t所指存儲(chǔ)空間的是()A.do{*t++=*s++;}while(*s);

B.for(=0;t[的]=s@];i++);

C.while(*t=*s){t++;s++}

D.for(i=0.j=0;t[i++]=sj++];);.

5.以下不能輸出字符A的語句是(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)()。

A.print[("%c\n",a-32);

B.print[("%d\n",A);

C.printf("%c\n",65);

D.printf("%c\n",B-1);

6.對(duì)于int*pa[5];的描述,()是正確的。

A.pa是一個(gè)指向數(shù)組的指針,所指向的數(shù)組是5個(gè)int型元素

B.pa是一個(gè)指向某數(shù)組中第5個(gè)元素的指針,該元素是int型變量

C.pa是一個(gè)具有5個(gè)元素的指針數(shù)組,每個(gè)元素是一個(gè)int型指針

D.pa[5]表示某數(shù)組的第5個(gè)元素的值

7.下列字符數(shù)組初始化語句中,不正確的是()。A.A.charc[]='goodmorning';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d');

D.charc[]={"ffgoodmorning"};

8.針對(duì)簡單程序設(shè)計(jì),以下敘述的實(shí)施步驟順序正確的是()。

A.確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔

B.編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔

C.整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試

D.確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔

9.判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。

A.'a'<=c1<='Z'

B.(c1>=A)‖c1<=z)

C.('a'=>c1‖("z"<=c1)

D.(c1>='a')&&(c1<='z')

10.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0

11.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

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

A.A.331

B.41

C.2

D.1

12.兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A.耦合度

B.內(nèi)聚度

C.復(fù)雜度

D.數(shù)據(jù)傳輸特性

13.以下程序輸出的結(jié)果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

14.最大容量為n的循環(huán)隊(duì)列,隊(duì)尾指針是rear,隊(duì)頭是front,則隊(duì)空的條件是()。

A.(rear+1)MODn=front

B.rear=front

C.rear+1=front

D.(rear-l)MODn=front

15.設(shè)有以下函數(shù):voidfun(intn,char*s){…}則下面對(duì)函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

16.深度為5的二叉樹至多有_____個(gè)結(jié)點(diǎn)。

A.16B.32C.31D.10

17.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的運(yùn)行結(jié)果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

18.

19.

20.數(shù)組A中,每個(gè)元素的長度為3個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到10,從首地址SA開始連續(xù)存放的存儲(chǔ)器內(nèi),該數(shù)組按行存放,元素A[5][8]的起始地址為()。

A.SA+141B.SA+180C.SA+222D.SA+225

二、2.填空題(20題)21.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

22.常用的黑箱測試有等價(jià)類劃分法、【】和錯(cuò)誤推測法3種。

23.以下程序的輸出是【】。

main()

{

charstrl[]]="Howdoyoudo",*p1=strl;

strcpy(strl+strlen(strl)/2,"esshe");

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

}

24.下列的for語句的循環(huán)次數(shù)為______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

25.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.Of\n",fun((int)fun(a+c,b),a-c));}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運(yùn)行程序,輸入HOWAREYOU。

28.若先后輸入county、side,以下程序的運(yùn)行結(jié)果為【】。

main()

{chars1[40],s2[20];inti=0,j=0;

scanf("%s",s1);

scanf("%s",s2);

while(s1[i]!='\0')i++;

while(s2[j]!='\0')s1[i++]=s2[j++];

s1[i]='\0';

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

}

29.以下程序由終端鍵盤輸入一個(gè)文件名,然后把從終端鍵盤輸入的字符依次存放到該文件中,用#作為結(jié)束輸入的標(biāo)志,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

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

fputc(【】,fp);

fclose(fp);

}

30.已知bead指向一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,鏈表中每個(gè)結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域?yàn)檎?。以下函?shù)求出鏈表中所有連接點(diǎn)數(shù)據(jù)域的和值作為函數(shù)值返回。請(qǐng)?jiān)跈M線處填入正確內(nèi)容。

{intdata;structlink*next;}

main()

{structlink*head;

sam(______);

{stmctlink*p;ints=0;

p=head->next;

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

return(s);}

31.以下程序用于判斷a,b,c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a,b,c輸入三角形三條邊長時(shí),確定a,b,c能構(gòu)成三角形的條件是需同時(shí)滿足三個(gè)條件:a+b>c,a+c>b,b+c>a。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*a.b.c能構(gòu)成三角形*/

elseprinff("NO\n");/*a.b.c不能構(gòu)成三解形*/

}

32.棧的基本運(yùn)算有三種:入棧、退棧和【】。

33.以下程序段用以統(tǒng)計(jì)鏈表中元素的個(gè)數(shù)。其中first指向鏈表第一個(gè)結(jié)點(diǎn),count用來統(tǒng)計(jì)結(jié)點(diǎn)個(gè)數(shù)。請(qǐng)?zhí)羁铡?/p>

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

34.設(shè)有以下定義和語句:

inta[3][2]={1,2,3,4,5},*p[3];

p[0]=a[1];

則*(p[0]+1)所代表的數(shù)組元素是【】。

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

#include"stdio.h"

main()

{chara,b;

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

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

printf("\n");}

36.設(shè)有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

37.若由以下定義,則不移動(dòng)指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

38.一個(gè)類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個(gè)方法提高了軟件的【】。

39.按照邏輯結(jié)構(gòu)分類,數(shù)據(jù)結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),隊(duì)列屬于______。

40.設(shè)有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。

三、1.選擇題(20題)41.用鏈表表示線性表的優(yōu)點(diǎn)是()。

A.便于隨機(jī)存取B.花費(fèi)的存儲(chǔ)空間較順序存儲(chǔ)少C.便于插入和刪除操作D.數(shù)據(jù)元素的物理順序和邏輯順序相同

42.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序運(yùn)行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯(cuò)

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

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

44.相對(duì)于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

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

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

46.在C語言中,形參的默認(rèn)存儲(chǔ)類型是______。

A.autoB.registerC.staticD.extern

47.若變量已正確定義,要求程序段完成求5!的計(jì)算,不能完成此操作的程序段是()。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(1<=5)

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

A.n+1B.n-1C.2nD.n/2

49.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號(hào),姓名,性別,年齡,身份證號(hào)),課程c(課號(hào),課名),選課SC(學(xué)號(hào),課號(hào),成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號(hào),成績B.學(xué)號(hào),成績C.學(xué)號(hào),課號(hào)D.學(xué)號(hào),姓名,成績

50.下列方法中,屬于白盒法設(shè)計(jì)測試用例的方法的是()。

A.錯(cuò)誤推測B.因果圖C.基本路徑測試D.邊界值分析

51.下面說明不正確的是

A.chara[10]="china";

B.chara[10],*p=a;p="china"

C.char*a;a="china";

D.chara[10],*P;P=a="china"

52.設(shè)x,y,z,(均為整型變量,現(xiàn)有如下語句x=y=z=1;t=++x‖++y&&++z;,則執(zhí)行這個(gè)語句后t的值為

A.2B.1C.0D.不定值

53.設(shè)已定義i和k為int類型變量,則以下for循環(huán)語句______。for(i=0;k=-1,k=1;i++,k++)printf("****\n");

A.判斷循環(huán)結(jié)束的條件不合法B.是無限循環(huán)C.循環(huán)一次也不執(zhí)行D.循環(huán)只執(zhí)行一次

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

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

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

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

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

55.設(shè)有以下語句:chara=3,b=6,c;c=ab<<2;則c的二進(jìn)制值是()。

A.11011B.10100C.11100D.11000

56.以下選項(xiàng)中合法的實(shí)型常數(shù)是

A.5E2.0B.E-3C.2E0D.1.3E

57.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

58.下列選項(xiàng)中,不屬于模塊間耦合的是()

A.數(shù)據(jù)耦合B.同構(gòu)耦合C.異構(gòu)耦合D.公用耦合

59.若輸入000051,下列程序的運(yùn)行結(jié)果為______。main(){unsignedinta;scanf("%o",&a);printf("%o\n",getbits(a));}getbits(value)unsignedintvalue;{inti,j,m,n;unsignedintz,a,q;z=0;for(i=1;i<=15;i+=2){q=1;for(j=1;j<=(16-i-1)/2;j++)q=q*2;a=value>>(16-i);a=a<<15;a=a>>15;z=z+a*q;}return(z);}

A.6B.51C.51D.10

60.下面程序段的運(yùn)行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

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

四、選擇題(20題)61.若有以下說明和定義,以下敘述中錯(cuò)誤的是(

)。uniondt{

int

a;char

b;double

c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化

62.第

13

設(shè)有程序段

intk=10;

while(k=0)k=k-1;

則下面描述中正確的是A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

63.

64.下列關(guān)于C語言文件的敘述中正確的是()。A.文件睦數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

C.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件

D.文件由字符序列組成,其類型只能是文本文件

65.

66.

67.有以下程序:

若要按以下形式輸出數(shù)組右上半三角:

則在程序下劃線處應(yīng)填人的語句是()。

A.i-1B.i+1C.iD.4-i

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

69.三種基本結(jié)構(gòu)中,能簡化大量程序代碼的是()。

A.順序結(jié)構(gòu)B.分支結(jié)構(gòu)C.選擇結(jié)構(gòu)D.重復(fù)結(jié)構(gòu)

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

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

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

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

71.

72.

73.

74.

下列程序的運(yùn)行結(jié)果為()。

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

main

{inta=2,b=3,C=1,d=3,t:

printf("%d\n",(MAX(a+h,c+d))*100):

}

A.500B.5C.4D.400

75.

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

)。A.預(yù)處理命令行必須位于源文件的開頭B.宏替換可以出現(xiàn)在任何一行的開始部位C.宏替換的作用一直持續(xù)到源文件結(jié)尾D.宏替換不占有程序的運(yùn)行時(shí)間

77.

78.設(shè)有定義:“char*c;”,以下選項(xiàng)中能夠使字符型指針c正確指向一個(gè)字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

79.有三個(gè)關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

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

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

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc的功能是:先將字符串s中的字符按順序存放到t中,然后把S中的字符按正序連接到t的后面。例如,當(dāng)s中的字符串為WXYZ時(shí),則t中的字符串應(yīng)為WXYZWXYZ。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

printf("Theresultis:%s\n",t);

}

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

參考答案

1.B解析:循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu),隊(duì)列是以先進(jìn)先出為原則組織數(shù)據(jù)的一種特殊線性表,選項(xiàng)A錯(cuò)誤;棧是以先進(jìn)后出為原則組織數(shù)據(jù)的一種特殊線性表,選項(xiàng)B正確;順序表是線性表的順序存儲(chǔ)結(jié)構(gòu),選項(xiàng)C錯(cuò)誤;循環(huán)鏈表是一般線性表的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),選項(xiàng)D錯(cuò)誤。

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

3.D選項(xiàng)A,當(dāng)cl和c2相等時(shí),不成立;選項(xiàng)B,a*b要用括號(hào)括起來;選項(xiàng)C,case與后面的數(shù)字用空格隔開。

4.A[解析]do{*t++=*s++;}while(*s);不能因?yàn)楫?dāng)*s=^0'時(shí),while(*s)跳出循環(huán),這樣字符串結(jié)束標(biāo)志“0沒有復(fù)制給*t,造成*t不完整。\u3000\u3000注意,*t++=*s++是先執(zhí)行t=*s,然后才進(jìn)行t=t+1.s=s+1.B),C),D)三項(xiàng)都能將“0復(fù)制過去。

5.B在C語言中%d表示輸出整型數(shù)值,所以答案為B。

6.A

7.A本題考查兩個(gè)概念:①用單引號(hào)括起來的一個(gè)字符常量只能存放一個(gè)字符;②℃語言中沒有字符串變量,只能用字符數(shù)組來存儲(chǔ)字符串。

8.A\nC語言中程序中的步驟實(shí)現(xiàn)為:先確定程序中的算法和數(shù)據(jù)結(jié)構(gòu),然后進(jìn)行程序的編碼,再進(jìn)行對(duì)程序的調(diào)試,最后進(jìn)行文檔的整理和記錄。使用這種步驟可以方便程序的編寫以及在完成后提高代碼的重用性。

\n

9.D解析:C語言規(guī)定,字符常量在程序中要用單引號(hào)括起來。判斷c1是否為小寫字母的充要條件c1>='a'和c1<='z',用邏輯與(&&)來表示。A選項(xiàng)的這種形式在C語言中沒有,所以選項(xiàng)D)正確.

10.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時(shí)結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。

11.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或?yàn)椤凹佟睍r(shí)執(zhí)行指定的動(dòng)作,由if引導(dǎo)條件為“真”時(shí)執(zhí)行的操作;由else引導(dǎo)條件為“假”時(shí)執(zhí)行的操作。else語句要與上面最近的if語句進(jìn)行匹配,如果要嵌套調(diào)用if-else語句,需要將嵌套部分用{}括起來,避免程序報(bào)錯(cuò)。題目中給出了一個(gè)if語句和一個(gè)if-else語句,if-else語句為第一個(gè)if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進(jìn)行x++操作。x的初始值為1,輸出結(jié)果為1。

12.A解析:本題考核模塊獨(dú)立性的評(píng)價(jià)。評(píng)價(jià)模塊獨(dú)立性的主要標(biāo)準(zhǔn)有兩個(gè);一是模塊之間的耦合,它表明兩個(gè)模塊之間互相獨(dú)立的程度,也可以說是兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度(所以,本題的正確答案為選項(xiàng)A);二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨(dú)立,而要求模塊的內(nèi)聚程度盡量地高。

13.D當(dāng)k=1時(shí),引用的是二維數(shù)組元素w[1][1],值為字符串“FGH”;當(dāng)k=2時(shí),引用的是數(shù)組元素w[2][2],即字符串“KL”;當(dāng)k=3時(shí),結(jié)束程序的執(zhí)行。注意:字符串?dāng)?shù)組的定義。

14.B

15.A函數(shù)指針的定義格式為函數(shù)類型(*指針變量名)(形參列表);函數(shù)名和數(shù)組名一樣代表了函數(shù)代碼的首地址,因此在賦值時(shí),直接將函數(shù)指針指向函數(shù)名就行了。所以選項(xiàng)A正確。

16.C

17.A語句“pc=ch;”使得指針變量pc指向字符數(shù)組ch的首地址,即指向字符‘u’。而“pc+5”指向的是指針向后移動(dòng)5位所指的字符,即指向字符‘z’,所以輸出的“*(pc+5)”的值為‘z’。故本題答案為A選項(xiàng)。

18.D

19.B

20.C

21.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹:并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時(shí),仍然光遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹。

22.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價(jià)類劃分、邊界值分析法和錯(cuò)誤推測法3種。

23.HowdoessheHowdoesshe解析:strcpy(strl,s1):字符串拷貝函數(shù),作用是將字符串s1拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str的長度,函數(shù)的值為字符串中實(shí)際長度,不包括\'\\0\'在內(nèi)。本題中strlen(strl)的值為13,則strcpy(strl+strlen(strl)/2,'esshe');相當(dāng)于strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe。

24.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時(shí)循環(huán)6次。

25.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個(gè)表達(dá)式前面有一個(gè)邏輯運(yùn)算符!,表示反操作,所以整個(gè)語句的值應(yīng)當(dāng)為false,即為0。

26.本題考查函數(shù)的綜合知識(shí)。首先,我們可以利用強(qiáng)制轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符,將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。

本題可按部就班地逐步運(yùn)算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

27.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符中,則不能使用scanf()數(shù),所以本題中輸入空格就返回了'\\0\\,s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。

28.countryside

29.fopen(fname"w")chfopen(fname,'w')\r\nch解析:數(shù)組fname用來存放終端輸入的一個(gè)文件的文件名;文件使用方式'w'是為寫而打開文本文件。若文件不存在,系統(tǒng)將用在fopen調(diào)用中以指定的文件名建立一個(gè)新文件;若存在,則覆蓋原有內(nèi)容;fputs(ch,fp)的功能是將字符ch寫到文件指針fp所指的文件中去。

30.

31.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:根據(jù)構(gòu)成三角形的條件:兩邊之和大于第三邊,得出空格應(yīng)該填(a+b>c)&&(a+c>b)&&(b+c>a)或與其等價(jià)的形式。

32.讀棧頂元素讀棧頂元素解析:棧的基本運(yùn)算有三種:入棧、退棧和讀棧頂元素。

入棧運(yùn)算是指在棧頂位置插入一個(gè)新元素。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將棧頂指針進(jìn)一(即top加1),然后將新元素插入到棧頂指針指向的位置。

退棧運(yùn)算是指取出棧頂元素并賦給一個(gè)指定的變量。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將棧頂元素(棧頂指針指向的元素)賦給一個(gè)指定的變量,然后將棧頂指針退一(即top減1)。

讀棧頂元素是指將棧頂元素賦給一個(gè)指定的變量。這個(gè)運(yùn)算不刪除棧頂元素,只是將它的值賦給一個(gè)變量。

33.p!=NULLcount++(*p).next

34.a[1][1]a[1][1]解析:p是一個(gè)指針數(shù)組,p[0]指向數(shù)組a[1][0]。*(p[0]+1)代表數(shù)組a[1][1]。

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

36.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個(gè)知識(shí)點(diǎn):①在c語言中,字符型數(shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上字符串結(jié)束標(biāo)識(shí)符'\\0',所以題中數(shù)組str有6個(gè)元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

37.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點(diǎn)是通過指針引用數(shù)組元素。98是數(shù)組w的第5個(gè)元素(最開始的為第0個(gè)),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動(dòng)指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。

38.可重用性繼承的優(yōu)點(diǎn):相似的對(duì)象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。

39.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:隊(duì)列有且只有一個(gè)根結(jié)點(diǎn),而且每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件,滿足線性結(jié)構(gòu)的條件,所以屬于線性結(jié)構(gòu)。

40.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過程為:k=B*20=(A+3)*20=(2+3)*20=100。

41.C【解析】在鏈表中因?yàn)槌舜娣艛?shù)據(jù)元素之外,還要存放指針,所以鏈表花費(fèi)的存儲(chǔ)空間要比順序表還要多,在插入和刪除數(shù)據(jù)元素時(shí),只需要移動(dòng)相應(yīng)的記錄指針即可,在鏈表中,數(shù)據(jù)的物理結(jié)構(gòu)與邏輯結(jié)構(gòu)不一定相同,因?yàn)槭强恐羔榿韺?shí)現(xiàn)對(duì)數(shù)據(jù)的指定的,所以不能進(jìn)行隨機(jī)存取。

42.A解析:在C語言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)為0。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合愿意。

43.D解析:本題主要考查自加(++)、自減(--)運(yùn)算符的使用。“++i,--i”在使用i之前,先使i的值加1或者減1,然后再使用i此時(shí)的值參與運(yùn)算;“i++,i--”是在使用i參與表達(dá)式運(yùn)算之后,再使i的值加1或者減1。本題中--a和++b是先執(zhí)行a減1和b加1操作,再輸出表達(dá)式的值。

44.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨(dú)立的,因此相對(duì)于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個(gè)缺點(diǎn),數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點(diǎn),人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點(diǎn)。

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

46.A解析:如果定義變量時(shí)沒有聲明變量的存儲(chǔ)類型,則默認(rèn)為auto型。

47.B解析:選項(xiàng)B中for循環(huán)了5次,而每次循環(huán)的時(shí)候,都將p的值重新賦值為1后,再乘以當(dāng)前數(shù)字i,最后的結(jié)果為5,顯然不是5!的值,同樣的分析可知選項(xiàng)A、選項(xiàng)C和選項(xiàng)D計(jì)算的都是5!。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

48.A解析:對(duì)任何一棵二叉樹T,如果其葉子節(jié)點(diǎn)數(shù)為n0,度為2的節(jié)點(diǎn)數(shù)為n2,則n0=n2+1,即葉子節(jié)點(diǎn)數(shù)總是比度為2的節(jié)點(diǎn)數(shù)多1。

49.C學(xué)號(hào)是學(xué)生表S的主鍵,課號(hào)是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個(gè)表能夠直接聯(lián)系且能唯一定義的學(xué)號(hào)和課號(hào),所以選擇C項(xiàng)。

50.CC)【解析】白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。

51.D解析:C語言中操作一個(gè)字符串常量的方法有:①將字符串常量存放在一個(gè)字符數(shù)組之中;②用字符指針指向字符串,然后通過字符指針來訪問字符串存儲(chǔ)區(qū)域。當(dāng)字符串常量在表達(dá)式中出現(xiàn)時(shí),根據(jù)數(shù)組的類型轉(zhuǎn)換規(guī)則,將其轉(zhuǎn)換成字符指針。

本題D)項(xiàng)中錯(cuò)誤的關(guān)鍵是對(duì)數(shù)組初始化時(shí),可以在變量定義時(shí)整體賦初值,但不能在賦值語句中整體賦值。

52.B解析:邏輯與(&&)優(yōu)先于邏輯或(‖)優(yōu)先于賦值運(yùn)算符。由于邏輯運(yùn)算符的結(jié)果為邏輯值,真為1,假為0,題目中的邏輯值為真。

53.B解析:本題定義了一個(gè)for循環(huán),循環(huán)變量是i,但由于本題并沒有設(shè)置循環(huán)條件,所以循環(huán)的條件永遠(yuǎn)默認(rèn)為真,即無限次執(zhí)行循環(huán)。

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

55.A解析:“<<”是C語言中規(guī)定的左移運(yùn)算符,例如,a=a<<2,是將a的二進(jìn)制數(shù)左移兩位,左移一位相當(dāng)于該數(shù)乘以2,左移兩位相當(dāng)于該數(shù)乘以2的2次方;“^”是異或運(yùn)算符,所以,c的二進(jìn)制值應(yīng)為00011011。

56.C解析:在C語言中,實(shí)數(shù)有兩種表示形式:十進(jìn)制數(shù)形式與指數(shù)形式。

一般形式的實(shí)數(shù):小數(shù)形式的實(shí)數(shù)由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成(必須要有小數(shù)點(diǎn)),

指數(shù)形式的小數(shù);指數(shù)形式的實(shí)數(shù)由尾數(shù)部分、e(E)和指數(shù)部分組成(字母e或E的前后必須要有數(shù)字,且其后面的指數(shù)必須為整數(shù))。

選項(xiàng)A中,5E2.0中E后面的2.0不是整數(shù);選項(xiàng)B中,E前面沒有數(shù)字:選項(xiàng)D中,E后面沒有數(shù)字。最終可以判斷選項(xiàng)C正確。

57.D解析:20世紀(jì)70年代以來,提出了許多軟件設(shè)計(jì)方法,主要有①逐步求精:對(duì)復(fù)雜的問題,應(yīng)設(shè)計(jì)一些子目標(biāo)作過渡,逐步細(xì)化;②自頂向下:程序設(shè)計(jì)時(shí)應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開始就過多追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計(jì),逐步使問題具體化;⑧模塊化:一個(gè)復(fù)雜問題,肯定是由若干稍簡單的問題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo),把每個(gè)小目標(biāo)稱為一個(gè)模塊,而可復(fù)用是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)優(yōu)點(diǎn)。

58.C解析:模塊之間的耦合程度反映了模塊的獨(dú)立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強(qiáng),可以將其分成5級(jí),分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項(xiàng)C),沒有這種耦合方式。注意:評(píng)價(jià)模塊獨(dú)立性的主要標(biāo)準(zhǔn),以及對(duì)它們的定義和分類。

59.A

60.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個(gè)字符串,然后將指針變量p加3,即使其指向字符串的第四個(gè)元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個(gè)十進(jìn)制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。

strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。

strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個(gè)數(shù)。

那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個(gè)數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。

61.C浮點(diǎn)型占8個(gè)字節(jié),整型占4個(gè)字節(jié),當(dāng)把整型數(shù)據(jù)用浮點(diǎn)型格式輸出時(shí),結(jié)果為0.000000

62.C本題中,首先將0賦給k,表達(dá)式變?yōu)?,跳出循環(huán),沒有執(zhí)行循環(huán)體語句。解答本題的關(guān)鍵是掌握while語句。

63.C

64.A文件有二進(jìn)制文件和文本文件,里面的數(shù)據(jù)與類型無關(guān),所以選擇A)。

65.B

66.B

67.C此題中嵌套了兩個(gè)for語句,第一個(gè)用來輸出空格,第二個(gè)用來輸出數(shù)字。如此類型的輸出某種格式的考題,一般是采用多重循環(huán)來解決,需要考生找出輸出數(shù)據(jù)的特點(diǎn),并用相應(yīng)的數(shù)學(xué)公式表示出來。

68.A涵數(shù)返回的結(jié)構(gòu)體為在涵數(shù)里賦值的結(jié)構(gòu)體,所以選擇A)。

69.D重復(fù)結(jié)構(gòu)也稱為循環(huán)結(jié)構(gòu),它根據(jù)給定的條件,判斷是否需要重復(fù)執(zhí)行某一相同或類似的程序段,這種可以簡化大量的程序行。

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

71.A

72.C

73.C

74.A

\n本題考查帶參數(shù)宏的定義,運(yùn)算符:(x)>(y)?(x):(y)當(dāng)表達(dá)式為真時(shí)輸出X,否則輸出Y,調(diào)用(MAX(a+b,c+d))*100時(shí),(a+b=5)>(c+d=4),輸出a+b=5,所以x=5*100。

\n

75.D

76.AC語言中對(duì)于預(yù)處理命令行的位置沒有明確的規(guī)定。通常,預(yù)處理命令位于源文件的開頭,也可以寫在函數(shù)與函數(shù)之間;不能在一行上寫多條預(yù)處理命令:宏名一般習(xí)慣用大寫字母表示,以便與變量名相區(qū)別,但這并非規(guī)定,也可用小寫字母。

77.B

78.A選項(xiàng)B是從鍵盤上輸入字符串,選項(xiàng)C是接收字符,選項(xiàng)D不正確。

79.D\n兩個(gè)相同結(jié)構(gòu)關(guān)系的并是由屬于這兩個(gè)關(guān)系的元組組成的集合。

\n

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

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。81.\n\t錯(cuò)誤:t[i]=s[l];

\n正確:t[i]=s[i];

\n【解析】函數(shù)proc首先要實(shí)現(xiàn)將數(shù)組s中的元素順序放在數(shù)組t中,即數(shù)組t中下標(biāo)為i的元素在數(shù)組S中下標(biāo)也為i,因此“t[i]=s[s1];”應(yīng)改為“t[i]=s[i];”。\n

82.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為?;騇-1或N-1,則它一定是周邊元素*/7sum=sum+a[i][j];/*將周邊元素相加*/8returnsum;9}本題采用逐一判斷的方式求數(shù)組周邊元素和。二維數(shù)組周邊元素的規(guī)律是,其兩個(gè)下標(biāo)中一定有一個(gè)是0或M-1或N-1。程序中循環(huán)語句用來控制數(shù)組的行和列,條件語句用來判斷數(shù)組元素是否為周邊元素。</n;j++)</m;i++)</n;j++)</m;i++)2021年湖北省荊州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是()。

A.循環(huán)隊(duì)列B.棧C.順序表D.循環(huán)鏈表

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

A.A2A3BB.2B4DFC.B4CD7D.B2D4F

3.若以下選項(xiàng)中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。

A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}

B.switcha*b{casel0:x=a+b;default:y=a-b;}

C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}

D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}

4.以下不能將s所指字符串正確復(fù)制到t所指存儲(chǔ)空間的是()A.do{*t++=*s++;}while(*s);

B.for(=0;t[的]=s@];i++);

C.while(*t=*s){t++;s++}

D.for(i=0.j=0;t[i++]=sj++];);.

5.以下不能輸出字符A的語句是(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)()。

A.print[("%c\n",a-32);

B.print[("%d\n",A);

C.printf("%c\n",65);

D.printf("%c\n",B-1);

6.對(duì)于int*pa[5];的描述,()是正確的。

A.pa是一個(gè)指向數(shù)組的指針,所指向的數(shù)組是5個(gè)int型元素

B.pa是一個(gè)指向某數(shù)組中第5個(gè)元素的指針,該元素是int型變量

C.pa是一個(gè)具有5個(gè)元素的指針數(shù)組,每個(gè)元素是一個(gè)int型指針

D.pa[5]表示某數(shù)組的第5個(gè)元素的值

7.下列字符數(shù)組初始化語句中,不正確的是()。A.A.charc[]='goodmorning';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d');

D.charc[]={"ffgoodmorning"};

8.針對(duì)簡單程序設(shè)計(jì),以下敘述的實(shí)施步驟順序正確的是()。

A.確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔

B.編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔

C.整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試

D.確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔

9.判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。

A.'a'<=c1<='Z'

B.(c1>=A)‖c1<=z)

C.('a'=>c1‖("z"<=c1)

D.(c1>='a')&&(c1<='z')

10.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0

11.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

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

A.A.331

B.41

C.2

D.1

12.兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A.耦合度

B.內(nèi)聚度

C.復(fù)雜度

D.數(shù)據(jù)傳輸特性

13.以下程序輸出的結(jié)果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

14.最大容量為n的循環(huán)隊(duì)列,隊(duì)尾指針是rear,隊(duì)頭是front,則隊(duì)空的條件是()。

A.(rear+1)MODn=front

B.rear=front

C.rear+1=front

D.(rear-l)MODn=front

15.設(shè)有以下函數(shù):voidfun(intn,char*s){…}則下面對(duì)函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

16.深度為5的二叉樹至多有_____個(gè)結(jié)點(diǎn)。

A.16B.32C.31D.10

17.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的運(yùn)行結(jié)果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

18.

19.

20.數(shù)組A中,每個(gè)元素的長度為3個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到10,從首地址SA開始連續(xù)存放的存儲(chǔ)器內(nèi),該數(shù)組按行存放,元素A[5][8]的起始地址為()。

A.SA+141B.SA+180C.SA+222D.SA+225

二、2.填空題(20題)21.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

22.常用的黑箱測試有等價(jià)類劃分法、【】和錯(cuò)誤推測法3種。

23.以下程序的輸出是【】。

main()

{

charstrl[]]="Howdoyoudo",*p1=strl;

strcpy(strl+strlen(strl)/2,"esshe");

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

}

24.下列的for語句的循環(huán)次數(shù)為______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

25.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.Of\n",fun((int)fun(a+c,b),a-c));}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運(yùn)行程序,輸入HOWAREYOU。

28.若先后輸入county、side,以下程序的運(yùn)行結(jié)果為【】。

main()

{chars1[40],s2[20];inti=0,j=0;

scanf("%s",s1);

scanf("%s",s2);

while(s1[i]!='\0')i++;

while(s2[j]!='\0')s1[i++]=s2[j++];

s1[i]='\0';

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

}

29.以下程序由終端鍵盤輸入一個(gè)文件名,然后把從終端鍵盤輸入的字符依次存放到該文件中,用#作為結(jié)束輸入的標(biāo)志,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

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

fputc(【】,fp);

fclose(fp);

}

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

{intdata;structlink*next;}

main()

{structlink*head;

sam(______);

{stmctlink*p;ints=0;

p=head->next;

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

return(s);}

31.以下程序用于判斷a,b,c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a,b,c輸入三角形三條邊長時(shí),確定a,b,c能構(gòu)成三角形的條件是需同時(shí)滿足三個(gè)條件:a+b>c,a+c>b,b+c>a。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*a.b.c能構(gòu)成三角形*/

elseprinff("NO\n");/*a.b.c不能構(gòu)成三解形*/

}

32.棧的基本運(yùn)算有三種:入棧、退棧和【】。

33.以下程序段用以統(tǒng)計(jì)鏈表中元素的個(gè)數(shù)。其中first指向鏈表第一個(gè)結(jié)點(diǎn),count用來統(tǒng)計(jì)結(jié)點(diǎn)個(gè)數(shù)。請(qǐng)?zhí)羁铡?/p>

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

34.設(shè)有以下定義和語句:

inta[3][2]={1,2,3,4,5},*p[3];

p[0]=a[1];

則*(p[0]+1)所代表的數(shù)組元素是【】。

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

#include"stdio.h"

main()

{chara,b;

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

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

printf("\n");}

36.設(shè)有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

37.若由以下定義,則不移動(dòng)指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

38.一個(gè)類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個(gè)方法提高了軟件的【】。

39.按照邏輯結(jié)構(gòu)分類,數(shù)據(jù)結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),隊(duì)列屬于______。

40.設(shè)有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。

三、1.選擇題(20題)41.用鏈表表示線性表的優(yōu)點(diǎn)是()。

A.便于隨機(jī)存取B.花費(fèi)的存儲(chǔ)空間較順序存儲(chǔ)少C.便于插入和刪除操作D.數(shù)據(jù)元素的物理順序和邏輯順序相同

42.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序運(yùn)行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯(cuò)

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

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

44.相對(duì)于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

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

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

46.在C語言中,形參的默認(rèn)存儲(chǔ)類型是______。

A.autoB.registerC.staticD.extern

47.若變量已正確定義,要求程序段完成求5!的計(jì)算,不能完成此操作的程序段是()。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(1<=5)

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

A.n+1B.n-1C.2nD.n/2

49.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號(hào),姓名,性別,年齡,身份證號(hào)),課程c(課號(hào),課名),選課SC(學(xué)號(hào),課號(hào),成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號(hào),成績B.學(xué)號(hào),成績C.學(xué)號(hào),課號(hào)D.學(xué)號(hào),姓名,成績

50.下列方法中,屬于白盒法設(shè)計(jì)測試用例的方法的是()。

A.錯(cuò)誤推測B.因果圖C.基本路徑測試D.邊界值分析

51.下面說明不正確的是

A.chara[10]="china";

B.chara[10],*p=a;p="china"

C.char*a;a="china";

D.chara[10],*P;P=a="china"

52.設(shè)x,y,z,(均為整型變量,現(xiàn)有如下語句x=y=z=1;t=++x‖++y&&++z;,則執(zhí)行這個(gè)語句后t的值為

A.2B.1C.0D.不定值

53.設(shè)已定義i和k為int類型變量,則以下for循環(huán)語句______。for(i=0;k=-1,k=1;i++,k++)printf("****\n");

A.判斷循環(huán)結(jié)束的條件不合法B.是無限循環(huán)C.循環(huán)一次也不執(zhí)行D.循環(huán)只執(zhí)行一次

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

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

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

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

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

55.設(shè)有以下語句:chara=3,b=6,c;c=ab<<2;則c的二進(jìn)制值是()。

A.11011B.10100C.11100D.11000

56.以下選項(xiàng)中合法的實(shí)型常數(shù)是

A.5E2.0B.E-3C.2E0D.1.3E

57.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

58.下列選項(xiàng)中,不屬于模塊間耦合的是()

A.數(shù)據(jù)耦合B.同構(gòu)耦合C.異構(gòu)耦合D.公用耦合

59.若輸入000051,下列程序的運(yùn)行結(jié)果為______。main(){unsignedinta;scanf("%o",&a);printf("%o\n",getbits(a));}getbits(value)unsignedintvalue;{inti,j,m,n;unsignedintz,a,q;z=0;for(i=1;i<=15;i+=2){q=1;for(j=1;j<=(16-i-1)/2;j++)q=q*2;a=value>>(16-i);a=a<<15;a=a>>15;z=z+a*q;}return(z);}

A.6B.51C.51D.10

60.下面程序段的運(yùn)行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

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

四、選擇題(20題)61.若有以下說明和定義,以下敘述中錯(cuò)誤的是(

)。uniondt{

int

a;char

b;double

c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化

62.第

13

設(shè)有程序段

intk=10;

while(k=0)k=k-1;

則下面描述中正確的是A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

63.

64.下列關(guān)于C語言文件的敘述中正確的是()。A.文件睦數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

C.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件

D.文件由字符序列組成,其類型只能是文本文件

65.

66.

67.有以下程序:

若要按以下形式輸出數(shù)組右上半三角:

則在程序下劃線處應(yīng)填人的語句是()。

A.i-1B.i+1C.iD.4-i

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

69.三種基本結(jié)構(gòu)中,能簡化大量程序代碼的是()。

A.順序結(jié)構(gòu)B.分支結(jié)構(gòu)C.選擇結(jié)構(gòu)D.重復(fù)結(jié)構(gòu)

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

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

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

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

71.

72.

73.

74.

下列程序的運(yùn)行結(jié)果為()。

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

main

{inta=2,b=3,C=1,d=3,t:

printf("%d\n",(MAX(a+h,c+d))*100):

}

A.500B.5C.4D.400

75.

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

)。A.預(yù)處理命令行必須位于源文件的開頭B.宏替換可以出現(xiàn)在任何一行的開始部位C.宏替換的作用一直持續(xù)到源文件結(jié)尾D.宏替換不占有程序的運(yùn)行時(shí)間

77.

78.設(shè)有定義:“char*c;”,以下選項(xiàng)中能夠使字符型指針c正確指向一個(gè)字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

79.有三個(gè)關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

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

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

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc的功能是:先將字符串s中的字符按順序存放到t中,然后把S中的字符按正序連接到t的后面。例如,當(dāng)s中的字符串為WXYZ時(shí),則t中的字符串應(yīng)為WXYZWXYZ。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

printf("Theresultis:%s\n",t);

}

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

參考答案

1.B解析:循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu),隊(duì)列是以先進(jìn)先出為原則組織數(shù)據(jù)的一種特殊線性表,選項(xiàng)A錯(cuò)誤;棧是以先進(jìn)后出為原則組織數(shù)據(jù)的一種特殊線性表,選項(xiàng)B正確;順序表是線性表的順序存儲(chǔ)結(jié)構(gòu),選項(xiàng)C錯(cuò)誤;循環(huán)鏈表是一般線性表的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),選項(xiàng)D錯(cuò)誤。

2.D程序首先定義字符變量a并賦初值‘0’,定義字符變量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(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)論