2022年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第1頁
2022年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第2頁
2022年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第3頁
2022年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第4頁
2022年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.設(shè)一棵滿二叉樹共有15個結(jié)點,則在該滿二叉樹中的葉子結(jié)點數(shù)為()

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

3.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

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

A.當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失

B.打開一個已存在的文件并進(jìn)行寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個程序中對文件進(jìn)行寫操作后,必須先關(guān)閉該文件然后再打開才能讀到第1個數(shù)據(jù)

D.C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

5.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inti,S=0;for(i=1;i<10;i++)if(!(i%2)&&!(i%3))s+=i;printf("%d\n",s);}A.4B.39C.45D.6

6.在C語言中,函數(shù)隱含的類型是()

A.autoB.staticC.intD.void

7.有以下程序:#include<stdio.h>intadd_more(inta,intb){returna+b-2;}main(){inti;for(i=0;i<4;i++)printf(“%d”,add_more(i,2));}程序運(yùn)行后的輸出結(jié)果是()。

A.1234B.0123C.5678D.4321

8.在1,2,3,......1000中,有()個數(shù)各位乘積為0。

A.100B.101C.172D.181E.190F.191

9.程序運(yùn)行后的輸出結(jié)果是()。A.10B.30C.0D.64

10.

11.算法能正確地實現(xiàn)預(yù)定功能的特性稱為算法的()。

A.正確性B.易讀性C.健壯性D.高效率

12.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序運(yùn)行時輸入10.23.5并按<Enter>鍵,則輸出結(jié)果為()。

A.x=10.200000y=-3.200000

B.x=6.700000y=-13.700000

C.x=7.000000y=-3.500000

D.x=13.400000y=-7.000000

13.若x,y均定義為int型,z定義為double型,以下不合法的scanf函數(shù)調(diào)用語句是()。A.scanf(“%d%lx,%le”,&x,&y,&z);

B.scanf(“%2d*%d%lf”&x,&y,&z);

C.scanf(“%x%*d%o”,&x,&y);

D.scanf(“%x%o%6.2f”,&x,&y,&z)

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

A.預(yù)處理命令行必須位于C源程序的起始位置

B.在C語言中,預(yù)處理命令行都以“#”開頭

C.每個C程序必須在開頭包含預(yù)處理命令行:#include

D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能

15.棧和隊列的共同特點是()。

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

16.

17.下面關(guān)于串的的敘述中,哪一個是不正確的()。

A.串是字符的有限序列

B.空串是由空格構(gòu)成的串

C.模式匹配是串的一種重要運(yùn)算

D.串既可以采用順序存儲,也可以采用鏈?zhǔn)酱鎯?/p>

18.有以下程序:#include<stdio.h>main(){structSTU{charname[9];charsex;doublescore[2];};structSTUa={“Zhao”,‘m’,85.0,90.0},b={“Qian”,‘f’,95.0,92.0};b=a;printf(“%s,%c,%2.0f,%2.0f\n”,,b.sex,b.score[0],b.score[1]);}程序的運(yùn)行結(jié)果是()。

A.Qian,m,85,90B.Zhao,m,85,90C.Zhao,f,95,92D.Qian,f,95,92

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

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的

B.由于計算機(jī)存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)

C.程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)

D.以上三種說法都不對

20.有以下程序:#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.2B.4C.6D.8

二、2.填空題(20題)21.下面程序的運(yùn)行結(jié)果是【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

22.以下程序的功能是建立一個帶有頭結(jié)點的單向鏈表,鏈表結(jié)點中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時,表示輸入結(jié)束(鏈表頭結(jié)點的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next=′\0;return(ph);}

main()

{structlist*head;head=creatlist();}

23.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,legth=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<length)

while(k<length)

s[j++]=s[k++];

s[j]='\0'

}

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

main()

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

if(b<a&&a<c)t=a;a=C;c=t;

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

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

}

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

main()

{charm;

m='B'+32;printf("%c\n",m);

}

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

main()

{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;

p=a+2;printf("%d\n',(p+2)[3]);

}

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

doublesub(doublex,doubley,doublez)

{y-=1.0;

z=z+x;

returnz;

}

main()

{doublea=2.5,b=9.0;

printf("functionrunningresultis:%6.1f\n",sub(b-a,a,A));

}

28.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

29.若有以下程序:

intf(intx,inty)

{

return(y-x)*x;

}

main()

{

inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

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

30.若有以下程序:

main()

{intp,a=5;

if(p=a!=0)

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

else

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

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

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

main()

{unionEXAMPLE

{struct

{intx;inty;}in;

inta;

intb;

}e:

e.a=1;e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf("%d,%d\n",e.in.x,e.in.y);

}

32.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

33.數(shù)據(jù)庫系統(tǒng)在其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

34.以下程序的定義語句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

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

#include<string.h>

cbar*ss(char*s)

{char*p,t;

p=s+1;t=*s;

while(-p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

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

}

36.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行人隊運(yùn)算。這種情況稱為【】。

37.以下函數(shù)將b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(charaC),charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;)

return(num);

}

38.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

39.測試用例包括輸入值集和【】值集。

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

#include<stdio.h>

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);

}

三、1.選擇題(20題)41.下列二維數(shù)組初始化語句中,不正確的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

42.有下列程序:

fun(intx,inty)

{staticintm=0,i=2;i+=m+1;

m=i+x+y;returnm;

}

main()

{intj=1,m=1,k;

k=fun0,m);printf("%d,"k);

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

}

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

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

43.按條件f對關(guān)系R進(jìn)行選擇,其關(guān)系代數(shù)表達(dá)式為

A.

B.

C.

D.

44.以下程序運(yùn)行后,輸出結(jié)果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}

A.cdeB.字符c的AScII碼值C.字符c的地址D.出錯

45.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

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

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

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

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

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

47.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是A.#defineN10inta[N];B.#definen5inta[2*n];C.inta[5+5];

D.intn=10,a[n];

48.下列數(shù)據(jù)模型中,具有堅實理論基礎(chǔ)的是()。

A.層次模型B.網(wǎng)狀模型C.關(guān)系模型D.以上3個都是

49.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是()

A.無序線性表B.線性鏈表C.二叉鏈表D.順序存儲的有序表

50.在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是()。

A.整型表達(dá)式B.整型常量C.整型常量或整型表達(dá)式D.任何類型的表達(dá)式

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

A.1234B.123C.12D.1

52.已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}

A.表達(dá)式非法,輸出零或不確定值

B.因輸出項過多,無輸出或輸出不確定值

C.輸出結(jié)果為20,141

D.輸出結(jié)果為20,141,20

53.設(shè)a、b和c都是int型變量,且a=3,b=4,c=5,則下列值為0的表達(dá)式是()

A.'a'&&'b'

B.a<=b

C.a||b+c&&bc

D.!((a<b)&&!c||1)

54.請讀程序:#includde<stdio.h>#include<string.>voidfun(char*s){chara[10];strcpy(a,"STRING");s=a;}main(){char*p;fun(p);print{("%s\n",p);}上面程序的輸出結(jié)果(表示空格)()

A.STRINGB.STRINGC.STRINGD.不確定的值

55.變量a已被定義為整型,下列表達(dá)式有錯的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

56.若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%X\n".m);執(zhí)行后輸出結(jié)果是

A.0X0B.0x0C.0D.0XABC

57.若有下列說明和語句,已知int型數(shù)據(jù)占2個字節(jié),則下列語句的輸出結(jié)果是()。

stmctst

{chara[15];

intb;

doublec;

};

printf("%d",sizeof(structst));

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

58.為了使模塊盡可能獨立,要求______。

A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊問的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

59.下列存儲器中,存取速度最快的是()。

A.軟盤B.硬盤C.光盤D.內(nèi)存

60.如果進(jìn)棧序列為e1,e2,e3,e4,則可能的出棧序列是()

A.e3,e1,e4,e2B.e2,e4,e3,e1C.e3,e4,e1,e2D.任意順序

四、選擇題(20題)61.有以下程序:

#include<stdi0.h>

main()

{inta=1,b=2;

for(;a<8;a++){b+=a;a+=2;)

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

}

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

A.9,18

B.8,11

C.7,11

D.10,14

62.

63.有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf(“c,%d\n”,c1,c2);}已知字母A的ASCⅡ碼為65,程序運(yùn)行后的輸出結(jié)果是()。A.E,68B.B,69C.E,DD.輸出無定值

64.在下列選項中,沒有構(gòu)成死循環(huán)的是()。

A.

B.

C.

D.

65.

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

A.全局變量的作用域一定比局部變量的作用域范圍大

B.靜態(tài)(static)類別變量的生存期貫穿于整個程序的運(yùn)行期間

C.全局變量的生存期是整個程序的運(yùn)行期間

D.靜態(tài)局部變量的初值是在編譯時賦予的,在程序執(zhí)行期間不再賦予初值

67.有以下程序

#include<stdio.h>

#defineP24;

#defineS(x)P*x+x;

main()

{inta=2,b=2;

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

}

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

A.程序編譯運(yùn)行時報錯,無法輸出B.54

C.96D.100

68.有以下函數(shù):

函數(shù)的功能是()。

A.將Y所指字符串賦給x所指存儲空間

B.查找x和y所指字符串中是否有

C.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)

D.統(tǒng)計x和Y所指字符串中相同的字符個數(shù)

69.

70.有如下程序

#include<stdio.h>

main()

{

FILE*fp1;

fp1=fopen("f1.txt","w");

fprintf(fp1,"abc");

fclose(fp1);

}

若文本文件f1.txt中原有內(nèi)容為good,則運(yùn)行以上程序后,文件f1.txt中的內(nèi)容為

A.goodabcB.a(chǎn)bcd

C.a(chǎn)bcD.a(chǎn)bcgood

71.

72.

73.

74.若有定義語句:intm[]={1,2,3,4,5},i=4;,則下面對m數(shù)組元素的引用中錯誤的是

A.m[++i]B.m[1*2]

C.m[m[0]]D.m[m[--i]]

75.若有定義“floata=25,b,*p=&b;”,則下列對賦值語句“*p=a;”和“p=&a;”的正確解釋為()。

A.兩個語句都是將變量a的值賦予變量P

B.*p=a是使P指向變量a,而p=&a是將變量的值賦予變量指針P

C.*p=a是將變量a的值賦予變量b,而&a是使P指向變量a

D.兩個語句都是使P指向變量a

76.

77.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

78.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp);,其中buffer代表的是()。

A.一個內(nèi)存塊的字節(jié)數(shù)

B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C.一個文件指針,指向待讀取的文件

D.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址

79.以下符合c語言語法的實型常量是()。

A.8E一2B.3)14)159EC.E14D.2)2E0)5

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

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

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

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:

x1=(xO+a/xO)/2

例如,3的平方根為1.732051。

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

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

試題程序:

六、程序設(shè)計題(1題)82.M名學(xué)生的成績已在主函數(shù)中放入一個帶頭結(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的帶頭結(jié)點。請編寫函數(shù)proc(),它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.B

2.BB)【解析】在具有11個結(jié)點的滿二叉樹,其非葉子結(jié)點數(shù)為int(n/2),而葉子結(jié)點數(shù)等于總結(jié)點數(shù)減去葉子結(jié)點數(shù)。本題n=15,故非葉子結(jié)點數(shù)等于int(15/2)=7,葉子結(jié)點數(shù)等于15-7=8。

3.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

4.AB選項中,打開一個已存在的文件并進(jìn)行寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進(jìn)行追加操作等。C選項中,在一個程序中對文件進(jìn)行寫操作后,不是先關(guān)閉該文件然后再打開才能讀到第1個數(shù)據(jù),用fseek函數(shù)進(jìn)行重新定位即可。D選項中,C語言中的文件可以進(jìn)行隨機(jī)讀寫。故本題答案為A選項。

5.Dif語句的條件是當(dāng)i既是3的倍數(shù)又是2的倍數(shù)時成立,所以此程序?qū)崿F(xiàn)的功能是將10以內(nèi)既是3的倍數(shù)又是2的倍數(shù)的數(shù)相加。

6.C

7.Badd_more函數(shù)接收兩個參數(shù)a、b,返回“a+b-2”。main函數(shù)中,for循環(huán)調(diào)用add_more函數(shù)。當(dāng)i=2時,傳入實參i和2,所以每次調(diào)用函數(shù)add_more時,b的值都是2。函數(shù)add_more返回值等價于實參i。所以每次for循環(huán)輸出的值就是i的值。故本題答案為B選項。

8.D

9.D[解析]本題目中靜態(tài)局部變量x,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。所以第一次循環(huán)s的值為2.第二次循環(huán)中,返回的x的值為4.所以s的值為8.第三次循環(huán),返回的x的值為8.所以s的值為64.

10.A

11.A

12.Asub函數(shù)接收兩個參數(shù):double類型變量a,double指針變量pb。首先將a與pb指向的變量值相減,結(jié)果存放在a中;然后再將pb指向的變量值與a的新值相減,結(jié)果存放在pb指向的內(nèi)存空間中。sub函數(shù)不會修改實參x的值,但會修改實參y的值。當(dāng)輸入10.23.5時,實參x的值為10.2,y的值為3.5,執(zhí)行sub函數(shù)后,x的值不變,y的值變成-3.2。故本題答案為A選項。

13.D

14.B本題是對基本知識點的理解,預(yù)處理命令行的位置沒有規(guī)定,只是習(xí)慣寫在起始位置而已,當(dāng)需要時才用#include<stdio.h>頭文件,預(yù)處理的作用就是實現(xiàn)宏定義和條件編譯。

15.C解析:考查棧和隊列概念的掌握。棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種'后進(jìn)先出'的線性表;而隊列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種'先進(jìn)先出'的線性表。模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強(qiáng),可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。

16.B

17.B

18.B在main函數(shù)中將結(jié)構(gòu)體變量a賦值給變量b。輸出結(jié)構(gòu)體變量b的值為:Zhao,m,85,90。故本題答案為8選項。

19.D解析:一般來說,一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),因此,數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)不一定是一一對應(yīng)的。選項A中的說法是錯誤的。雖然計算機(jī)的存儲空間是向量式的存儲結(jié)構(gòu),但由于一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),例如,線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)。一般來說,性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點的指針域來指示的。因此,數(shù)據(jù)的存儲結(jié)構(gòu)不一定是線性結(jié)構(gòu)。選項B中的說法也是錯誤的。雖然程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),但是,利用數(shù)組也能處理非線性結(jié)構(gòu)。例如,滿二叉樹與完全二叉樹是非線性結(jié)構(gòu),但對于滿二叉樹與完全二叉樹來說,根據(jù)完全二叉樹的性質(zhì)6,可以按層序進(jìn)行順序存儲,即利用程序設(shè)計語言中的數(shù)組來存儲,這樣,不僅節(jié)省了存儲空間,又能方便地確定每一個結(jié)點的父結(jié)點與左右子結(jié)點的位置。對于一般的二叉樹來說,也可以將二叉樹中每一個結(jié)點的左指針、右指針以及數(shù)據(jù)域分別用三個數(shù)組中的對應(yīng)元素來存儲,即實際上也是利用了程序設(shè)計語言中的數(shù)組來處理二叉樹這樣的非線性結(jié)構(gòu)。選項C中的說法也是錯誤的。綜上所述,選項A、B與C中的說法都是錯誤的。

20.D本題考查運(yùn)算符“<<”,b=a<<2,是左移2位,a=2,即b=2*2*2=8。

21.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學(xué)表達(dá)式如下:

本題中定義了一個長度為3的數(shù)組aa并初始化。接著調(diào)用遞歸函數(shù)f,由上面的數(shù)學(xué)表達(dá)式以計算其返回值s=1+2+3=6,所以空格處應(yīng)該填6。

22.p->dataqp->data,q解析:本題考查的是鏈表這一數(shù)據(jù)結(jié)構(gòu)對結(jié)構(gòu)體變量中數(shù)據(jù)的引用。鏈表的特點是結(jié)構(gòu)體變量中有兩個域,一個是數(shù)據(jù),另一個是指向該結(jié)構(gòu)體變量類型的指針,用以指明鏈表的下一個結(jié)點。

23.length++i<lengthlength++\r\ni<length解析:第—個循環(huán)極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是從第i個到第i+n或最后一個間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實際應(yīng)填入i<length。

24.4599

25.BB解析:字符類型的數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,另外,字符數(shù)據(jù)還可以作為整數(shù)參加運(yùn)算。格式控制參數(shù)中的格式字符用以指定輸出項的數(shù)據(jù)類型和輸出格式,輸出字符與其對應(yīng)的輸出項的類型要一致。本題中,“b”的ASCII碼為98,字符類型m的ASCII碼為98+32=130,所以最后輸出為b。

26.80。80。解析:p=a+2使指針p指向數(shù)組a的第三個元素,即a[2],(p+2)[3]使p再移動5個單位,則指向了數(shù)組元素a[7],它的值為80。

27.functionrunningresultis:9.0

28.a=14a=14解析:逗號表達(dá)式的值是以逗號分隔的最后一個表達(dá)式的值。所以題目中的語句a=(3*5,a+4);就等價于a=a+4;。故本題輸出結(jié)果是a=14。

29.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給do函數(shù)的第一個參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。

30.11解析:本題考查C語言中的if-else語句。if語句中的條件表達(dá)式p=a!=0是一個賦值語句,將關(guān)系表達(dá)式a!=0的結(jié)果賦值給變量p。因a=5,所以a!=0的結(jié)果為1,即p=1,條件為真,所以執(zhí)行if后面的語句printf('%d\\n',p),輸出結(jié)果為1。

31.484,8解析:C語言規(guī)定,共用體中各個成員變量在內(nèi)存中占用同一段內(nèi)存單元,即e.in.x和e.a、e.b占用同一段內(nèi)存單元,由于e.in.x和e.a、e.b占用的是同、段內(nèi)存單元,所以程序最后的打印結(jié)果為“4,8”。

32.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。

33.外模式外模式解析:外模式由概念模式推導(dǎo)而出,給出了每個用戶的局部數(shù)據(jù)描述,即數(shù)據(jù)視圖。

34.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當(dāng)i=0時,p[0]=&x[1],p[0][0]=2;當(dāng)i=1時,p[1]=&x[3],p[1][0]=4;當(dāng)i=2時,p[2]=&x[5],p[2][0]=6;當(dāng)i=3時,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。

35.bcdefghabcdefgha解析:while循環(huán)的功能把字符從第二個元素開始左移一位,并將原第一個元素賦給最后一個元素。

36.上溢上溢解析:入隊運(yùn)算是指在循環(huán)隊列的隊尾加入一個新元素。這個運(yùn)算有兩個基本操作:首先將隊尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時,置rear=1;然后將新元素插入隊尾指針指向的位置。當(dāng)循環(huán)隊列非空(s=1)且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行人隊運(yùn)算,這種情況稱為“上溢”。

37.\0n++

38.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時,則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個數(shù)。

39.輸出輸出解析:測試用例曲測試輸入數(shù)據(jù)(輸入值集)和與之對應(yīng)的預(yù)期輸出結(jié)果(輸出值集)兩部分組成。

40.k=p;k=p;解析:要找數(shù)組中最大元素的下標(biāo),首先預(yù)設(shè)數(shù)組首元素下標(biāo)為臨時最大元素的下標(biāo),從首元素開始順序向后繼元素逐一比較,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時最大元素更大時,就用當(dāng)前元素的下標(biāo)更新臨時最大元素下標(biāo),直至比較了數(shù)組的全部元素后,臨時最大元素下標(biāo)就是數(shù)組中最大元素的下標(biāo)。程序中,變量k用于存儲臨時最大元素下標(biāo),變量p控制順序比較的循環(huán)變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時最大元素s[k]更大時,用p更新k。所以在下劃線處應(yīng)填入代碼“k=p;”。

41.D解析:在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0;C語言規(guī)定,對于二維數(shù)組,只可以省略第1個方括號中的常量表達(dá)式,而不能省略第2個方括號中的常量表達(dá)式;賦的初值不能多于事先定義好的數(shù)組元素個數(shù)。

在選項D)賦值表達(dá)式中,對每一維的元素賦初值應(yīng)用{},而不是()。

42.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。

43.C解析:選擇運(yùn)算是一個一元運(yùn)算,關(guān)系R通過選擇運(yùn)算(并由該運(yùn)算給出所選擇的邏輯條件)后仍為一個關(guān)系。這個關(guān)系是由R中那些滿足邏輯條件的元組所組成。如果關(guān)系的邏輯條件為f,則R滿足f的選擇運(yùn)算可以寫成;бf(R)。

44.C解析:指針數(shù)組中的每一個元素都相當(dāng)于一個指針變量。一維指針數(shù)組的定義形式為:類型名*數(shù)組名[數(shù)組長度],在本題main函數(shù)中定義指針數(shù)組d,它有兩個元素,其初值分別是“ab”、“cde”的首地址。d[1]的值為“cde”的首地址。%x是指以十六進(jìn)制數(shù)形式輸出整數(shù)。

45.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計的常用工具,不是需求分析的工具。

46.C解析:面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同。它的基本原理是,使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它強(qiáng)調(diào)模擬現(xiàn)實世界中的概念而不強(qiáng)調(diào)算法,它鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用應(yīng)用領(lǐng)域的概念去思考。

47.D答案D

解析:在選項D中,n是一個整型的變量。C語言規(guī)定,在一維數(shù)組的定義中,其下標(biāo)只能是常量表達(dá)式,不能包含變量。

48.C在數(shù)據(jù)庫設(shè)計中,目前常用的數(shù)據(jù)模型主要有三種,分別是層次模型、網(wǎng)狀模型和關(guān)系模型。

層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。我們通常把滿足以下兩個條件的數(shù)據(jù)模型稱為層次模型。

(1)有且僅有一個結(jié)點無雙親,這個結(jié)點稱為根結(jié)點。

(2)其他結(jié)點有且僅有一個雙親。

層次模型用樹形結(jié)構(gòu)來表示各實體與實體間的聯(lián)系。實體是數(shù)據(jù)庫中數(shù)據(jù)描述的對象,可以是一個人、一種商品等。在層次模型中,每個結(jié)點表示一個記錄類型,記錄之間的聯(lián)系用結(jié)點之間的連線表示,這種聯(lián)系是父子之間一對多的聯(lián)系。記錄就是描述實體的相關(guān)數(shù)據(jù)。

如果取消層次模型中的兩個限制,即允許一個以上的結(jié)點無雙親,則每一個結(jié)點可以有多個父結(jié)點,便形成了網(wǎng)狀。我們把網(wǎng)狀表示實體之間聯(lián)系的模型稱為網(wǎng)狀模型。

關(guān)系模型用表格形式表示實體類型及其實體間的聯(lián)系。關(guān)系模型是目前最重要的一種模型,它是建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的,具有最堅實的理論基礎(chǔ)。關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu)是二維表,每一張二維表稱為一個關(guān)系。

49.DD)【解析】二分法查找只適用于順序存儲的有序表,表中的元素按值從小到大排列。

50.C解析:在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型可以是整型常量,也可以是整型表達(dá)式。

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

52.C解析:本題中首先輸出逗號表達(dá)式“a=a+a,a+b,b”的值,即20。然后以八進(jìn)制的形式輸出a+'a'-'A'的值為97對應(yīng)的八進(jìn)制數(shù)141,由于最后一個表達(dá)式b沒有對應(yīng)輸出格式的輸出項表列就不會輸出。

53.D

54.D

55.C

56.C解析:本題考核的知識點是C語言中的自反賦值運(yùn)算符。“m-=n”相當(dāng)于“m=m-n”,兩個相等的數(shù)相減,其值為0。所以,C選項為所選。

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

58.B解析:為了使模塊盡可能獨立,模塊分解時應(yīng)滿足信息隱蔽原則。盡量使模塊的內(nèi)聚度高,模塊間的耦合度低。模塊的大小適中(通常一個模塊以50~100個語句行最為適宜)。

59.D\nD【解析】存儲器中.存取速度最快的是內(nèi)存。

\n

60.B解析:由?!昂筮M(jìn)先出”的特點可知:A中e1不可能比e2先出,C中e3不可能比e4先出,且e1不可能比e2先出,D中棧是先進(jìn)后出的,所以不可能是任意順序。所以B是正確的。它執(zhí)行的順序是:e1進(jìn)棧→e2進(jìn)?!鷈2出棧→e3進(jìn)?!鷈4進(jìn)棧→e4出?!鷈3出?!鷈1出棧,所以只看出棧序列應(yīng)為e2,e4,e3,e1。

61.D\n第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。

\n

62.D

63.A本題目中字符變量cl是字符‘A’的ASCIl碼加上4,即69所對應(yīng)的字符‘E’。字符變量c2是字符‘A’的ASCIl碼加上3,即68所對應(yīng)的字符‘D’。但是打印輸出時,cl以%C的格式輸出,所以是E,c2以%d的格式輸出,所以是68。

64.D選項A)的循環(huán)表達(dá)式的條件永久為l,并且小于l00的數(shù)與100取余不超過99,所以在循環(huán)體內(nèi)表達(dá)式i%100+1的值永遠(yuǎn)不大于100,break語句永遠(yuǎn)不會執(zhí)行,所以是死循環(huán);選項B)的括號內(nèi)沒有能使循環(huán)停下來的變量增量,是死循環(huán);選項C)中先執(zhí)行k++,使k=10001,從而使循環(huán)陷入死循環(huán)。

65.D

66.A靜態(tài)類別變量的生存期貫穿于整個程序的運(yùn)行,直到程序運(yùn)行結(jié)束為止,全局變量也是一樣,靜態(tài)局部變量的初值在編譯時賦予,程序執(zhí)行期間不再賦予其他值,即重復(fù)當(dāng)調(diào)用函數(shù)時,函數(shù)內(nèi)部的再次賦初值無效。

67.A本題主要考查宏的定義。宏定義用一個標(biāo)識符來表示一個字符串,這個字符串可以是常量、變量或表達(dá)式。在宏調(diào)用中將用該字符串代換宏名。宏定義中,我們主要需要注意以下幾點:

(1)同一宏名不能重復(fù)定義,除非這兩個宏定義命令行完全一致。

(2)定義宏時,記得其結(jié)尾處不要用分號隔開。

(3)替換帶參數(shù)的宏名時,一對圓括號必不可少,圓括號中實參個數(shù)應(yīng)該與形參個數(shù)相同,若有多個參數(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

提交評論