全國計算機等級考試二級C語言筆試試題及答案6套_第1頁
全國計算機等級考試二級C語言筆試試題及答案6套_第2頁
全國計算機等級考試二級C語言筆試試題及答案6套_第3頁
全國計算機等級考試二級C語言筆試試題及答案6套_第4頁
全國計算機等級考試二級C語言筆試試題及答案6套_第5頁
已閱讀5頁,還剩66頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2022年3月全國計算機等級考試二級C語言筆試試題及答案(1)下列敘述中正確的是

A)棧是先進先出(FIFO)的線性表B)隊列是先進先出(FIFO)的線性表C)循環隊列是非線性結構D)有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構(2)支持子程序調用的數據結構是

A)棧

B)樹

C)隊列

D)二叉樹(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是

A)10

B)8

C)6

D)4(4)下列排序方法中,最壞情況下比較次數最少的是

A)冒泡排序

B)簡單選擇排序

C)直接插入排序

D)堆排序(5)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是

A)編譯軟件

B)操作系統

C)教務管理系統

D)匯編程序(6)下面敘述中錯誤的是A)軟件測試的目的是發現錯誤并改正錯誤B)對被調試的程序進行“錯誤定位”是程序調試的必要步驟C)程序調試通常也稱為DebugD)軟件測試應嚴格執行測試計劃,排除測試的隨意性(7)耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是A)提高耦合性降低內聚性有利于提高模塊的獨立性B)降低耦合性提高內聚性有利于提高模塊的獨立性C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度D)內聚性是指模塊間互相連接的緊密程度(8)數據庫應用系統中的核心問題是A)數據庫設計

B)數據庫系統設計C)數據庫維護

D)數據庫管理員培訓(9)有兩個關系R,S如下:RSABCa32b01c21ABa3b0c2

由關系R通過運算得到關系S,則所使用的運算為A)選擇

B)投影

C)插入

D)連接(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為A)屬性

B)鍵

C)關系

D)域(11)以下選項中合法的標識符是

A)1-1

B)1—1

C)-11

D)1--(12)若函數中有定義語句:intk;,則

A)系統將自動給k賦初值0

B)這時k中值無定義

C)系統將自動給k賦初值-1

D)這時k中無任何值(13)以下選項中,能用作數據常量的是

A)o115

B)0118

C)1.5e1.5

D)115L(14)設有定義:intx=2;,以下表達式中,值不為6的是A)x*=x+1

B)x++,2*x

C)x*=(1+x)

D)2*x,x+=2(15)程序段:intx=12;

doubley=3.141593;printf(“%d%8.6f”,x,y);的輸出結果是A)123.141593

B)12

3.141593

C)12,3.141593

D)123.141593(16)若有定義語句:doublex,y,*px,*py,執行了px=&x,py=&y;之后,正確的輸入語句是

A)scanf(“%f%f”,x,y);

B)scanf(“%f%f”,&x,&y);

C)scanf(“%lf%le”,px,py);

D)scanf(“%lf%lf”,x,y);(17)以下是if語句的基本形式:if(表達式)語句,其中表達式A)必須是邏輯表達式

B)必須是關系表達式C)必須是邏輯表達式或關系表達式

D)可以是任意合法的表達式(18)有以下程序#include<stdio.h>main(){intx;scanf(“%d”,&x);if(x<=3);elseif(x!=10)

printf(“%d\n”,x);}程序運行時,輸入的值在哪個范圍才會有輸出結果A)不等于10的整數

B)大于3且不等于10的整數C)大于3或等于10的整數

D)小于3的整數(19)有以下程序#include<stdio.h>Main(){

inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)

printf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);}程序運行后的輸出結果是A)1,2,3

B)1,3,2

C)1,3,3

D)3,2,1(20)以下程序中的變量已正確定義for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(“*”);程序段的輸出結果是A)********

B)****

C)**

D)*(21)有以下程序#include<stdio.h>main(){char

*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII碼值為65。程序運行后的輸出結果是A)5670

B)656667

C)567

D)ABC(22)設變量已正確定義,以下不能統計出一行中輸入字符個數(不包含回車符)的程序段是A)n=0;while((ch=getchar())!=’\n’)n++;

B)n=0;while(getchar()!=’\n’)n++;C)for(n=0;getchar()!=’\n’;n++);

D)n=0;for(ch=getchar();ch!=’\n’;n++);(23)有以下程序#include<stdio.h>main(){inta1,a2;charc1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);printf(“%d,%c,%d,%c”,&1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的是為34,c1的值為字符a,c2的值為字符b,程序輸出結果是:12,a,34,b,則正確的輸入格式是(以下

代表空格,<CR>代表回車)A)12a34b<CR>

B)12

a

34

b<CR>C)12,a,34,b<CR>

D)12

a34

b<CR>(24)有以下程序#include<stdio.h>intf(intx,inty){return()y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序運行后的輸出結果是A)10

B)9

C)8

D)7(25)有以下程序#include<stdio.h>voidfun(char

*s){while(*s)

{if(*s%2==0)

printf(“%c”,*s);s++;

}}main(){char

a[]={“good”};

fun(a);printf(“\n”);}注意:字母a的ASCII碼值為97,程序運行后的輸出結果是A)d

B)go

C)god

D)good(26)有以下程序#include<stdio.h>voidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y-5,*P=&x,*q=&y;

fun(p,q);printf(“%d,%d,”,*p,*q);fun(&x,&y);printf(“%d,%d\n”,*p,*q);}程序運行后的輸出結果是A)3,5,5,3

B)3,5,3,5

C)5,3,3,5

D)5,3,5,3(27)有以下程序#include<stdio.h>voidf(int*p,int*q);main(){intm=1,n=2,*r=&m;

f(r,&n);printf(“%d,%d”,m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序運行后輸出的結果是A)1,3

B)2,3

C)1,4

D)1,2(28)以下函數按每行8個輸出數組中的數據voidfun(int*w,intn){inti;

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

{________

printf(“%d”,w);

}

printf(“\n”);}下劃線處應填入的語句是A)if(i/8==0)print(“\n”);

B)if(i/8==0)continue;C)if(i%8==0)print(“\n”);

D)if(i%8==0)continue;(29)若有以下定義

intx[10],*pt=x;則對x數組元素的正確應用是A)*&x[10]

B)*(x+3)

C)*(pt+10)

D)pt+3

(30)設有定義:chars[81];inti=10;,以下不能將一行(不超過80個字符)帶有空格的字符串真確讀入的語句或語句組是Agets(s)

B)while((s[i++]=getchar())!=”\n”;s=”\0”;C)scanf(“%s”,s);D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;(31)有以下程序#include<stdio.h>main(){char*a[]={“abcd”,”ef”,”gh”,”ijk”};intI;

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

printf(“%c”,*a);}程序運行后輸出的結果是A)aegi

B)dfhk

C)abcd

D)abcdefghijk(32)以下選項中正確的語句組是A)chars[];s=”BOOK!”;

B)char*s;s={”BOOK!”};C)chars[10];s=”BOOK!”;

D)char*s;s=”BOOK!”;(33)有以下程序#include<stdio.h>intfun{intx,inty}{if(x==y)return(x);

elsereturn((x+y)/2)}main(){inta=4,b=5,c=6;

printf(“%d\n”,fun(2*a,fun(b,c)))}程序運行后的輸出結果是A)3

B)6

C)8

D)12(34)設函數中有整型變量n,為保證其在未賦值的情況下初值為0,應選擇的存儲類別是A)auto

B)register

C)static

D)auto或register(35)有以下程序#include<stdio.h>intb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},I;

for(i=2;i<4;i++){b=fun(&a)+b;printf(“%d”,b);}

printf(“\n”);}程序運行后輸出的結果是A)10

12

B)8

10

C)10

28

D)10

16(36)有以下程序#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序運行后輸出的結果是A)14.0

B)31.5

C)7.5

D)程序有錯無輸出結果(37)有以下程序#include<stdio.h>structord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=dt;

printf(“%d,”,++p->x);printf(“%d\n”,++p->y);}程序的運行結果是A)1,2

B)2,3

C)3,4

D)4,1(38)設有宏定義:#include

IsDIV(k,n)((k%n==1)?1:0且變量m已正確定義并賦值,則宏調用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是A)判斷m是否能被5或者7整除B)判斷m是否能被5和7整除C)判斷m被5或者7整除是否余1D)判斷m被5和7整除是否余1(39)有以下程序#include<stdio.h>main(){inta=5,b=1,t;

t=(a<<2|b);printf(“%d\n”,t)

}程序運行后的輸出結果是A)21

B)11

C)6

D)1(40)有以下程序#include<stdio.h>main(){FILE*f;

f=fopen(“filea.txt”,”w”);

fprintf(f,”abc”);

fclose(f);}若文本文件filea.txt中原有內容為:hello,則運行以上程序后,文件filea.txt中的內容為A)helloabc

B)abclo

C)abc

D)abchello

二、填空題(每空2分,共30分)

請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。(1)假設一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有【1】個元素。(2)軟件測試可分為白盒測試和黑盒測試。基本路徑測試屬于

【2】測試。(3)符合結構化原則的三種基本控制結構是:選擇結構、循環結構和

【3】。(4)數據庫系統的核心是

【4】(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯系的是

【5】框。(6)表達式(int)((double)(5/2)+2.5)的值是【6】(7)若變量x、y已定義為int類型且x的值為99,y的值為9,請將輸出語句printf(【7】,x/y);補充完整,使其輸出的計算結果形式為:x/y=11(8)有以下程序#include<stdio.h>main(){

charc1,c2;

scanf(“&c”,&c1);

while(c1<65||c1>90)

scanf(“&c”,&c1);

c2=c1+32;

printf(“&c,&c\n”,c1,c2);}程序運行輸入65回車后,能否輸出結果、結束運行(請回答能或不能)【8】。

(9)以下程序運行后的輸出結果是【9】#include<stdio.h>main(){intk=1,s=0;do{if{((k&2)!=0)continue;s+=k;k++;}while(k)10);printf(“s=&d/n”,s);}

(10)下列程序運行時,若輸入labced12df<回車>輸出結果為【10】

#include<stdio.h>main(){char

a=0,ch;while((ch=getchar())!=’\n’){if(a&2!=0&&(ch>’a’&&ch<=’z’))ch=ch-‘a’+’A’;a++;putchar(ch);}printf(“\n”);}(11)有以下程序,程序執行后,輸出結果是【11】#include<stdio.h>voidfun(int*a){a[0=a[1];]}main(){inta[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--)fun{&a};for(i=0;i<10;i++)printf(“&d”,a);printf(“\n”);}(12)請將以下程序中的函數聲明語句補充完整#include<stdio.h>int【12】;main(){intx,y,(*p)();p=max;printf(“&d\n”,&x,&y);}Intmax(inta,intb){return(a>b/a:b);}(13)以下程序用來判斷指定文件是否能正常打開,請填空#include<stdio.h>main(){FILE*fp;if(((fp=fopen(“test.txt”,”r”))==【13】))printf(“未能打開文件!\n”);elseprintf(“文件打開成功!\n”);(14)下列程序的運行結果為【14】#include<stdio.h>#include<string.h>structA{inta;charb[10];double

c;};void

f(struct

A

*t);main(){structAa=(1001,”ZhangDa”,1098,0);f(&a);printf(“&d,&s,&6,if\n”,a.a,a.b,a.c);}voidf(struct

A

*t){strcpy(t->b,”ChangRong”);

}(15)以下程序把三個NODETYPE型的變量鏈接成一個簡單的鏈表,并在while循環中輸出鏈表結點數據域中的數據,請填空#include<stdio.h>structnode{intdata;structnode*next;};typedefstructnodeNODETYPE;main(){NODETYPEa,b,c,*h,*p;a.data=10;b.data=20;c.data=30;h=&a;b.next=&b;b.next=&c;c.next=’\0’;p=h;while(p){printf(“&d”,p->data);【15】;}}一、選擇題1~10DACDCABABC11~20CBDDACDBCD21~30CDABABACBC31~40ADBCCDBDAC二、選擇題1.192.白盒3.順序結構4.數據庫管理系統5.菱形6.47.“x/y=%d”8.不能9.s=010.1AbCeDf2Df11.777765432112.max(inta,intb)13.NULL14.1001ChangRong1008.015.p++或p=p->next2022年9月全國計算機等級考試二級C語言筆試試題及答案一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分)(1)下列數據結構中,屬于非線性結構的是A)循環隊列B)帶鏈隊列C)二叉樹D)帶鏈棧(2)下列數據結果中,能夠按照“先進后出”原則存取數據的是A)循環隊列B)棧C)隊列D)二叉樹(3)對于循環隊列,下列敘述中正確的是A)隊頭指針是固定不變的B)隊頭指針一定大于隊尾指針C)隊頭指針一定小于隊尾指針D)隊頭指針可以大于隊尾指針,也可以小于隊尾指針(4)算法的空間復雜度是指A)算法在執行過程中所需要的計算機存儲空間B)算法所處理的數據量C)算法程序中的語句或指令條數D)算法在執行過程中所需要的臨時工作單元數(5)軟件設計中劃分模塊的一個準則是A)低內聚低耦合B)高內聚低耦合C)低內聚高耦合D)高內聚高耦合(6)下列選項中不屬于結構化程序設計原則的是A)可封裝D)自頂向下C)模塊化D)逐步求精(7)軟件詳細設計產生的圖如下:該圖是A)N-S圖B)PAD圖C)程序流程圖D)E-R圖(8)數據庫管理系統是A)操作系統的一部分B)在操作系統支持下的系統軟件C)一種編譯系統D)一種操作系統(9)在E-R圖中,用來表示實體聯系的圖形是A)橢圓圖B)矩形C)菱形D)三角形(10)有三個關系R,S和T如下:

其中關系T由關系R和S通過某種操作得到,該操作為A)

選擇B)

投影C)

交D)

并(11)以下敘述中正確的是A)程序設計的任務就是編寫程序代碼并上機調試B)程序設計的任務就是確定所用數據結構C)程序設計的任務就是確定所用算法D)以上三種說法都不完整(12)以下選項中,能用作用戶標識符的是A)voidB)8_8C)_0_D)unsigned(13)閱讀以下程序#include<stdio.h>main(){intcase;floatprintF;printf(“請輸入2個數:”);scanf(“%d%f”,&case,&pjrintF);printf(“%d%f\n”,case,printF);}該程序編譯時產生錯誤,其出錯原因是A)定義語句出錯,case是關鍵字,不能用作用戶自定義標識符B)定義語句出錯,printF不能用作用戶自定義標識符C)定義語句無錯,scanf不能作為輸入函數使用D)定義語句無錯,printf不能輸出case的值(14)表達式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定義語句:intx=10;,則表達式x-=x+x的值為A)-20B)-10C)0D)10(16)有以下程序#include<stdio.h>main(){inta=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序運行后的輸出結果是A)0,0B)1,0C)3,2D)1,2(17)設有定義:inta=1,b=2,c=3;,以下語句中執行效果與其它三個不同的是A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}C)if(a>b)c=a;a=b;b=c;D)if(a>b){c=a;a=b;b=c;}(18)有以下程序#include<stdio.h>main(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=kcase2:c++;break;case4:c+=2;break;}printf(“%d\n”,c);}程序運行后的輸出結果是A)3B)5C)7D)9(19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c))k=1;elsek=0;B)if((a>b)||(b>c)k=1;elsek=0;C)if(a<=b)k=0;elseif(b<=c)k=1;D)if(a>b)k=1;elseif(b>c)k=1;elsek=0;(20)有以下程序#include<stdio.h>main(){chars[]={“012xy”};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++;printf(“%d\n”,n);}程序運行后的輸出結果是A)0B)2C)3D)5(21)有以下程序#include<stdio.h>main(){intn=2,k=0;while(k++&&n++>2);printf(“%d%d\n”,k,n);}程序運行后的輸出結果是A)02B)13C)57D)12(22)有以下定義語句,編譯時會出現編譯錯誤的是A)chara=’a’;B)chara=’\n’;C)chara=’aa’;D)chara=’\x2d’;(23)有以下程序#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII碼為65,程序運行后的輸出結果是A)E,68B)D,69C)E,DD)輸出無定值(24)有以下程序#include<stdio.h>voidfun(intp){intd=2;p=d++;printf(“%d”,p);}main(){inta=1;fun(a);printf(“%d\n”,a);}程序運行后的輸出結果是A)32B)12C)21D)22(25)以下函數findmax擬實現在數組中查找最大值并作為函數值返回,但程序中有錯導致不能實現預定功能#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];}returnmax;}造成錯誤的原因是A)定義語句inti,max;中max未賦初值B)賦值語句max=MIN;中,不應給max賦MIN值C)語句if(max<x[i])max=x[i];中判斷條件設置錯誤D)賦值語句max=MIN;放錯了位置(26)有以下程序#include<stdio.h>main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序運行后的輸出結果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定義語句:inta[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序運行后的輸出結果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#include<stdio.h>main(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i[=0;}for(i=0;i<4;i++)printf(“%d”,a[i]);printf(“\n”);}A)3344B)2050C)3040D)0304(30)有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序運行后的輸出結果是A)7,4B)4,10C)8,8D)10,10(31)下面是有關C語言字符數組的描述,其中錯誤的是A)不可以用賦值語句給字符數組名賦字符串B)可以用輸入語句把字符串整體輸入給字符數組C)字符數組中的內容不一定是字符串D)字符數組只能存放字符串(32)下列函數的功能是fun(char*a,char*b){while((*b=*a)!=’\0’){a++,b++;}}A)將a所指字符串賦給b所指空間B)使指針b指向a所指字符串C)將a所指字符串和b所指字符串進行比較D)檢查a和b所指字符串中是否有’\0’

(33)設有以下函數voidfun(intn,char*s){……}則下面對函數指針的定義和賦值均是正確的是A)void(*pf)();pf=fun;B)viod*pf();pf=fun;C)void*pf();*pf=fun;D)void(*pf)(int,char);pf=&fun;(34)有以下程序#include<stdio.h>intf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}intf(intn){staticinta=1;n+=a++;returnn;}程序運行以后的輸出結果是A)7B)8C)9D)10(35)有以下程序#include<stdio.h>#definef(x)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序運行后的輸出結果是A)10,64B)10,10C)64,10D)64,64(36)下面結構體的定義語句中,錯誤的是A)structord{intx;inty;intz;};structorda;B)structord{intx;inty;intz;}structorda;C)structord{intx;inty;intz;}a;D)struct{intx;inty;intz;}a;(37)設有定義:char*c;,以下選項中能夠使字符型指針c正確指向一個字符串的是A)charstr[]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include<stdio.h>

#include<string.h>structA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}structAf(structAt)(t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;returnt;)程序運行后的輸出結果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段intr=8;printf(“%d\n”,r>>1);輸出結果是A)16B)8C)4D)2(40)下列關于C語言文件的敘述中正確的是A)文件由一系列數據依次排列組成,只能構成二進制文件B)文件由結構序列組成,可以構成二進制文件或文本文件C)文件由數據序列組成,可以構成二進制文件或文本文件D)文件由字符序列組成,其類型只能是文本文件二、填空題(每空2分,共30分)(1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中共有【1】個結點。(2)程序流程圖中的菱形框表示的是【2】。(3)軟件開發過程主要分為需求分析、設計、編碼與測試四個階段,其中【3】階段產生“軟件需求規格說明書。(4)在數據庫技術中,實體集之間的聯系可以是一對一或一對多或多對多的,那么“學生”和“可選課程”的聯系為【4】。(5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。其中可以作為主關鍵字的是【5】。(6)若有定義語句:inta=5;,則表達式:a++的值是【6】。(7)若有語句doublex=17;inty;,當執行y=(int)(x/5)%2;之后y的值為【7】。(8)以下程序運行后的輸出結果是【8】。#include<stdio.h>main(){intx=20;printf(“%d”,0<x<20);printf(“%d\n”,0<x&&x<20);}(9)以下程序運行后的輸出結果是【9】。#include<stdio.h>main(){inta=1,b=7;do{b=b/2;a+=b;}while(b>1);printf(“%d\n”,a);}(10)有以下程序#include<stdio.h>main(){intf,f1,f2,i;f1=0;f2=1;printf(“%d%d”,f1,f2);for(i=3;i<=5;i++){f=f1+f2;printf(“%d”,f);f1=f2;f2=f;}printf(“\n”);}程序運行后的輸出結果是【10】。(11)有以下程序#include<stdio.h>inta=5;voidfun(intb){inta=10;a+=b;printf(“%d”,a);}main(){intc=20;fun(c);a+=c;printf(“%d\n”,a);}程序運行后的輸出結果是【11】。(12)設有定義:structperson{intID;charname[12];}p;請將scanf(“%d”,【12】);語句補充完整,使其能夠為結構體變量p的成員ID正確讀入數據。(13)有以下程序#include<stdio.h>main(){chara[20]=”Howareyou?”,b[20];scanf(“%s”,b);printf(“%s%s\n”,a,b);}程序運行時從鍵盤輸入:Howareyou?<回車>則輸出結果為【13】。(14)有以下程序#include<stdio.h>typedefstruct{intnum;doubles}REC;voidfun1(RECx){x.num=23;x.s=88.5;}main(){RECa={16,90.0};fun1(a);printf(“%d\n”,a.num);}程序運行后的輸出結果是【14】。(15)有以下程序#include<stdio.h>fun(intx){if(x/2>0)run(x/2);printf(“%d”,x);}main(){fun(6);printf(“\n”);}程序運行后的輸出結果是【15】。一、選擇題1~10CBDABACBCD11~20DCABBDCAAB21~30DCACDBACCB31~40DAACABADCC二、選擇題1.142.邏輯條件3.需求分析4.多對多5.身份證號6.57.18.109.510.0112311.302512.&p.ID13.Howareyou?How14.1615.1362010年3月全國計算機等級考試二級筆試試卷C語言程序設計及參考答案(考試時間90分鐘,滿分100分)一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分。共70分)下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡上,答在試卷上不得分。(1)下列敘述中正確的是A)對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數為nB)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2)C)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(log2n)D)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(nlog2n)(2)算法的時間復雜度是指

A)算法的執行時間

B)算法所處理的數據量

C)算法程序中的語句或指令條數

D)算法在執行過程中所需要的基本運算次數(3)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是

A)編輯軟件

B)操作系統

C)教務管理系統

D)瀏覽器(4)軟件(程序)調試的任務是

A)診斷和改正程序中的錯誤

B)盡可能多地發現程序中的錯誤

C)發現并改正程序中的所有錯誤

D)確定程序中錯誤的性質(5)數據流程圖(DFD圖)是

A)軟件概要設計的工具

B)軟件詳細設計的工具

C)結構化方法的需求分析工具

D)面向對象方法的需求分析工具(6)軟件生命周期可分為定義階段,開發階段和維護階段。詳細設計屬于

A)定義階段

B)開發階段

C)維護階段

D)上述三個階段(7)數據庫管理系統中負責數據模式定義的語言是

A)數據定義語言

B)數據管理語言

C)數據操縱語言

D)數據控制語言(8)在學生管理的關系數據庫中,存取一個學生信息的數據單位是

A)文件

B)數據庫

C)字段

D)記錄(9)數據庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬于數據庫設計的

A)需求分析階段

B)邏輯設計階段C)概念設計階段D)物理設計階段

(10)有兩個關系R和T如下:R

TABCa12b22c32ABCc32d32則由關系R得到關系T的操作是A)選擇

B)投影

C)交

D)并(11)以下敘述正確的是A)C語言程序是由過程和函數組成的B)C語言函數可以嵌套調用,例如:fun(fun(x))C)C語言函數不可以單獨編譯D)C語言中除了main函數,其他函數不可以作為單獨文件形式存在(12)以下關于C語言的敘述中正確的是A)C語言中的注釋不可以夾在變量名或關鍵字的中間B)C語言中的變量可以再使用之前的任何位置進行定義C)在C語言算術的書寫中,運算符兩側的運算數類型必須一致D)C語言的數值常量中夾帶空格不影響常量值的正確表示(13)以下C語言用戶標示符中,不合法的是A)_1

B)AaBc

C)a_b

D)a--b(14)若有定義:doublea=22;inti=0,k=18;則不符合C語言規定的賦值語句是A)a=a++,i++

B)i=(a+k)<=(i+k)

C)i=a%11

D)i=!a(15)#include<stdio.h>main(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();

d=getchar();printf("%c%c%c%c\n",a,b,c,d);}當執行程序時,按下列方式輸入數據(從第一列開始,<CR>代表回車,注意:回車是一個字符)12<CR>34<CR>則輸出結果是:A)1234

B)12

C)12

D)12

3

34(16)以下關于C語言數據類型使用的敘述中錯誤的是:A)若要準確無誤的表示自然數,應使用整數類型。B)若要保存帶有多位小數的數據,應使用雙精度類型。C)若要處理如"人員信息"等含有不同類型的相關數據,應自定義結構體類型。D)若只處理"真"和"假"兩種邏輯值,應使用邏輯類型。(17)若a是數值類型,則邏輯表達式(a==1)||(a!=1)的值是:A)1

B)0

C)2

D)不知道a的值,不能確定(18)以下選項中與if(a==1)a=b;elsea++;語句功能不同的switch語句是:A)switch(a)

B)switch(a==1)

{case1:a=b;break;

{

case0:a=b;break;

default:a++;

case1:a++;}

}C)switch(a)

D)switch(a==1)

{

default:a++;break;

{

case1:a=b;break;

case1:a=b;

case0:a++;}

}(19)有如下嵌套的if語句

if(a<b)

if(a<c)

k=a;

else

k=c;

else

if(b<c)

k=b;

else

k=c;以下選項中與上述if語句等價的語句是A)k=(a<b)?a:b;k=(b<c)?b:c;B)k=(a<b)?((b<c)?a:b):((b<c)?b:c);C)k=(a<b)?((a<c)?a:c):((b<c)?b:c);D)k=(a<b)?a:b;k=(a<c)?a;c(20)有以下程序#include

<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf("m=%d\n",m)}程序運行后的輸出結果是A)m=6

B)m=2

C)m=4

D)m=5

(21)有以下程序#includes<stdio.h>main(){inta=1,b=2;

for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序運行后的輸出結果是A)9,18

B)8,11

C)7,11

D)10,14(22)有以下程序,其中k的初值為八進制數#include<stdio.h>main(){intk=011;printf("%d\n",k++);}程序運行后的輸出結果是A)12

B)11

C)10

D)9(23)下列語句中,正確的是A)char*s;s="Olympic";

B)chars[7];s="Olympic";C)char*s;s={"Olympic"};

D)chars[7];s={"Olympic"};(24)以下關于return語句的敘述中正確的是A)一個自定義函數中必須有一條return語句B)一個自定義函數中可以根據不同情況設置多條return語句C)定義成viod類型的函數中可以有帶返回值的return語句D)沒有return語句的自定義函數在執行結束時不能返回到調用處

(25)下列選項中,能夠正確定義數組的語句是A)intnum[0..2008];

B)intnum[];C)intN=2008;

D)#defineN2008

intnum[N];

intnum[N](26)有以下程序#include<stdio.h>voidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;

fun(&b,a);printf("%c,%c\n",b,a);}程序運行后的輸出結果是

A)b,B,b,A

B)b,B,B,A

C)a,B,B,a

D)a,B,a,B

(27)若有定義int(*pt)[3];,則下列說法正確的是A)定義了基類型為int的三個指針變量B)定義了基類型為int的具有三個元素的指針數組pt。C)定義了一個名為*pt、具有三個元素的整型數組D)定義了一個名為pt的指針變量,它可以指向每行有三個整數元素的二維數組

(28)設有定義doublea[10],*s=a;,一下能夠代表數組元素a[3]的是A)(*s)[3]

B)*(s+3)

C)*s[3]

D)*s+3

(29)有以下程序#include<stdio.h>main(){inta[5]={1,2,3,4,5},b[5]={0,2,1,3,0},is=0

for(i=0;i<5;i++)s=s+a[b[i]];printf("%d\n",s);}程序運行后的輸出結果是A)6

B)10

C)11

D)1530)有以下程序

#include<stdio.h>

main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

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

t+=b[i][b[j][i]];Printf("%d\n",t);}程序運行后的輸出結果是A)1

B)3

C)4

D)9(31)若有以下定義和語句charsl[10]="abcd!",*s2="n123\\";

printf("%d%d\n",strlen(s1),strlen(s2));則輸出結果是A)55

B)105

C)107

D)58(32)有以下程序

#include<stdio.h>

#defineN8

voidfun(int

*x,inti)

{*x=*(x+i);}main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2);i++){printf("%d",a[i]);}printf("\n");}程序運行后的輸出結果是A)1313

B)2234

C)3234

D)1234(33)有以下程序#include<studio.h>intf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f{a,4};printf("%d\n",s);}intf(intt[],intn){if(n>0)

returnt[n-1]+f(t,n-1);else

return0;}程序運行后的輸出結果是A)4

B)10

C)14

D)6

(34)有以下程序#include<studio.h>intfun(){staticint

x=1;x*=2;return

x;}main(){intI,s=1;for(i=1;i<=2;i++)

s=fun();printf("%d\n",s);}程序運行后的輸出結果是A)0

B)1

C)4

D)8(35)以下程序#include<stdio.h>#define

SUB(a)

(a)-(a)main(){int

a=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序運行后的結果是A)0

B)-12

C)-20

D)10(36)沒有定義structcomplex{

int

real,unreal;}datal={1,8},data2;則以下賦值語句中的錯誤的是A)data2=data1;

B)data2=(2,6);C)data2.real1=data1.real;

D)data2.real=data1.unreal;

(37)有以下程序#include<studio.h>#include<string.h>structA{inta;charb[10];doublec;};voidf(struct

A

t);main(){struct

A

a={1001,"ZhangDa",1098.0};f(a);pringt("%d,%s,%6.1f\n",a.a,a.b,a.c);}voidf(struct

A

t){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序運行后的輸出結果是A)1001,ZhangDa,1098.0

B)1002,ChangRong,1202.0C)1001,ChangRong,1098.0

D)1002,ZhangDa,1202.0(38)有以下定義和語句struct

workers{int

num;charname[20];charc;srruct{intday;intmonth;intyear;}s;};structworkers

w,*pw;pw=&w能給w中year成員賦1980的語句是A)*pw.year=1980;

B)w.year=1980;C)pw->year=1980;

D)w.s.year=1980;(39)有以下程序#include<stdio.h>main(){inta=2,b=2,c=2;printf("%d\n",a/b&c);}程序運行后的結果是A)0

B)1

C)2

D)3(40)以下程序#include<stdio.h>main(){

FILE

*fp;char

str[10];fp=fopen("myfile.dat","w");fputs("abc",fp);

fclose(fp);fp=fopen("myfile.dat","a+");rewind(fp,"gd",28);rewind(fp);fscanf(fp,"gs",str);

puts(str);fclose(fp);}程序運行后的輸出結果是A)abc

B)28c

C)abc28

D)因類型不一致而出錯二、填空題(每空2分,共30分)請將每空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。(1)一個隊列的初始狀態為空,先將元素A,CB,C,D,E,F,5,4,3,2,1依次入隊,然后再依次退隊,則元素退隊的順序為___【1】__。(2)設某循環列隊的容量為50,如果頭指針front=45(指向隊頭元素的前一位置),尾指針rear=10(指向隊尾元素),則該循環隊列中共有___【2】__個元素。(3)設二叉數如下:對該二叉樹進行后序遍歷的結果為【3】(4)軟件是

【4】

、數據和文檔的集合。(5)有一個學生選課的關系,其中學生的關系模式為:學生(學號,姓名,班級,年齡),課程的關系模式為:課程(課號,課程名,學時),其中兩個關系模式的鍵分別是學好和課號,則關系模式選課可以定義為:選課(學號,

【5】

,成績)。(6)設x為int型變量,請寫出一個關系表達式

【6】

,用以判斷x同時為3和7的倍數時,關系表達式的值為真。(7)有以下程序#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1)

if(b!=2)

if(c!=3)

d=1;

else

d=2;

elseif(c!=3)

d=3;

else

d=4;

else

d=5;

printf("%d\n",d);}程序運行后的輸出結果是:

【7】

。(8)有以下程序#include<stdio.h>main(){

intm,n;scanf("%d%d",&m,&n);while(m!=n){

while(m>n)m=m-n;

while(m<n)n=n-m;}printf("%d\n",m);}程序運行后,當輸入14

63<回車>時,輸出結果是

【8】

(9)有以下程序#include<stdio.h>main(){

intI,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=I;j<3;j++)

printtf("%d",a[i][j]);

printf("\n");}程序運行后的輸出結果是

【9】

(10)有以下程序

#include<stdio.h>main(){

int

[]={1,2,3,4,5,6},*k[3],i=0;

while(i<3)

{

k[i]=&a[2*i];

printf("%d",*k[i]);

i++;

}}程序運行后的輸出結果是__________(11)有以下程序

#include<stdio.h>main(){

int

a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

int

b[3]={0},i;

for(i=0;i<3;i++)b[i]=a[i][2]+a[2][i];

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

printf("\n");}程序運行后的結果是____________(12)有以下程序#include<stdio.h>#include<string.h>voidfun(char*str){

chartemp;

intn,i;

n=strlen(str);

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;}main(){

chars[50];

scanf("%s",s);

fun(s);

printf("%s\n",s);}程序運行后輸入:abcdef<回車>,則輸出結果是____________(13)以下程序的功能是:將值為三位正整數的變量x中的數值按照個位、十位、百位的順序拆分并輸出。請填空。#include<stdio.h>main(){

intx=256;

printf("%d-%d-%d\n",

,x/10%10,x/100);}

(14)以下程序用以刪除字符串中的所有的空格,請填空。#include<stdio.h>main(){

char

s[100]={"our.tercherteach

clanguage!"};inti,j;for(i=j=0;s[i]!=‘\0’;i++)

if(s[i]!=‘’){s[j]=s[i];j++;}s[j]=

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

(15)以下程序功能是:借助指針變量找出數組元素中的最大值及其元素的下標值。請填空。#include<stdio.h>main(){

inta[10],*p,*s;

for(p=a;p-a<10;p++)scanf("%d",p);

for(p=a,s=a;p-a<10;p++)

if(*p>*s)s=_______________;

printf("index=%d\n",s-a);}

參考答案

一、選擇題:1-5ADBAC

6-10BADCA

11-15BBDCC

16-20DABCA

21-25DDABD

26-30ADBCC

31-35ACBCC

36-40BADAC二、填空題1、ABCDEF543212、153、EDBGHFCA4、程序5、課號6、(x%3==0)&&(x%7==0)7、48、79、12356910、13511、10141812、fabcde13、x%1014、'\0'或者填寫015、p2010年9月全國計算機二級C語言筆試試題一、選擇題(每小題2分,共70分)

下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填涂在答題卡相應位置上,答在試卷上不得分。

(1)下列敘述中正確的是

A)線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的

B)線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構

C)線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構

D)上述三種說法都不對

(2)下列敘述中正確的是

A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化

B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化

C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化

D)上述三種說法都不對

(3)軟件測試的目的是

A)評估軟件可靠性

B)發現并改正程序中的錯誤

C)改正程序中的錯誤

D)發現程序中的錯誤

(4)下面描述中,不屬于軟件危機表現的是

A)軟件過程不規范

B)軟件開發生產率低

C)軟件質量難以控制

D)軟件成本不斷提高

(5)軟件生命周期是指

A)軟件產品從提出、實現、使用維護到停止使用退役的過程

B)軟件從需求分析、設計、實現到測試完成的過程

C)軟件的開發過程

D)軟件的運行維護過程(6)面向對象方法中,繼承是指

A)一組對象所具有的相似性質

B)一個對象具有另一個對象的性質

C)各對象之間的共同性質

D)類之間共享屬性和操作的機制

(7)層次型、網狀型和關系型數據庫劃分原則是

A)記錄長度

B)文

溫馨提示

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

評論

0/150

提交評論