2021年甘肅省定西市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021年甘肅省定西市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021年甘肅省定西市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021年甘肅省定西市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021年甘肅省定西市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年甘肅省定西市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

2.下列選項中,能夠滿足“只要字符串s1等于字符串S2,則執(zhí)行ST”要求的是()。

A.if(s1-s2==0)ST;

B.if(s1==s2)ST;

C.if(strcpy(s1,s2)==1)ST;

D.if(strcmp(s2,s1)==0)ST;

3.已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()

A.ABCDEB.ECABDC.EACDBD.CDEAB

4.設有以下程序段:structMP3{charname[20];charcolor;floatprice;}std,*ptr;ptr=&std:若要引用結(jié)構(gòu)體變量std中的color成員,寫法錯誤的是()。A.std.colorB.ptr->colorC.std->colorD.(*ptr)color

5.數(shù)據(jù)流圖(DFD)的作用是()。

A.描述軟件系統(tǒng)的控制流B.支持軟件系統(tǒng)的功能建模C.支持軟件系統(tǒng)的面向?qū)ο蠓治鯠.描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)

6.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

7.計算機硬件組成中,CPU包含______。

A.控制器和存儲器B.控制器和運算器C.控制器、運算器和存儲器D.內(nèi)存儲器和外存儲器

8.下列排序算法中,其時間復雜度和記錄的初始排列無關(guān)的是()

A.插入排序B.堆排序C.快速排序D.冒泡排序

9.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序運行后的輸出結(jié)果是()。

A.CBB.BCAC.CCBBD.CDBCA

10.if語句的基本形式是“if(表達式)語句”,以下關(guān)于“表達式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

11.對于下述說明,不能使變量p->b的值增1的表達式是______。structexm{inta;intb;floatc}*p;

A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++

12.當n=5時,函數(shù)輸出為()A.5B.11C.29D.10

13.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運行該程序的輸出結(jié)果是______。

A.34B.42C.43D.33

14.如有inta=11;則表達式(a/1)的值是()。

A.0B.3C.4D.11

15.

16.鏈表不具有的特點是()。A.A.不必事先估計存儲空間

B.可隨機訪問任意元素

C.插入、刪除不需要移動元素

D.所需空間與線性表長度成正比

17.設有6個結(jié)點的無向圖,該圖至少應有()條邊才能確保是一個連通圖。

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

18.有以下程序

#include<stdio.h>

voidfun(intP)

{intd=2;

P=d++;printf(“%d”,P);}

main()

{inta=1;

fun(A);prinff(“%.d\n”,A);}

程序運行后的輸出結(jié)果是A.32B.12C.21D.22

19.

20.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序運行后的輸出結(jié)果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

22.數(shù)據(jù)庫系統(tǒng)的主要特點為數(shù)據(jù)集成性、數(shù)據(jù)的高______和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理和控制。

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

24.設有下列宏定義:

#defineA2

#defineB(A+3)

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

25.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中______反映了模塊內(nèi)各成分之間的聯(lián)系。

26.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許插入的一端稱作______。

27.下列程序段中循環(huán)體的執(zhí)行次數(shù)是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

28.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。

29.軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)階段和維護階段。編碼和測試屬于【】階段。

30.用復合的賦值運算符將變量x中的值增大2的賦值表達式是【】。

31.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

32.有以下程序:

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

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

33.設有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

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

34.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

35.有以下程序

voidf(inty,int*x)

{y=y+*x;*X=*X+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

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

36.以下程序?qū)蓚€數(shù)從小到大輸出。請?zhí)羁铡?/p>

{floata,b,【】;

scanf(,【】&a,&b);

if(a>b)

{t=a;

【】;

b=t;

printf("%5.2f%5.2f\n",a,b);

}

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

38.對于長度為n的順序存儲的線性表,當隨機插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。

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

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

40.設函數(shù)findbig已定義為求3個數(shù)中的最大值。以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】;

seanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,2);

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

}

三、1.選擇題(20題)41.下列程序的執(zhí)行結(jié)果是______。in(f(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}main(){printf("%d\n",f("goodbye!"));}

A.3B.6C.8D.0

42.以下程序的輸出結(jié)果是______。structHAR{intx,y;structHAR*p;};main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1].p=h;printf("%d%d\n",(h[0].p->y));}

A.12B.23C.14D.32

43.請讀程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的輸出結(jié)果是()

A.34756B.23445C.35745D.12345

44.設有下列二叉樹:

對此二叉樹后序遍歷的結(jié)果為

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

45.運行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結(jié)果為______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}

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

46.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

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

47.能正確表示邏輯關(guān)系“a>=10或a<=0”的C語言表達式是()。

A.a>=10ora=10

B.a>=0|a<=10

C.a>=10&&a<=0

D.a>=10||a<=0

48.下面程序的輸出是______。main(){inta=6,b=3;printf("%d\n",b=(a/b,a%b));}

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

49.請選出可用作C語言用戶標識符的是

A.void,define,WORD

B.a3_b3,_123,IF

C.FOR,--abc,Case

D.2a,Do,Sizeof

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

A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時,只能使用goto語句

51.有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序運行后的輸出結(jié)果是()。

A.1*1=11*2=21*3=32*1=22*2=43*1=3

B.1*1=11*2=21*3=32*2=42*3=63*3=9

C.1*1=11*2=22*2=41*3=32*3=63*3=9

D.1*1=12*1=22*2=43*1=33*2=63*3=9

52.以下程序的輸出結(jié)果是______。#include<stdio>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

53.若有定義:inta=4,b=5;floatx=3.4,y=2.1;,則下列表達式的值為()。(float)(a+B)/2+(int)x%(int)y

A.5.5B.55C.5.5D.55

54.運行下面的程序,其輸出結(jié)果為______。main(){pintf("%d,%d",5%-3,-5%3);}

A.2,-2B.-2,2C.-2,-2D.2,2

55.為了避免嵌套的if-else的二義性,C語言鋇定:else與______配對。

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

56.以下正確的數(shù)組定義語句是()。

A.inty[1][4]={1,2,3,4,5,};

B.floatx[3][]={{l},{2},{3}};

C.longs[2][3]={{1},{1,2}{1,2,3,}};

D.doublet[][3]={0}

57.已知inta=1,b=3則a^b的值為

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

58.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是______。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

59.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是______。A.data的每個成員起始地址都相同

B.變量data所占的內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實參

60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}

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

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

當運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

62.若有定義語句:inta=3,b=2,c=1;以下選項中錯誤的賦值表達式是()。

A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);

63.

64.

65.以下描述中正確的是()。

A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復合語句

B.do-while循環(huán)由do開始,用while結(jié)束,在while(表達式.后面不能寫分號

C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進行判斷

D.do-while循環(huán)中,根據(jù)情況可以省略while

66.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

67.有以下程序:

當執(zhí)行程序時,按下列方式輸人數(shù)據(jù)(從第l列開始,<CR>代表回車,注意,回車也是—個字符)l<CR>

234<CR>

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

A.34

B.134

C.123

D.1234

68.

69.若有定義“inta=5,b=7;”,則表達式a%=(b%2)運算后,a的值為()。

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

70.第

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

71.已知longi=32768;執(zhí)行語句printf(“%d”,i);屏幕顯示()。

A.-1B.-32768C.1D.32768

72.

73.

74.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}

A.33B.22C.26D.25

75.

76.在長度為n的有序線性表中進行二分法查找,最壞情況下需要比較的次數(shù)是()。A.O(n)B.0(n2)C.O(log2n)D.O(nlog2n)

77.假設a和b為int型變量,則執(zhí)行以下語句后b的值為()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8

78.設有如下程序

#include<stdio.h>

main()

{

int**k,*j,i=100;

j=&i;k=&j;

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

}

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

A.運行錯誤B.100

C.i的地址D.j的地址

79.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。

A.確認測試B.集成測試C.驗證測試D.驗收測試

80.

有以下程序:

main

{inta[]=(2,4,6,8,10},y=0,x,*P;

p=&a[1];

for(x=1;x<3;x++)y+=p[x];

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

}

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

A.10B.11C.14D.15

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用冒泡法對6個字符串按由小到大的順序進行排序。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學生的平均分,并放入記錄的ave成員中。

例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

doubles[N];

doubleave;

}STREC;

voldfun(STREC*a)

{

}

voidmain

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf("The%ssstudentdata:\n",s.num);

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

printf("%4.1fkn",s.s[i]);

printf("\nknave=%7.3fkn",s.aVe);

printf("\n");

}

參考答案

1.C

2.D在C語言中,對兩個字符串進行比較,使用字符串比較函數(shù)strcmp。如果這個函數(shù)的返回值等于0,說明兩個字符串相等。故本題答案為D選項。

3.C由于后序遍歷的最后一個兒素為E,所以E為根結(jié)點,所以它的前序遍歷的首個元素為E,敞排除A)和D)選項。由于中序遍歷中,元素B在元素根結(jié)點E自:J后面,所以B為二叉樹的右子樹,并且該二叉樹右子樹只有一個兒素,所以前序遍歷的最后一個元素應為B,故選項C)為正確選項,即該二叉塒的前序遍歷序列是EACDB。

4.C【答案】C

【知識點】結(jié)構(gòu)體成員變量的引用

【解析】結(jié)構(gòu)體變量包括一個或多個成員變量,引用其成員變量的語法格式如下:

結(jié)構(gòu)體變量.成員變量。通過結(jié)構(gòu)體指針變量獲得其結(jié)構(gòu)體變量的成員變量的一般形式為:(*結(jié)構(gòu)體指針變量).成員變量,也可以使用:結(jié)構(gòu)體指針變量->成員變量來引用成員變量。

5.B數(shù)據(jù)流圖是系統(tǒng)邏輯模型的圖形表示,從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變化過程,它直接支持系統(tǒng)的功能建模。本題答案為B選項。

6.B當用指數(shù)形式表示浮點數(shù)據(jù)時,E的前后都要有數(shù)據(jù),并且E的后面數(shù)要為整數(shù)。

7.B

8.B

9.Dputchar函數(shù)的功能是輸出一個字符,由whlie判斷條件和ch初始值可知,只要“ch≠‘A’”,執(zhí)行兩次putchar函數(shù),否則跳出循環(huán)。第1次輸出“CD”,第2次輸出“BC”,第3次輸出“A”后跳出循環(huán)。故本題答案為D選項。

10.Dif語句中的表達式可以是任意合法的數(shù)值,如常量、變量表達式。故本題答案為D選項。

11.D解析:p->b應作為一個整體看待,++p->b和p->b++都使變量b增1,++(p++)->b先使b增1,再使p后移,D中表達式的含義是使p+1所指結(jié)構(gòu)體變量中的成員b的值增1。

12.C

13.D解析:逗號表達式(++x,y++)的值應該是y++的值,由于y++是先引用后自增,所以y++的值是3。

14.D

15.C

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

17.B

18.C程序運行后,首先輸出的是p的值,然后再輸出a的值。p=d++,得到p的值為d的初始值2;a的值不變,仍為1。

19.C

20.B函數(shù)f1(*a,b),*a為地址傳遞,b為值傳遞,將b值傳給*a,則f1(&t1,t2)調(diào)用后輸出t1、t2為BB。f2(a,b)為值傳遞,傳入的只是a、b的值,不實現(xiàn)交換,則f2(t1,t2)調(diào)用后輸出t1、t2為AB。f3(*a,*b)為地址傳遞,可以實現(xiàn)a、b值的交換,則f3(&t1,&t2)調(diào)用后輸出t1、t2為BA。因此結(jié)果為BAABBB。故本題答案為B選項。

21.3232解析:while(表達式)的功能是:首先計算表達式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計算表達式的值,若仍為真,則重復執(zhí)行循環(huán)體語句,直到表達式的值為假時,結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。

22.共享性共享性解析:數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能被不同的應用程序使用,實現(xiàn)了數(shù)據(jù)的高度共享,從而降低了數(shù)據(jù)的冗余,這也是數(shù)據(jù)庫的主要目的。

23.20020,0解析:在主函數(shù)中首先定義了三個整型變量x、y、t,并分別給它們賦初值為10,20,0,接著執(zhí)行if語句,在if后面括號內(nèi)的條件表達式中,條件“x==y”即“10==20”不成立,則不執(zhí)行其后的語句“t=x”,然后退出if語句,順序執(zhí)行語句x=Y;Y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x,y的值為20和0。

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

25.內(nèi)聚內(nèi)聚

26.隊尾隊尾解析:在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。

27.33解析:本題考查do…while語句形式:

do循環(huán)體

while表達式

首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復執(zhí)行循環(huán)體語句,否則退出循環(huán)。第1次循環(huán):b+=2,b=2,a-=2+b,a=11;第2次循環(huán):b=4,a=5;第3次循環(huán):b=6,a=-3,此時再判斷循環(huán)條件不滿足,退出循環(huán)。

28.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。

29.開發(fā)開發(fā)解析:軟件生命周期(SDLC,軟件生存周期)是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設計、編碼、調(diào)試和測試、驗收與運行、維護升級到廢棄等階段,其中的編碼和測試屬于開發(fā)階段。

30.x+=2

31.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標準的調(diào)用形式應該寫成:

p(double*)malloc(sizeof(double));

32.8484解析:函數(shù)f(y,*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實參的y的值將不改變,而實參x的值將改變,故最后輸出的y的值為4,而x的值為8。

33.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標識符'\\0'所以題中數(shù)組str有6個元素。②ptr指向數(shù)組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

34.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf('%d\\n',z);語句。

35.8484解析:本題考核的知識點是函數(shù)的調(diào)用、值傳遞和地址傳遞的區(qū)別?!爸祩鬟f”指實參將值傳遞給形參后,實參與形參再無聯(lián)系。也就是說對行參的改變將不影響實參;地址傳遞是指地址或數(shù)組名作為形參時的參數(shù)傳遞,這種情況下對形參的改變將對實參產(chǎn)生影響.函數(shù)f(Y*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實參的y的值將不改變,而實參x的值將改變,故最后輸出的y的值為4,而x的值為8。

36.t"%f%f"a=b

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

38.n/2n/2解析:刪除—個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動元素個數(shù)為n/2。

39.246

40.findbigfindbig解析:本題首先定義了一個指向函數(shù)的指針變量f,如果希望讓它指向某個函數(shù),只需把函數(shù)名賦給該指針變量即可。所以說本題的空格處應該填入函數(shù)名findbig。

41.C解析:字符在內(nèi)存中占一個字節(jié)的存儲空間,按字符的存儲順序,其地址依次遞增,在函數(shù)f中循環(huán)過后,p指向字符串的結(jié)束位置,s指向字符串首地址,p-s即為字符串長度。

42.D解析:本題中是—個含有兩個結(jié)點的循環(huán)鏈表。C語言中結(jié)構(gòu)體的定義為:srtyct結(jié)構(gòu)體類型名{成員項表;}

43.C

44.D解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求后序遍歷,其遍歷順序應該為:后序遍歷左子樹->,后序遍歷右子樹->,訪問根結(jié)點。按照定義,后序遍歷序列是DEBFCA,故答案為D。

45.C解析:分析程序可知,該程序?qū)崿F(xiàn)的功能是對數(shù)m,n求其最大公約數(shù)。在本題中m與n的值分別為65與14,其最大公約數(shù)為1,故其輸出結(jié)果為m=1。

46.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>

分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼

續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。

47.D解析:在C語言中,邏輯運算符有與&&、或||、非!,關(guān)系運算符有大于>、小于<、大于等于>=、小于等于<=、等于==,根據(jù)邏輯關(guān)系很容易看出,符合條件的選項為D。

48.A解析:逗號表達式的值為最后一個表達式的值,本題將a%b的值0賦給變量b。

49.B解析:C語言規(guī)定用戶標識符由字母、數(shù)字和下畫線組成,且第一個字符必須是字母或下畫線,可見選項C),D)是錯誤的;此外,C語言不允許用戶將關(guān)鍵字作為標識符,而選項A)中的void正是C語言的關(guān)鍵字。

50.B解析:continue是結(jié)束本次循環(huán),直接進入到下次循環(huán)中,break用于循環(huán)語句中的作用是直接跳出本層循環(huán),能從多層循環(huán)中退出的語句除了goto語句,exit,return等語句也能直接跳出多層循環(huán)。注意:continue和break語句在while語句中的作用。

51.B解析:外層for循環(huán)的自變量i從1開始,每次循環(huán)后增1,直到i等于3結(jié)束.對于外層循環(huán)自變量i的每一個值,內(nèi)層循環(huán)的自變量j每次從i開始,每次循環(huán)后增1,直到j等于3結(jié)束。所以在每次外循環(huán)開始后,內(nèi)層循環(huán)在一行先打印i*j=兩個乘數(shù)的積,然后回車換行,下次循環(huán)從下一行開始打印輸出結(jié)果。

52.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。

53.C解析:在計算(float)(a+b)/2時,由于通過強制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應先將2轉(zhuǎn)換成float型,再進行計算,得4.500000。

在計算(int)x%(int)y時,先將x和y通過強制類型轉(zhuǎn)換成int型,再進行求余運算,得1。

又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。

注意:類型轉(zhuǎn)換的一般規(guī)則是:低級類型服從高級類型,并進行相應的轉(zhuǎn)換。數(shù)據(jù)類型的級別由低到高的排序表示為:char→int→unsigned→long→float→double。

54.A解析:在C中,參與%運算的兩個參數(shù)都必須為整形,在大多數(shù)C編譯器下(包括TurboC)都采用了“向0靠近”的原則,即當兩個運算量有一個為負數(shù)時,余數(shù)的符號由被除數(shù)的符號決定。故本題答案為A。

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

56.D解析:選項A定義了一個1行4列的二維數(shù)組,只有4個元素,而初始化列表有5個初始值,所以不正確。定義二維數(shù)組時只能省略第二維的長度,選項B省略的是第一維的長度,所以不正確。選項C定義了一個2行3列的二維數(shù)組,但初始值列表中使用了3個大括號,使行數(shù)超出定義范圍,所以不正確。故正確答案是選項D。

57.C解析:^是按位異或運算,如果對應位不同則結(jié)果為1,相同則為0。

58.A解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個應用所共享,特別是在網(wǎng)絡發(fā)達的今天,數(shù)據(jù)庫與網(wǎng)絡的結(jié)合擴大了數(shù)據(jù)關(guān)系的應用范圍。數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。這里所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應保持相同的值,而數(shù)據(jù)的不一致性指的是同一個數(shù)據(jù)在系統(tǒng)的不同拷貝處有不同的值。

59.C解析:共用體成員a,b,c共占用同一個內(nèi)存空間,所以data的每個成員起始地址都相同;共用體變量所占的內(nèi)存長度等于最長的成員的長度,故變量data所占的內(nèi)存字節(jié)數(shù)與成員所占字節(jié)數(shù)相等;由于各成員變量的類型不一致,所以它們的存儲方式也不相同,整型占用2個字節(jié)的存儲空間,double型占用8個字節(jié)的存儲空間;data可以作為函數(shù)的實參,此時data作為一個地址進行地址傳送;執(zhí)行data.a=5;printf('%f\\n',data.c);系統(tǒng)不能自動將整型變量轉(zhuǎn)換為浮點型值,printf函數(shù)只是將內(nèi)存中的數(shù)據(jù)以不同類型輸出,而不能將內(nèi)存中的整型數(shù)據(jù)自動轉(zhuǎn)換為等值的浮點數(shù),故選項C)錯誤。

60.C解析:“||”是或運算,它有個“短路”的特點需特別注意,當“||”運算符左邊的表達式的值為真時,則程序就不再對“||”右邊的表達式的值進行運算,而是使得整個表達式的值直接為真。

61.A本題考查的是輸入輸出函數(shù)。函數(shù)get.char的作用是從終端(或系統(tǒng)隱含指定的輸入設備)輸入一個字符,且只能接受一個字符(回車符也算是一個字符)。故本題中變量cl被賦予字符a,c2被賦予回車符。

62.A不能將變量或常量賦給一個表達式,所以A選項中(b=4)=3是錯誤的。

63.A

64.D

65.C解析:do-while語句的一般形式為:do循環(huán)體語句while(表達式);,其中循環(huán)體語句可以是復合型語句,但必須用花括號括起來。while后必須要有分號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。

66.C根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。

67.C程序根據(jù)用戶輸入分別給字符型變量a、

68.D

69.A本題考查“%”運算符的使用。運算符“%”是整數(shù)除法的余數(shù)。本題中表達式a%=(b%2)等價于a=a%(b%2)=5%(7%2)=5%1=0。

70.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達式對字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個字符放到數(shù)組str1中,除了逐個輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個字符串復制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)

其中,需要注意的是,字符數(shù)組1的長度不應小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

71.D整型的數(shù)據(jù)占4個字節(jié),即-2147483648~2147483648,32768在其表達的范圍之內(nèi),所以原樣輸出。

72.D

73.D

74.C解析:C語言規(guī)定如果全局變量與局部變量同名,則在局部變量的作用域內(nèi)全局變量不起作用。程序開頭定義的變量x為全局變量,函數(shù)incre中定義的變量x是局部靜態(tài)變量,存放在靜態(tài)存儲區(qū),incre調(diào)用結(jié)束后不釋放x占據(jù)的存儲單元。main函數(shù)中使用的x是全局變量x=3,所以main函數(shù)中調(diào)用函數(shù)incre兩次。調(diào)用過程如下。第1次調(diào)用:x=x*(x+1)=1×(1+1)=2,printf函數(shù)輸出2;第2次調(diào)用:x=x*(x+1)=2×(2+1)=6,printf函數(shù)輸出6。

75.A

76.C當有序線性表為順序存儲時才能用二分法查找??梢宰C明的是,對于長度為n的有序線性表,在最壞情況下,二分法查找只需要比較log2n次,而順序查找需要比較n次,因此本題答案為C)。

77.D當b為10時,執(zhí)行b-=a,此時b為9,接著b--表達式值為9,b的值為8,大于0,while不成立,退出循環(huán),故選擇D選項。

78.Bj=&i,j的值就是i的地址,*j=100,再將j的地址賦給k,這時*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印結(jié)果應當為100。

79.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統(tǒng)測試。

(1)單元測試是針對每個模塊進行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細設計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎上,根據(jù)模塊結(jié)構(gòu)圖將各個模塊連接起來,必須精心計劃,應提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設計時犯的錯誤。

(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發(fā)現(xiàn)需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應該仔細設計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應參與設計測試用例,通常情況下,主要使用生產(chǎn)中的實際數(shù)據(jù)進行測試,測試數(shù)據(jù)通過用戶接口輸入。

(4)系統(tǒng)測試是將已經(jīng)通過確認測試的軟件,作為整個計算機系統(tǒng)的元素與計算機硬件、外設和網(wǎng)絡等其他因素結(jié)合在一起,進行一系列的組裝測試和確認測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時犯下的錯誤。

80.C

\n由題目的語句P=&a[1]可知,P指向a數(shù)組中下標為1的元素“4”,又因為P為指針變量,所以P[x]與*(p+x)等價,因而在for循環(huán)語句中,第一次循環(huán)P[1]指向a數(shù)組中下標為2的元素“6”,第二次循環(huán)p[2]指向a數(shù)組中下標為3的元素“8”,所以y=6+8=14,因而選項C為正確答案。

\n

81.(1)錯誤:if(strcmp((pstr+i),(pstr+j))>o)

正確:if(strcmp(*(pstr+i),*(pstr+j))>0)

(2)錯誤:*(pstr+j)=*P

正確:*(pstr+j)=p

【解析】變量pstr表示的是字符串數(shù)組的首地址,pstr+i表示的是字符串首地址偏移量為i處的地址。程序中要比較的是字符,因此,“if(strcmp((pstr+i),(pstr+j))>0)”應改為“if(strcmp(*(pstr+i),*(pstr+j))>0)”;根據(jù)程序可知,要交換的是字符串的首地址而不是字符串的內(nèi)容,因此,“*(pstr+j)=*p”應改為“*(pstr+j)=P”。

82.voidfun(STREC*a)

\n{

\ninti;

\na->ave=0.0;

\nfor(i=0;i<N;i++)

\na->ave=a->ave+a->s[i];

\n/*求各門課程成績的總和*/

\na->ave=a->ave/N;/*求平均分*/

\n}

\n【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。

\n2021年甘肅省定西市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

2.下列選項中,能夠滿足“只要字符串s1等于字符串S2,則執(zhí)行ST”要求的是()。

A.if(s1-s2==0)ST;

B.if(s1==s2)ST;

C.if(strcpy(s1,s2)==1)ST;

D.if(strcmp(s2,s1)==0)ST;

3.已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()

A.ABCDEB.ECABDC.EACDBD.CDEAB

4.設有以下程序段:structMP3{charname[20];charcolor;floatprice;}std,*ptr;ptr=&std:若要引用結(jié)構(gòu)體變量std中的color成員,寫法錯誤的是()。A.std.colorB.ptr->colorC.std->colorD.(*ptr)color

5.數(shù)據(jù)流圖(DFD)的作用是()。

A.描述軟件系統(tǒng)的控制流B.支持軟件系統(tǒng)的功能建模C.支持軟件系統(tǒng)的面向?qū)ο蠓治鯠.描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)

6.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

7.計算機硬件組成中,CPU包含______。

A.控制器和存儲器B.控制器和運算器C.控制器、運算器和存儲器D.內(nèi)存儲器和外存儲器

8.下列排序算法中,其時間復雜度和記錄的初始排列無關(guān)的是()

A.插入排序B.堆排序C.快速排序D.冒泡排序

9.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序運行后的輸出結(jié)果是()。

A.CBB.BCAC.CCBBD.CDBCA

10.if語句的基本形式是“if(表達式)語句”,以下關(guān)于“表達式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

11.對于下述說明,不能使變量p->b的值增1的表達式是______。structexm{inta;intb;floatc}*p;

A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++

12.當n=5時,函數(shù)輸出為()A.5B.11C.29D.10

13.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運行該程序的輸出結(jié)果是______。

A.34B.42C.43D.33

14.如有inta=11;則表達式(a/1)的值是()。

A.0B.3C.4D.11

15.

16.鏈表不具有的特點是()。A.A.不必事先估計存儲空間

B.可隨機訪問任意元素

C.插入、刪除不需要移動元素

D.所需空間與線性表長度成正比

17.設有6個結(jié)點的無向圖,該圖至少應有()條邊才能確保是一個連通圖。

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

18.有以下程序

#include<stdio.h>

voidfun(intP)

{intd=2;

P=d++;printf(“%d”,P);}

main()

{inta=1;

fun(A);prinff(“%.d\n”,A);}

程序運行后的輸出結(jié)果是A.32B.12C.21D.22

19.

20.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序運行后的輸出結(jié)果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

22.數(shù)據(jù)庫系統(tǒng)的主要特點為數(shù)據(jù)集成性、數(shù)據(jù)的高______和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理和控制。

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

24.設有下列宏定義:

#defineA2

#defineB(A+3)

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

25.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中______反映了模塊內(nèi)各成分之間的聯(lián)系。

26.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許插入的一端稱作______。

27.下列程序段中循環(huán)體的執(zhí)行次數(shù)是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

28.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

29.軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)階段和維護階段。編碼和測試屬于【】階段。

30.用復合的賦值運算符將變量x中的值增大2的賦值表達式是【】。

31.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

32.有以下程序:

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

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

33.設有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

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

34.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

35.有以下程序

voidf(inty,int*x)

{y=y+*x;*X=*X+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

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

36.以下程序?qū)蓚€數(shù)從小到大輸出。請?zhí)羁铡?/p>

{floata,b,【】;

scanf(,【】&a,&b);

if(a>b)

{t=a;

【】;

b=t;

printf("%5.2f%5.2f\n",a,b);

}

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

38.對于長度為n的順序存儲的線性表,當隨機插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。

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

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

40.設函數(shù)findbig已定義為求3個數(shù)中的最大值。以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】;

seanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,2);

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

}

三、1.選擇題(20題)41.下列程序的執(zhí)行結(jié)果是______。in(f(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}main(){printf("%d\n",f("goodbye!"));}

A.3B.6C.8D.0

42.以下程序的輸出結(jié)果是______。structHAR{intx,y;structHAR*p;};main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1].p=h;printf("%d%d\n",(h[0].p->y));}

A.12B.23C.14D.32

43.請讀程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的輸出結(jié)果是()

A.34756B.23445C.35745D.12345

44.設有下列二叉樹:

對此二叉樹后序遍歷的結(jié)果為

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

45.運行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結(jié)果為______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}

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

46.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

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

47.能正確表示邏輯關(guān)系“a>=10或a<=0”的C語言表達式是()。

A.a>=10ora=10

B.a>=0|a<=10

C.a>=10&&a<=0

D.a>=10||a<=0

48.下面程序的輸出是______。main(){inta=6,b=3;printf("%d\n",b=(a/b,a%b));}

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

49.請選出可用作C語言用戶標識符的是

A.void,define,WORD

B.a3_b3,_123,IF

C.FOR,--abc,Case

D.2a,Do,Sizeof

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

A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時,只能使用goto語句

51.有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序運行后的輸出結(jié)果是()。

A.1*1=11*2=21*3=32*1=22*2=43*1=3

B.1*1=11*2=21*3=32*2=42*3=63*3=9

C.1*1=11*2=22*2=41*3=32*3=63*3=9

D.1*1=12*1=22*2=43*1=33*2=63*3=9

52.以下程序的輸出結(jié)果是______。#include<stdio>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

53.若有定義:inta=4,b=5;floatx=3.4,y=2.1;,則下列表達式的值為()。(float)(a+B)/2+(int)x%(int)y

A.5.5B.55C.5.5D.55

54.運行下面的程序,其輸出結(jié)果為______。main(){pintf("%d,%d",5%-3,-5%3);}

A.2,-2B.-2,2C.-2,-2D.2,2

55.為了避免嵌套的if-else的二義性,C語言鋇定:else與______配對。

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

56.以下正確的數(shù)組定義語句是()。

A.inty[1][4]={1,2,3,4,5,};

B.floatx[3][]={{l},{2},{3}};

C.longs[2][3]={{1},{1,2}{1,2,3,}};

D.doublet[][3]={0}

57.已知inta=1,b=3則a^b的值為

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

58.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是______。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

59.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是______。A.data的每個成員起始地址都相同

B.變量data所占的內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實參

60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}

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

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

當運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

62.若有定義語句:inta=3,b=2,c=1;以下選項中錯誤的賦值表達式是()。

A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);

63.

64.

65.以下描述中正確的是()。

A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復合語句

B.do-while循環(huán)由do開始,用while結(jié)束,在while(表達式.后面不能寫分號

C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進行判斷

D.do-while循環(huán)中,根據(jù)情況可以省略while

66.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

67.有以下程序:

當執(zhí)行程序時,按下列方式輸人數(shù)據(jù)(從第l列開始,<CR>代表回車,注意,回車也是—個字符)l<CR>

234<CR>

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

A.34

B.134

C.123

D.1234

68.

69.若有定義“inta=5,b=7;”,則表達式a%=(b%2)運算后,a的值為()。

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

70.第

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

71.已知longi=32768;執(zhí)行語句printf(“%d”,i);屏幕顯示()。

A.-1B.-32768C.1D.32768

72.

73.

74.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}

A.33B.22C.26D.25

75.

76.在長度為n的有序線性表中進行二分法查找,最壞情況下需要比較的次數(shù)是()。A.O(n)B.0(n2)C.O(log2n)D.O(nlog2n)

77.假設a和b為int型變量,則執(zhí)行以下語句后b的值為()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8

78.設有如下程序

#include<stdio.h>

main()

{

int**k,*j,i=100;

j=&i;k=&j;

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

}

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

A.運行錯誤B.100

C.i的地址D.j的地址

79.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。

A.確認測試B.集成測試C.驗證測試D.驗收測試

80.

有以下程序:

main

{inta[]=(2,4,6,8,10},y=0,x,*P;

p=&a[1];

for(x=1;x<3;x++)y+=p[x];

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

}

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

A.10B.11C.14D.15

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用冒泡法對6個字符串按由小到大的順序進行排序。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學生的平均分,并放入記錄的ave成員中。

例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

doubles[N];

doubleave;

}STREC;

voldfun(STREC*a)

{

}

voidmain

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf("The%ssstudentdata:\n",s.num);

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

printf("%4.1fkn",s.s[i]);

printf("\nknave=%7.3fkn",s.aVe);

printf("\n");

}

參考答案

1.C

2.D在C語言中,對兩個字符串進行比較,使用字符串比較函數(shù)strcmp。如果這個函數(shù)的返回值等于0,說明兩個字符串相等。故本題答案為D選項。

3.C由于后序遍歷的最后一個兒素為E,所以E為根結(jié)點,所以它的前序遍歷的首個元素為E,敞排除A)和D)選項。由于中序遍歷中,元素B在元素根結(jié)點E自:J后面,所以B為二叉樹的右子樹,并且該二叉樹右子樹只有一個兒素,所以前序遍歷的最后一個元素應為B,故選項C)為正確選項,即該二叉塒的前序遍歷序列是EACDB。

4.C【答案】C

【知識點】結(jié)構(gòu)體成員變量的引用

【解析】結(jié)構(gòu)體變量包括一個或多個成員變量,引用其成員變量的語法格式如下:

結(jié)構(gòu)體變量.成員變量。通過結(jié)構(gòu)體指針變量獲得其結(jié)構(gòu)體變量的成員變量的一般形式為:(*結(jié)構(gòu)體指針變量).成員變量,也可以使用:結(jié)構(gòu)體指針變量->成員變量來引用成員變量。

5.B數(shù)據(jù)流圖是系統(tǒng)邏輯模型的圖形表示

溫馨提示

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

評論

0/150

提交評論