2021年內(nèi)蒙古自治區(qū)興安盟全國計算機等級考試C語言程序設計_第1頁
2021年內(nèi)蒙古自治區(qū)興安盟全國計算機等級考試C語言程序設計_第2頁
2021年內(nèi)蒙古自治區(qū)興安盟全國計算機等級考試C語言程序設計_第3頁
2021年內(nèi)蒙古自治區(qū)興安盟全國計算機等級考試C語言程序設計_第4頁
2021年內(nèi)蒙古自治區(qū)興安盟全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年內(nèi)蒙古自治區(qū)興安盟全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下敘述中正確的是()。

A.宏替換不占用程序的運行時間

B.預處理命令行必須位于源文件的開頭

C.在源文件的一行上可以有多條預處理命令

D.宏名必須用大寫字母表示

2.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出的結果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

3.下述哪一個是順序存儲結構的優(yōu)點()。

A.存儲密度大B.插入運算方便C.刪除運算方便D.可方便地用于各種邏輯結構的存儲表示

4.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

5.下列有關格式輸入函數(shù)scanf的敘述中正確的是()

A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”

B.可以只有格式控制項,沒有地址列表項

C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);

D.當輸入數(shù)據(jù)時,必須指明變量地址

6.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.將a所指字符串賦給b所指空間

B.使指針b指向a所指字符串

C.將a所指字符串和b所指字符串進行比較

D.檢查a和b所指字符串中是否有‘\0’

7.下列選項中,能夠滿足“若字符串s1等于字符串s2,則執(zhí)行ST”要求的是()。A.if(strcmp(s2,s1)==0)ST;

B.if(s1===s2)ST;

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

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

8.

9.

10.若有以下定義和語句

chars1[10]="abcd!",*s2="\n123\\";

printf("%d%d\n",strlen(s1),strlen(s2));

則輸出結果是A.A.55B.105C.107D.58

11.

12.鏈表不具有的特點是()。

A.插入、刪除不需要移動元素B.可隨機訪問任一元素C.不必事先估計存儲空間D.所需空間與線性長度成正比

13.有以下程序:main(){inta[][3]={{1,2,3),{4,5,0)),(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結果是()。

A.7B.6C.8D.無確定值

14.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項中正確的輸入語句是A.scanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

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

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

B.return語句中表達式值的類型

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

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

16.將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

17.下列程序的輸出結果是()。

#include<stdio.h>

main()

{iuta=2,b=3,p;

p=f(a,B)

printf("%d",p);

}

intf(a,b)

{intc;

if(a>B)c=1;

e1Seif(a==B)c=0;

else(3=-1;

return(C);

}

A.-1B.0C.1D.2

18.

19.下列程序的輸出結果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

20.一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()

A.不確定B.n-i+1C.iD.n-i

二、2.填空題(20題)21.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

22.算法的復雜度主要包括空間復雜度和______復雜度。

23.調(diào)用C語言標準庫函數(shù)時要求用【】命令。

24.以下程序用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>

#include"stdio.h"

main()

{FILE*fp;longnum=OL;

if((fp=fopen("fname.dat","r")==NULL)

{Pirntf("Openerror\n");exit(0);}

while(【】)

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

25.若給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;

}

26.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

27.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

28.按“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結構是[]。

29.以下程序的運行結果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

30.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

31.數(shù)據(jù)結構分為邏輯結構和存儲結構,循環(huán)隊列屬于______結構。

32.若輸入21、23、34、11、2、6,則以下程序的運行結果【】。

main()

{inti;

char+p,num[6];

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

scanf("%d,",&num[i]);

scanf("%d",&num[5]);

p=&num[0];

sort(p,6);

for(i=0;i<5;i++)printf("%d,",num[i]);

printf("%d\n",num[5]);

}

sort(p,m)

char*p;

intm;

{inti;

charchange,*p1,*p2;

for(i=0;i<m/2;i++)

{p1=p+i;

p2=p+(m-1-i);

change=*p1;

*p1=*p2;

*p2=change;

}

}

33.以下程序的輸出結果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

34.以下程序中用戶由鍵盤輸入一個文件名,然后輸入一串字符(用#結束輸入)存放到此文件中,形成文本文件,并將字符的個數(shù)寫到文件的尾部。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

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

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

35.軟件需求規(guī)格說明書應具有完整性、無歧義性、正確性、可驗證性、可修復性等特性,其中最重要的是()。

36.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

37.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達式是【】。

38.設inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。

39.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

40.以下程序的輸出結果是【】。

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

三、1.選擇題(20題)41.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術問題

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

A.構成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

43.以下程序的輸出結果是()。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

44.下列對于線性鏈表的描述中正確的是()。

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

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

A.數(shù)據(jù)的邏輯結構與存儲結構必定是一一對應的

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

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

D.以上3種說法都不對

46.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]='goodmoming';

B.charc[20]="goodmorning";

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

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

47.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

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

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

}

main()

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

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

}

程序的運行結果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

48.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是______。

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

B.程序將等待用戶輸入2個字符

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

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

49.下列程序執(zhí)行后的輸出結果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

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

50.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

51.設有如下三個關系表:

下列操作中正確的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

52.

若有下列定義(設int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

printf("i=%%d,j=%%d\n",i,j);

輸出的結果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

53.下列程序的輸出結果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

54.對下列二叉樹進行中序遍歷的結果是()

A.ABCDEFGHB.ABDGEHCFC.GDBEHACFD.GDHEBFCA

55.以下正確的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

56.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復制到字符串str3之后

C.將字符串str2復制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復制到字符串str3中

57.下列程序的執(zhí)行結果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i)}

A.266B.11C.265D.138

58.有以下函數(shù)定義:

voidfun(intn,doublex){……}

若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

59.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關鍵碼值11,所需的關鍵碼比較次數(shù)為______。

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

60.在執(zhí)行完下列的C語句段之后,則B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));

A.0B.1C.TRUED.FALSE

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

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

A.C程序對預處理命令行的處理是在程序執(zhí)行的過程中進行的

B.預處理命令行的最后不能以分號表示結束

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

D.在程序中凡是以“#”開始的語句行都是預處理命令行

63.

64.執(zhí)行語句printf(“%u\n”,+12345)的輸出結果是()。

A.12345B.0C.-1D.非定值

65.

66.有以下程序:

#include<stdio.h>

main

{inta=1,b=2;

while(a<6){b+=a;a4+=2;b%=10;)

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

}

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

A.5,11B.7,1C.7,11D.6,1

67.在下列結論中,只有一個是錯誤的,它是()。

A.C語言允許函數(shù)的遞歸調(diào)用

B.C語言中的continue語句,可以通過改變程序的結構而省略

C.有些遞歸程序是不能用非遞歸算法實現(xiàn)的

D.C語言中不允許在函數(shù)中再定義函數(shù)

68.

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

70.

71.有以下程序

72.

73.有以下程序:

#include<stdio.h>

#defineN3

voidfun(inta[][N],intb[])

{inti,j;

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

{b[i]=a[i][0];

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

if(b[i]<a[i][j])b[i]=a[i][j];

}

}

main()

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

fun(x,y);

for(i=0;i<N;i++)printf("%d,",y[i]);

printf("\n");

}

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

A.2,4,8,

B.3,6,9,

C.3,5,7,

D.1,3,5,

74.

75.設x,y和z都是int型變量,且x=3,y=4,z=5,則下列表達式中,值為0的表達式是

A.x&&yB.x<=y

C.x||++y&&y-zD.!(x<y&&!z||1)

76.軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(工具軟件)。下面屬于應用軟件的是().

A.編譯程序B.操作系統(tǒng)C.教務管理系統(tǒng)D.匯編程序

77.

若希望下列的程序運行后輸出25,程序空白處的正確選項是()。

main

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=l;i<4;++i

B.i=1;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

78.以下程序的功能是計算:s=1+12+123+1234+12345

A.tB.t*10C.t*100D.t+10

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

A.可以給指針變量賦一個整數(shù)作為地址值

B.函數(shù)可以返回地址值

C.改變函數(shù)形參的值,不會改變對應實參的值

D.當在程序的開頭包含頭文件stdi0.h時,可以給指針變量賦NULL、、、

80.有以下程序:

若運行時輸入:123<回車>,則輸出結果是()。

A.編譯錯誤2000B.102000C.122030D.10

五、程序改錯題(1題)81.已知一個數(shù)列從0項開始的前3項為0,0,1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)proc的功能是:計算并輸出該數(shù)列前n項的和sum。n的值通過形參傳人。例如,當n=20時,程序的輸出結果應為42762.000000。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動maiil函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

doubleproc(intn)

{

doublesum,s0,s1,s2,s;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

s1=0.0;

s2=1.0;

//****found****

for(k=4;k<n;k++)

}

{

s=s0+s1+s2;

sum+=S:

s0=s1;

s1=s2;

//****found****

s2=s;

returnsum;

}

voidmain

{

intn;

system("CLS");

printf("InputN=");

scanf("%d",&nJ;

printf("%f\n",proc(n));

}

六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc,它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

參考答案

1.A宏替換是在編譯階段前的預處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預處理命令行無須在源文件的開頭,它可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習慣,選項D錯誤。本題答案為A選項。

2.B本題考查實參與形參調(diào)用,從實參傳遞到形參時,只是數(shù)值的傳遞,調(diào)用函數(shù)中值的改變不會影響主函數(shù)中的值,因此原樣輸出。

3.A

4.B解析:—個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是—個返回整型指針的函數(shù)。

5.D解析:如果是指針型變量或數(shù)組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現(xiàn)正確輸入,所以選項B的說法有誤。在輸入數(shù)據(jù)時,不可以指定實型數(shù)據(jù)的精度,所以選項C的說法有誤。只有選項D的說法正確。

6.A題目的fun函數(shù)內(nèi),while循環(huán)條件為“(*b=*a)!=‘\\0’”,執(zhí)行時先把指針a所指向的字符賦給指針b所在的內(nèi)存單元。如果該字符不是結束標識‘\\0’,執(zhí)行循環(huán)體“a++;b++;”,指針a、b分別指向下一個字符單元。再判斷循環(huán)條件,如果成立,繼續(xù)把指針a所指向的字符賦給指針b所在的內(nèi)存單元,直到遇到結束標識為止。故本題答案為A選項。

7.A解析:strcmp(char*,char*),函數(shù)strcmp用于比較兩個字符串的長度,長者為大,若字符個數(shù)也一樣,則從左至右依次比較相同位上的字符,字符大小按ASCⅡ表值計算,直到最后一個字符,若還相同,則兩個字符串相等,返回值0。選項A中if(strcmp(s2,s1)=0)ST,若s2等于s1,則返回值0,0等于0,所以邏輯表達式strcmp(s2,s1)=0為真執(zhí)行ST。

8.D

9.A

10.A

11.D

12.BB選項的特點是順序存儲結構的特點,即數(shù)組的特點。

13.A解析:本題定義了一個指向由3個元素組成的一維數(shù)組的指針變量pa,通過賦值讓它指向具有2行3列的數(shù)組a,此時用指針變量pa,表示數(shù)組元素a[i][j]的形式是pa[i][j]。for循環(huán)執(zhí)行了3次;第一次i值為0,執(zhí)行pa[1][0]=pa[1][0]-1,執(zhí)行后a[1][0]的值變?yōu)?;第二次i值為1,執(zhí)行pa[1][1]=pa[1)[1]-1,執(zhí)行后a[1][1]的值為4;第三次i值為2,執(zhí)行pa[1][2]=1,執(zhí)行后a[1][2]的值變?yōu)?。故printf語句輸入的值為2+4+1=7。所以,A選項為所選。

14.C

15.A解析:在C語言中,應當在定義函數(shù)時指定函數(shù)值的類型。凡不加類型說明的函數(shù),默認按整型處理。在定義函數(shù)時對函數(shù)值說明的類型一般應該和return語句中的表達式類型一致。如果函數(shù)值的類型和return語句中的表達式類型不一致,則以函數(shù)值的類型為準,由系統(tǒng)自動進行轉換,即函數(shù)類型決定返回值的類型。

16.C將兩個字符串連接起來組成一個字符串,選用strcat函數(shù)來連接。

17.A解析:本題考查ifelse語句。在intf(a,B)中:第一個if語句,先判斷條件,發(fā)現(xiàn)a>b條件不成立,則執(zhí)行與其配對的else語句:第二個if語句,先判斷條件,發(fā)現(xiàn)a==b條件不成立,則執(zhí)行與其配對的else語句,c=-1。

18.C

19.C解析:本題考查ifelse語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b成立,執(zhí)行下列的復合語句,得c=a*b=20,b、a的值不變。

20.B

21.交換排序交換排序解析:所謂排序是指將一個無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

22.時間時間解析:算法的復雜度主要指時間復雜度和空間復雜度。

23.includeinclude解析:include命令可調(diào)用標準的C語言庫函數(shù),可以用一對尖括號或一對雙引號將“.h”文件括起來,在include前面要加“#”。

24.!feof(fp)!feof(fp)解析:本題中統(tǒng)計文件中字符個數(shù)的算法可描述為;首先判斷文件位置指針是否指向了文件尾,如果不是則讀出一個字符,同時字符的個數(shù)加1,再判斷文件位置指針是否位于文件尾,如此循環(huán),直到文件位置指針位于文件尾為止。本題首先以讀文件的方式打開了文件“fname.dat”,如果打開成功則把返回的文件型指針賦值給fp,然后通過循環(huán)求文件中的字符數(shù)。首先判斷文件位置指針是否位于文件尾,如果不是則循環(huán)讀取字符,每次字符數(shù)加l。所以下劃處應填循環(huán)條件,文件位置指針不是指向文件尾,即“!feof(fp)”。

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

26.3*sizeof(double)或243*sizeof(double)或24解析:觀察程序可知,本題要求用malloc函數(shù)分配三個double型的動態(tài)內(nèi)存單元。

27.structnode*structnode*解析:本題中的結構類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結構體指針。

28.棧棧解析:棧和隊列都是—種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的—端進行插入或刪除操作,是—種“先進后出”的線性表;而隊列只允許在表的—端進行插入操作,在另—端進行刪除操作,是—種“先進先出”的線性表。

29.a=2b=1a=2,b=1解析:本題考查了switch結構的內(nèi)容。C語言中,程序執(zhí)行完一個case標號的內(nèi)容后,如果沒有break語句,控制結構會轉移到下一個case繼續(xù)執(zhí)行,因為case常量表達式只是起語句標號作用,并不是在該處進行條件判斷。本題程序在執(zhí)行完內(nèi)部switch結構后,繼續(xù)執(zhí)行了外部switch結構的case2:分支,最后a和b的值分別為2和1。

30.實例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應類的一個實例。

31.存儲或物理或存儲結構或物理結構存儲或物理或存儲結構或物理結構解析:數(shù)據(jù)的邏輯結構在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結構(也稱數(shù)據(jù)的物理結構)。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用??芍h(huán)隊列應當是物理結構。

32.6211342321

33.3535解析:考查swap()函數(shù)。函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,參形指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結果為35。

34.fnamefpfname\r\nfp解析:fopen()函數(shù)實現(xiàn)打開文件的功能,通常的調(diào)用方式為:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一個橫線處要求填寫要打開文件的名字fname。fprintf()函數(shù)的—般調(diào)用方式為:fprintf(文件指針,格式字符串,輸出表列),所以第二個橫線處應填寫fp。

35.正確性正確性解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,通過建立完整的信息描述、詳細的功能和行為描述、性能需求和設計約束的說明、合適的驗收標準,給出對目標軟件的各種需求。軟件需求規(guī)格說明書的特點:①正確性;②無歧義性;③完整性;④可驗證性;⑤一致性;⑥可理解性;⑦可追蹤性。其中最重要的是正確性。

36.空間復雜度和時間復雜度算法的復雜性是指對一個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復雜性,算法的計算量是算法的時間復雜性。

37.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。

38.77解析:此表達式為三目運算符,++a的值為6,b--的值為6,則整個表達式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。

39.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作用機制和區(qū)別。

40.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應的大寫字母,結果為ACE。

41.C\r\n軟件工程是試圖用工程、科學和數(shù)學的原理與方法研制、維護計算機軟件的有關技術及管理方法。軟件工程的主要思想是強調(diào)在軟件開發(fā)工程中需要應用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進度無法控制、軟件質(zhì)量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應用需求的增長。軟件項目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術都是軟件工程需要解決的部分問題。因此選項C正確。

42.A解析:本題考查C語言的綜合基礎知識。構成C程序的基本單位是函數(shù),一個C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個程序中的位置如何。C語言的函數(shù)定義都是互相平行、獨立的,在定義函數(shù)時,一個函數(shù)內(nèi)不能定義另一個函數(shù)。C函數(shù)定義的一般格式有兩種:傳統(tǒng)格式和現(xiàn)代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現(xiàn)代格式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。

43.C解析:程序中當i不能整除2時輸出*,然后輸出#,能夠整除2時將結束本次循環(huán),進入到下一次循環(huán)。當循環(huán)結束后,輸出$。

44.A解析:在鏈式存儲結構中,存儲數(shù)據(jù)的存儲空間可以不連續(xù),各數(shù)據(jù)結點的存儲順序與數(shù)據(jù)元素之間的邏輯關系可以不一致,數(shù)據(jù)元素之間的邏輯關系,是由指針域來確定的。由此可見,選項A的描述正確。因此,本題的正確答案為A。

45.D解析:本題考查數(shù)據(jù)結構的基本知識。數(shù)據(jù)之間的相耳關系稱為邏輯結構。通常分為4類基本邏輯結構,即集合、線性結構、樹形結構、圖狀結構或網(wǎng)狀結構。存儲結構是邏輯結構在存儲器中的映象,它包含數(shù)據(jù)元素的映象和關系的映象。存儲結構在計算機中有兩種,即順序存儲結構和鏈式存儲結構。順序存儲結構是把數(shù)據(jù)元素存儲在一塊連續(xù)地址空間的內(nèi)存中;鏈式存儲結構是使用指針把相互直接關聯(lián)的節(jié)點鏈接起來。因此,這兩種存儲結構都是線性的??梢姡壿嫿Y構和存儲結構不是一一對應的。因此,選項A和選項B的說法都是錯誤的。無論數(shù)據(jù)的邏輯結構是線性的還是非線性的,只能選擇順序存儲結構或鏈式存儲結構來實現(xiàn)存儲。程序設計語言中,數(shù)組是內(nèi)存中一段連續(xù)的地址空間,可看作是順序存儲結構。可以用數(shù)組來實現(xiàn)樹型邏輯結構的存儲,比如二叉樹。因此,選項C的說法是錯誤的。

46.A解析:本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②C語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。

選項A)中一個單引號內(nèi)放了若干個字符是錯誤的:選項B)和選項D)選項中將一個字符串賦值給一個字符數(shù)組是允許的。

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

48.A解析:getchar函數(shù)讀入字符時,空格、回車符都作為字符讀入,因此A正確。

49.A解析:函數(shù)的參數(shù)不僅可以是整型、實型、字符型等數(shù)據(jù),還可以是指針型。它的作用是將一個變量的地址傳遞到另一個函數(shù)中。當數(shù)組名作參數(shù)時,如果形參數(shù)組中的各元素的值發(fā)生變化,實參數(shù)組元素的值也將隨之發(fā)生變化。

50.D解析:內(nèi)聚性是一個模塊內(nèi)部各元素間彼此結合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強排列順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。

51.C解析:本題考查數(shù)據(jù)庫的關系代數(shù)運算。R表中只有一個域名A,有兩個記錄(也叫元組),分別是m和n;S表中有兩個域名,分別是B和C,其所對應的記錄分別為1和3。注意觀察表T,它是由R的第一個記錄依次與S的所有記錄組合,然后再由R的第二個記錄與S的所有記錄組合,形成的一個新表。上述運算恰恰符合關系代數(shù)的笛卡兒積運算規(guī)則。關系代數(shù)中,笛卡兒積運算用“×”來表示。因此,上述運算可以表示為T=R×S。因此,本題的正確答案為C。

52.B解析:本題考查printf函數(shù)的格式。在printf函數(shù)中,如果格式說明符中有兩個%說明,則將第1個%后面的字符原樣輸出,并不輸出其對應的變量值。

53.A

54.C遍歷就是不重復地訪問二叉樹的所有結點。二叉樹遍歷的方法有3種:前序遍歷、中序遍歷和后序遍歷。記住3種遍歷的順序:①前序,訪問根→按前序遍歷左子樹→按前序遍歷右子樹。②中序,按中序遍歷左子樹→訪問根→按中序遍歷右子樹。③后序,按后序遍歷左子樹→按后序遍歷右子樹→訪問根。所以對該二叉樹的中序遍歷結果為GDBEHACF。

55.C解析:本題考查了一維字符數(shù)組的定義和初始化。選項C中str[10]初始化為空,可以不必進行類似''的空賦值,字符數(shù)組若沒有進行初始化賦值,默認的字符為空,并且定義完str數(shù)組后,應該用“,”分隔而不是“?!保赃x項C錯誤。

56.C解析:strcat(s1,s2)是把s2字符串連接到s1字符串末尾,strcpy(s1,s2)是把s2字符串復制給s1字符串,要保證s1能容納下連接或復制后的字符串。

57.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同一個存儲單元,且此存儲單元為2個字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以x.i的值為266。

58.C解析:選項A中應將y和m前面的函數(shù)的類型說明符去掉,故選項A不正確;選項B中函數(shù)傳了2個參數(shù),其中一個為整型一個為浮點型,而fun()函數(shù)在定義時聲明的2個參數(shù),一個為整型一個為雙精度型,其參數(shù)類型不一致,故選項B不正確;選項D在調(diào)用函數(shù)時,不應該再聲明其返回類型,故迭項D不正確.所以,4個選項中選項C符合題意。

59.C解析:二分法查找是一種線性查找方法,其基本方法是:首先要用要查找的關鍵碼與線性表中間位置結點的關鍵碼值進行比較,這個中間結點把線性表分為兩個子表,比較相等則查找完畢,不等則根據(jù)查找結果確定下一步的查找應該在哪一個子表中進行,如此下去,直到找到滿足條件的結點:或者確定表中沒有這樣的結點。用二分法查找關鍵碼值11的順序如下所示,其中[]內(nèi)為本次栓索的子表,()內(nèi)為該子表的中間結果。從圖中可以看出,經(jīng)四次查找后,確定表中沒有這樣的結點。因此本題正確答案為選項C(4)。

第一次:[3,6,8,10,12,(15),16,18,21,25,30]

第二次:[3,6,(8),10,12],15,16,18,21,25,30

第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]

第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失敗。

60.B解析:本題考查C語言3個知識點:①將一個字符賦給一個字符變量時,并不是將該字符本身存儲到內(nèi)存中,而是將該字符對應的ASCII碼存儲到內(nèi)存單元中;②大寫字母的ASCII碼值小于其對應小寫字母的ASCII碼值;③只要邏輯與運算符&&的兩個運算對象都為非零,返回值就是1。

61.A第一次循環(huán)返回5+5為l0,第二次循環(huán)返回l4+14為28,所以選擇A)。

62.AC程序對預處理命令行的處理是在程序編譯的過程中進行的,所以選擇A)。

63.C

64.A"%u"表示輸出無符號的整數(shù)(如果輸出值前有符號,將自動轉化為相應的無符號數(shù)輸出)。

65.A

66.B“b+=a;”等價于“b=b+a;”,“a+=2;”等價于“a=a±2;”,“bA=10;”等價于“b=b%=10;”。循環(huán)體執(zhí)行3次,最終結果為7,1。

67.CC語言不僅可以遞歸調(diào)用,還可以對自己進行遞歸調(diào)用,但是,不允許在函數(shù)中再次定義函數(shù),c語言中的coutinue語句,可以通過改變其結構來實現(xiàn)。

68.B

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

70.C

71.A本題考查的是遞歸算法的分析。一個直接或間接地調(diào)用自身的算法稱為遞歸算法。在一個遞歸算法中,至少要包含一個初始值和一個遞歸關系。本題的fun()函數(shù)在x等于0或1時返回3,而在其余情況下返回x—fhn(x一2),所以本題的遞歸算法可以這樣表示:fun(x)=3(x--0或x=1)(初始值)fun(x)=x-fun(x一2)(x≠0且x≠1)(遞歸關系)在主函數(shù)中輸出的結果是run(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5一(3一fun(1)))。

72.B

73.B\nFun函數(shù)功能是把數(shù)組a的每一行的最大值賦給b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9。

\n

74.C

75.D在本題中,定義了三個整型變量x,y,z,并分別賦初值為3,4,5。然后求結果為0的表達式。

選項A中的表達式x&&y,由于在C語言中,有非0即真的定義,即變量x,y的值都不為0,因此表達式的結果不為0。

選項B中的表達式x<=y,由于變量y的值比變量x的值大,因此,該表達式的結果也不為0。

選項C中的表達式x||++y&&y-z,由于運算符&&的優(yōu)先級較||高,那么本表達式等價于x||(++y&&y-z),在表達式中,首先運算++y,將變量y的值變?yōu)?,然后執(zhí)行y-z,得到結果為0,因此,(++y&&y-z)的運算結果為0,但x為非0值,最終的結果不為0。

選項D中的表達式!(x<y&&!z||1),首先運算!z,結果為0,由此可知x<y&&!z的結果為0,但由于||運算符后有一個1,因此,(x<y&&!z||1)部分的結果為1,而再進行邏輯非運算結果為0。

76.C編譯程序、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件.只有教務管理系統(tǒng)才是應用軟件.因此本題答案為C):

77.D

\n要想使程序輸出是25,則在printf中,j-40=25,j=65,而j初值是50,“j+=a[i];”也可寫成i=j+a[i];,j=50+a[i]=65,當a[i]=15,條件滿足,數(shù)組下標由0開始,當i=2時,指向元素10,i=3時,10+5=15,退出循環(huán)體,所以選項D正確。

\n

78.B1、12、123、1234、12345可以寫成l=0*10+1、12=1*10+2、123=12*10+3、1234=123*10+4、12345=1234*10+5,按照這種規(guī)律后一項可以等于前一項乘以10再加上循環(huán)變量。這屬于循環(huán)里面比較難的題目,需要考生找出其數(shù)據(jù)的內(nèi)在規(guī)律,并轉化為計算機語言,基本上都是累加和累乘兩種。

79.A不能將一個整數(shù)直接賦給指針變量作為地址,因此A)是錯誤的。函數(shù)的返回值可以是地址,即指針。函數(shù)調(diào)用中形參值的變化不會傳遞給實參。故本題答案為A)。

80.B首先二維數(shù)組a中的元素都初始化為0,其次定義了指向數(shù)組的指針ptr,并且依次將ptr指向二維數(shù)組

81.\n\t(1)錯誤:for(k=4;k<n;k++)

\n正確:for(k=4;k<=11;k++)

\n(2)錯誤:s2=S;

\n正確:s2=s;)

\n【解析】題目中要求計算數(shù)列前n項的和,包括第n項,因此“for(k=4;k<n;k++)”中的“k<n”應改為“k<=n”;根據(jù)C語言的語法規(guī)則,for循環(huán)體中的多條語句必須在大括號“{”和“}”之間,因此,要在語句s2=s;后加上)。\n

82.\n\tvoidproc(char*str)\n\n\n\t{\n\n\n\tchar*p=str:\n\n\n\twhile(*p==*)p++;//通過P的移動來達\n\n\n\t到使P指向第一個不是*號的字符\n\n\n\tfor(;*p!=\0

;p++,str++)//把從第一個\n\n\n\t不是*號的字符放到a中‘\n\n\n\t*str=*P:\n\n\n\t*str=\0

;//最后用\0作為字符串結束標志\n\n\n\t}\n\n\n\t【解析】題目中要求將字符串中的前導*號全部刪除首先將指針p移動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結束符。\n2021年內(nèi)蒙古自治區(qū)興安盟全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下敘述中正確的是()。

A.宏替換不占用程序的運行時間

B.預處理命令行必須位于源文件的開頭

C.在源文件的一行上可以有多條預處理命令

D.宏名必須用大寫字母表示

2.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出的結果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

3.下述哪一個是順序存儲結構的優(yōu)點()。

A.存儲密度大B.插入運算方便C.刪除運算方便D.可方便地用于各種邏輯結構的存儲表示

4.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

5.下列有關格式輸入函數(shù)scanf的敘述中正確的是()

A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”

B.可以只有格式控制項,沒有地址列表項

C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);

D.當輸入數(shù)據(jù)時,必須指明變量地址

6.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.將a所指字符串賦給b所指空間

B.使指針b指向a所指字符串

C.將a所指字符串和b所指字符串進行比較

D.檢查a和b所指字符串中是否有‘\0’

7.下列選項中,能夠滿足“若字符串s1等于字符串s2,則執(zhí)行ST”要求的是()。A.if(strcmp(s2,s1)==0)ST;

B.if(s1===s2)ST;

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

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

8.

9.

10.若有以下定義和語句

chars1[10]="abcd!",*s2="\n123\\";

printf("%d%d\n",strlen(s1),strlen(s2));

則輸出結果是A.A.55B.105C.107D.58

11.

12.鏈表不具有的特點是()。

A.插入、刪除不需要移動元素B.可隨機訪問任一元素C.不必事先估計存儲空間D.所需空間與線性長度成正比

13.有以下程序:main(){inta[][3]={{1,2,3),{4,5,0)),(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結果是()。

A.7B.6C.8D.無確定值

14.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項中正確的輸入語句是A.scanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

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

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

B.return語句中表達式值的類型

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

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

16.將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

17.下列程序的輸出結果是()。

#include<stdio.h>

main()

{iuta=2,b=3,p;

p=f(a,B)

printf("%d",p);

}

intf(a,b)

{intc;

if(a>B)c=1;

e1Seif(a==B)c=0;

else(3=-1;

return(C);

}

A.-1B.0C.1D.2

18.

19.下列程序的輸出結果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

20.一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()

A.不確定B.n-i+1C.iD.n-i

二、2.填空題(20題)21.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

22.算法的復雜度主要包括空間復雜度和______復雜度。

23.調(diào)用C語言標準庫函數(shù)時要求用【】命令。

24.以下程序用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>

#include"stdio.h"

main()

{FILE*fp;longnum=OL;

if((fp=fopen("fname.dat","r")==NULL)

{Pirntf("Openerror\n");exit(0);}

while(【】)

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

25.若給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;

}

26.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

27.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

28.按“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結構是[]。

29.以下程序的運行結果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

30.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

31.數(shù)據(jù)結構分為邏輯結構和存儲結構,循環(huán)隊列屬于______結構。

32.若輸入21、23、34、11、2、6,則以下程序的運行結果【】。

main()

{inti;

char+p,num[6];

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

scanf("%d,",&num[i]);

scanf("%d",&num[5]);

p=&num[0];

sort(p,6);

for(i=0;i<5;i++)printf("%d,",num[i]);

printf("%d\n",num[5]);

}

sort(p,m)

char*p;

intm;

{inti;

charchange,*p1,*p2;

for(i=0;i<m/2;i++)

{p1=p+i;

p2=p+(m-1-i);

change=*p1;

*p1=*p2;

*p2=change;

}

}

33.以下程序的輸出結果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

34.以下程序中用戶由鍵盤輸入一個文件名,然后輸入一串字符(用#結束輸入)存放到此文件中,形成文本文件,并將字符的個數(shù)寫到文件的尾部。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

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

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

35.軟件需求規(guī)格說明書應具有完整性、無歧義性、正確性、可驗證性、可修復性等特性,其中最重要的是()。

36.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

37.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達式是【】。

38.設inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。

39.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

40.以下程序的輸出結果是【】。

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

三、1.選擇題(20題)41.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術問題

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

A.構成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

43.以下程序的輸出結果是()。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

44.下列對于線性鏈表的描述中正確的是()。

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

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

A.數(shù)據(jù)的邏輯結構與存儲結構必定是一一對應的

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

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

D.以上3種說法都不對

46.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]='goodmoming';

B.charc[20]="goodmorning";

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

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

47.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

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

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

}

main()

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

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

}

程序的運行結果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

48.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是______。

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

B.程序將等待用戶輸入2個字符

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

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

49.下列程序執(zhí)行后的輸出結果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

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

50.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

51.設有如下三個關系表:

下列操作中正確的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

52.

若有下列定義(設int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

printf("i=%%d,j=%%d\n",i,j);

輸出的結果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

53.下列程序的輸出結果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

54.對下列二叉樹進行中序遍歷的結果是()

A.ABCDEFGHB.ABDGEHCFC.GDBEHACFD.GDHEBFCA

55.以下正確的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

56.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復制到字符串str3之后

C.將字符串str2復制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復制到字符串str3中

57.下列程序的執(zhí)行結果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i)}

A.266B.11C.265D.138

58.有以下函數(shù)定義:

voidfun(intn,doublex){……}

若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

59.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關鍵碼值11,所需的關鍵碼比較次數(shù)為______。

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

60.在執(zhí)行完下列的C語句段之后,則B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));

A.0B.1C.TRUED.FALSE

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

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

A.C程序對預處理命令行的處理是在程序執(zhí)行的過程中進行的

B.預處理命令行的最后不能以分號表示結束

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

D.在程序中凡是以“#”開始的語句行都是預處理命令行

63.

64.執(zhí)行語句printf(

溫馨提示

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

評論

0/150

提交評論