![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
江蘇二級(jí)C2009秋考試試題 |
2009秋季C語言筆試試卷 第一部分:計(jì)算機(jī)基礎(chǔ)知識(shí) 1.下列關(guān)于個(gè)人移動(dòng)通信的敘述中,錯(cuò)誤的是____ A.第1代個(gè)人移動(dòng)通信(簡(jiǎn)稱 B.目前廣泛使用的GSM手機(jī)采用的通信技術(shù)屬于第2代移動(dòng)通信技術(shù)(簡(jiǎn)稱 c.第3代移動(dòng)通信技術(shù)(簡(jiǎn)稱 D 2.在下列有關(guān)集成電路的敘述中,正確的是2。 A.現(xiàn)代集成電路所使用的半導(dǎo)體材料都是硅 B.所有的集成電路都是數(shù)字集成電路 C.Moore定律認(rèn)為單塊集成電路的集成度平均每年翻一番 D.Intel公司微處理器產(chǎn)品Core 2 Duo,其集成度已高達(dá)數(shù)千萬個(gè)電子元件 3.與十六進(jìn)制數(shù)AB等值的八進(jìn)制數(shù)是3 。 A. 253 B 4.在下列有關(guān)PC機(jī)CPU的敘述中,錯(cuò)誤的是4。 A.CPU中包含幾十個(gè)甚至上百個(gè)寄存器,用來臨時(shí)存放數(shù)據(jù)、指令和控制信息 B.所有PC機(jī)的CPU都具有相同的指令系統(tǒng),因而PC機(jī)可使用相同的軟件 C.一臺(tái)計(jì)算機(jī)至少包含1個(gè)CPU,也可以包含2個(gè)、4個(gè)、8個(gè)甚至更多個(gè)CPU D.Intel公司是國際上研制和生產(chǎn)CPU的主要公司,我國也能生產(chǎn)CPU 5.在下列有關(guān)PC機(jī)主板上部件的敘述中,錯(cuò)誤的是5 。 A.BIOS保存在主板上的一個(gè)閃存中,其內(nèi)容在關(guān)機(jī)后通常不會(huì)改變 B.CMOS中保存有用戶設(shè)置的開機(jī)口令,關(guān)機(jī)后主板上的電池繼續(xù)給CMOS供電 C.啟動(dòng)CMOS設(shè)置程序可以重新設(shè)置CMOS中的數(shù)據(jù),該程序是BIOS的組成部分 D.網(wǎng)卡通常集成在主板上,由主板上獨(dú)立的IC實(shí)現(xiàn)其功能,與芯片組無關(guān) 6.從PC機(jī)存儲(chǔ)器的層次結(jié)構(gòu)來看,下列存儲(chǔ)器中存取速度最快的是6 。 A.Cache存儲(chǔ)器 B.RAM和ROM C.寄存器 D.硬盤和優(yōu)盤 7.在下列4種PC機(jī)常用I/O接口中,數(shù)據(jù)傳輸速率最高的是7。 A.PS/2 B.SATA C.IEEE-1394b D.USB 2.0 8.在下列有關(guān)I/O操作、I/O總線和I/O接口的敘述中,錯(cuò)誤的是8。 A.I/O操作的任務(wù)是在I/O設(shè)備與內(nèi)存的指定區(qū)域之間傳送信息 B.I/O總線傳送的只能是數(shù)據(jù)信號(hào),它不能傳送控制信號(hào)和地址信號(hào) C.不同類型的I/O接口,其插頭/插座以及相應(yīng)的通信規(guī)程和電氣特性通常各不相同 D.并行總線的數(shù)據(jù)傳輸速率不一定比串行總線高 9.在下列有關(guān)PC機(jī)I/0設(shè)備的敘述中,錯(cuò)誤的是9。 A.數(shù)碼相機(jī)的成像芯片可以為CCD器件或CMOS芯片,目前大多數(shù)用CCD器件 B.平板式掃描儀的分辨率通常遠(yuǎn)遠(yuǎn)高于膠片掃描儀和滾筒式掃描儀 C.常見的寬屏液晶顯示器的寬度與高度之比為16:9(或16:10) D.目前在銀行、超市等商業(yè)部門一般采用針式打印機(jī)來打印存折和票據(jù) 10.在下列有關(guān)計(jì)算機(jī)軟件的敘述中,錯(cuò)誤的是10 。 A.程序設(shè)計(jì)語言處理系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)被歸類為系統(tǒng)軟件 B.共享軟件是一種具有版權(quán)的軟件,它允許用戶買前免費(fèi)試用 C.機(jī)器語言和匯編語言與特定的計(jì)算機(jī)類型有關(guān),取決于CPU D.目前PC機(jī)只能使用Windows系列操作系統(tǒng),均不能使用UNIX和Linux操作系統(tǒng) 11.在下列常用的PC機(jī)軟件中,編輯的文檔(內(nèi)容)能直接保存為圖片類型(例如JPEG 文件類型)的是11 。 A.Microsoft Word B.Microsoft Excel C.Microsoft PowerPoint D.Microsoft FrontPage 12.在下列關(guān)于以太網(wǎng)(局域網(wǎng))的敘述中,錯(cuò)誤的是12。 A.在共享式以太網(wǎng)中,任何時(shí)間只允許一對(duì)計(jì)算機(jī)進(jìn)行通信 B.在交換式以太網(wǎng)中,每臺(tái)計(jì)算機(jī)均獨(dú)享相同的帶寬,其帶寬僅由交換機(jī)決定 c.無論是共享式以太網(wǎng)還是交換式以太網(wǎng),網(wǎng)絡(luò)中的所有計(jì)算機(jī)都要安裝以太網(wǎng)網(wǎng)卡 D.無論是共享式以太網(wǎng)還是交換式以太網(wǎng),它們的數(shù)據(jù)幀和MAC地址格式均相同 13.連接在因特網(wǎng)上的每一臺(tái)主機(jī)都有一個(gè)IP地址。下面不能作為IP地址的是13 。 A.211.256.49.68 B. 14.為了將異構(gòu)的計(jì)算機(jī)網(wǎng)絡(luò)互相連接起來,必須使用的網(wǎng)絡(luò)設(shè)備是14 。 A.調(diào)制解調(diào)器 B.以太網(wǎng)集線器 c.以太網(wǎng)交換機(jī) D.路由器 15.下列網(wǎng)絡(luò)協(xié)議中,與發(fā)送電子郵件有關(guān)的是15 。 A.Http B.FTP C.SMTP D.TELNET 16.在下列有關(guān)字符集及其編碼的敘述中,錯(cuò)誤的是16 。 A.基本的ASCII字符集共有128個(gè)字符,每個(gè)字符使用7個(gè)二進(jìn)位進(jìn)行編碼 B.GB2312字符集中收錄了6千多個(gè)漢字,每個(gè)字符在機(jī)內(nèi)通常使用雙字節(jié)編碼 C.GBK字符集中的字符也采用雙字節(jié)編碼,且該字符集收錄了部分繁體漢字 D.GB18030字符集中所有的字符均采用4字節(jié)編碼,因此該字符集的代碼空間很大 17.目前數(shù)碼相機(jī)拍攝的照片在保存時(shí)通常采用的文件類型是17 。 A.BMP B.GIF C.JPEG D.TIF 18.MP3是數(shù)字波形聲音的一種壓縮編碼文件格式,它采用的壓縮編碼標(biāo)準(zhǔn)屬于18 。 A.MPEG-1 B.MPEG 19.使用Macromedia公司的Flash軟件制作的動(dòng)畫是一種矢量圖形,在保存為動(dòng)畫文件 時(shí)其文件擴(kuò)展名通常為19 。 A.GIF B.SWF C.AVI D.MPG 。 20.在計(jì)算機(jī)應(yīng)用中,CAD和CAM是典型的信息系統(tǒng)。它們屬于20 。 A.管理業(yè)務(wù)系統(tǒng) B.輔助技術(shù)系統(tǒng) c.信息檢索系統(tǒng) D.信息分析系統(tǒng) 第二部分C語言程序設(shè)計(jì) 一、選擇題(用答題卡答題,答案依次填在21~30答題號(hào)內(nèi),共10分) 21.以下敘述中正確的是21 。 A.C語言系統(tǒng)以函數(shù)為單位編譯源程序 B.main函數(shù)必須放在程序開始 C.用戶定義的函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次 D.在一個(gè)函數(shù)體內(nèi)可以定義另外一個(gè)函數(shù) 22.以下選項(xiàng)中,不能用作c語言標(biāo)識(shí)符的是 22 A.print B.FOR C.&a D._00 23.已知int類型數(shù)據(jù)在內(nèi)存中存儲(chǔ)長(zhǎng)度為2個(gè)字節(jié),以下語句中能正確輸出整數(shù)32768 的是23。 A.printf("%d",32768); B.printf("%ld",32768); C.printf("%f",32768); D.printf("%c",32768); 24.已知有聲明"int a=3,b=4,c=5;",以下表達(dá)式中值為0的是24 。 A.a&&b B.a<=b C.a||b&&c D.!(!c||1) 25.已知有聲明"long x,y;"且x中整數(shù)的十進(jìn)制表示有n位數(shù)字(4<n<10),若要求去 掉整數(shù)x十進(jìn)制表示中的最高位,用剩下的數(shù)字組成一個(gè)新的整數(shù)并保存到y中,則以下表達(dá) 式中能正確實(shí)現(xiàn)這一功能的是25 。 A.y=x/(10*(n-1)) B.y=x%(10*(n-1)) C.y=x%(long)pow(10,n-1) D.y=x%(10^(n-1)) 26.已知有聲明"int x,y;",若要求編寫一段程序?qū)崿F(xiàn)"當(dāng)x大于等于0時(shí)y取值1,否則Y 取值-1",則以下程序段中錯(cuò)誤的是___26___。 A.if(x>=0) y=1;else y=-1; B.y=x>=0?1:-1; C.switch() D.switch(x-abs(x)) { case x>=0: y=1;break; { case 0:y=1;break; default:y=-1; default:y=-1; } } 27.已知有聲明"int m[]={5,4,3,2,1},i=0;",下列對(duì)m數(shù)組元素的引用中,錯(cuò)誤 是___27___。 A.m[++i] B.m[5] C.m[2*2] D.m[m[4]] 28•已知有聲明"char s[80];",若需要將鍵盤輸入的一個(gè)不含空格的字符串保存到 組中,則下列語句中正確的是28 。 A.scanf("%s",s); B.scanf("%s",s[0]); C.s=gets(); D.s=getchar(); 29.若函數(shù)調(diào)用時(shí)的實(shí)參為變量,則以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是29 A.實(shí)參和其對(duì)應(yīng)的形參占用同一存儲(chǔ)單元 B.形參不占用存儲(chǔ)單元 C.同名的實(shí)參和形參占用同一存儲(chǔ)單元 D.形參和實(shí)參占用不同的存儲(chǔ)單元 , 30.已知有聲明"int i,a[10],*p=a;",現(xiàn)需要將1--l0保存到a[0]--a[9]中,以下程 序段中不能實(shí)現(xiàn)這一功能的是30 。 A.for(i=0;i<10;i++) a[i]=i+1; B.for(i=0;i<10;i++) p[i]=i+1; C.i=1;while(p<a+10) *p++=i++; D.i=1;while(p<a+10) *a++=i++; 二、填空題(將答案填寫在答題紙的相應(yīng)答題號(hào)內(nèi),每個(gè)答案只占一行,共30分) ●基本概念 1.C語言中有!、&&、||三個(gè)邏輯運(yùn)算符,其中優(yōu)先級(jí)高于算術(shù)運(yùn)算符的是 (1) 。 2.若有聲明"int r=2;",則執(zhí)行語句"printf("%d",sizeof(2*3.14*r));"時(shí)輸 出 (2) 。 3.數(shù)學(xué)表達(dá)式 4.若有以下聲明: char *p="%d,%d\n";int a=1,b=2; 則執(zhí)行語句"printf(p,a,b);"時(shí)輸出(4) 。 5.聲明局部變量時(shí)若缺省存儲(chǔ)類別,該變量的存儲(chǔ)類別是(5) 。 ●閱讀程序 6.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是(6) 。 #include<stdio.h> void main() {FILE *fp; int k,n,a[6]={1,2,3,4,5,6}; fp=fopen("d2.dat","w"); ’ fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]); fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]); fclose(fp); fp=fopen("d2.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d,%d\n",k,n); fclose(fp); } 7.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是 (7) 。 #include<stdio.h> void main() {int i=1,m=0; switch(i) { case 1: case 2: m++; case 3: m++; } printf("%d",m); }‘ 8.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果中第一行是 (8) ,第二行是(9)。 #include<stdio.h> void fun(int a[],int b[],int *x) { int i,j=0; for(i=0;a[i];i++) {if(i%2==0)continue; if(a[i]>10) b[j++]=a[i]; } *x=j; } void main() {int a[10]={3,15,32,23,11,4,5,9},b[10]; int i=0,x=0; fun(a,b,&x); for(i=0:i<x;i++) printf("%d\t",b[i]); printf("\n%d",x); } 9.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是( 10 ) 。 #include<stdio.h> int fun(int *x,int n) {if(n==0) return x[0]; else return x[0]+fun(x+1,n-1); } void main() {int a[ ]={1,2,3,4,5,6,7}; printf("%d\n",fun(a,2)); 10.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是(11) 。 #include<stdio.h> long f(int n) {static long s; if(n==1) return s=2; else return ++s; } void main() {long i,sum=0; for(i=1;i<4;i++,) sum+=f(i); printf("%ld",sum); } 11.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果中第一行是( 12 ) ,第二行是( 13 ) 。 #include、<stdio.h> #define f(x,y) y=x*x void g(int x,int y) { y=x*x; } void main() { int a=2,b=0,c=2,d=0; f(a,b); g(c,d); printf("%d\n%d",b,d); } 12.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果中第一行是 (14) ,第三行是 (15) 。 #include<stdio.h> void main() { int a[3][3]={{3,8,12},{4,7,10},{2,5,11}},i,j,k,t; for(j=0;j<3;j++) for(k=0;k<2;k++) for(i=0;i<2-k;i++) if(a[i][J]>a[i+1][j]) t=a[i][j],a[i][j]=a[i+1][j],a[i+1][j]=t; for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%3d",a[i][j]); printf("\n"); } 13.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是( 16 ) 。 #include<stdio.h> #include<string.h> void main() { int i=0,n=0;char s[80],*p; strcpy(s,"It is a book."); for(p=s;p!='\0';p++) if(*p==' ') i=0; else if(i==0) {n++;i=1; } printf("%d\n",n); } 14.以下程序運(yùn)行時(shí)輸_出到屏幕的結(jié)果第一行是 (17) ,第二行是 (18) 。 #include<stdio.h> typedef struct fact { int m,z; }FACT; FACT fun1(FACT t1,FACT t2) {FACT t3; t3.m=t1.m*t2.m ; t3.z=t1.z*t2.m+t2.z*t1.m; retum t3; } FACT fun2(FACT t) {int m,n,k; m=t.m; n=t.z; while(k=m%n) { m=n;n=k; } t.m=t.m/n; t.z=t.z/n; return t; } void main() {FACT s,s1={8,4},s2={6,5}; s=fun1(sl,s2); printf("%d,%d\n",s.z,s.m); s=fun2(s); printf("%d,%d",s.z,s.m); } ●完善程序 15.以下程序求方程的一個(gè)近似根。root函數(shù)采用二分法計(jì)算并返回方程f(x)=0在[a,b]內(nèi)的一個(gè)近似根,main函數(shù)調(diào)用root函數(shù)求方程cos(x)=0在[0,3.14]內(nèi)的一個(gè)近似根。 試完善程序以達(dá)到要求的功能。 #include<stdio.h> #include<math.h> double root(double a,double b,double(*f)(double)) {double x,y; if((19)) {printf("There is no root between%f and%f",a,b); return 0; } do { x=( 20 ); y=f(x); if(fabs(y)<1e-6||fabs(b-a)<le-6) break; if((21)<0)b=x; else a=x; }while(1); return x; } void main() {printf("\n x=%f",root(0,3.14,(22)); 16.以下程序在3-50范圍內(nèi)驗(yàn)證:大于等于3的兩個(gè)相鄰素?cái)?shù)的平方之間至少有4個(gè) 素?cái)?shù)。例如,3和5是相鄰素?cái)?shù),3^2~5^2之間有素?cái)?shù)11、13、17、19、23。試完善程序以達(dá)到要 的功能。 #include<stdio.h> #include<stdlib.h) #include<math.h> int prime(int n) {int i; for(i=2;i<=sqrt(n);i++) if((23)) return 0; return 1; } void main() {int i,j,k=0,m,n,c,a[30]={0}; for(i=3;i<50;i++) if(prime(i)) (24) ; for(i=0;i<k-1;i++) { m=a[i]*a[i]; n=a[i+1]*a[i+1]; c= (25) ; for(j=m+1;j<n;j++) if((26)) c++: if(c>=4) printf("\n %d*%d-%d*%d:%d",a[i],a[i],a[i+1],a[i+1],c); else{printf("Error");exit(0);} } 17.fun函數(shù)的功能是刪除s指向的鏈表中滿足以下條件的結(jié)點(diǎn):該結(jié)點(diǎn)的編號(hào)值是奇數(shù) 且存放的字母ASCII編碼值也為奇數(shù)(提示:a的ASCII編碼是97);將刪除的結(jié)點(diǎn)添加到t所 指向的鏈表尾部。試完善fun函數(shù)以達(dá)到要求的功能。 例如,若刪除前的s鏈表為: s à 則刪除后的s鏈表為: sà2 b à3 b à #include<stdio.h> struct node {int i; /* 存放結(jié)點(diǎn)的編號(hào) */ char c: /* 存放一個(gè)字母的ASCII編碼 */ struct node *next; }; struct node *t=NULL: struct node *fun(struct node *s) {struct node *p,*q;struct node *r; p=q=s; while(p!=NULL) {if(((pài)%2)&&((pàc)%2)) {if(s==p) s=q=( 27 ); else { ( 28 ) ; q=p->next; } if(t==NULL) t=r=p; else { r->next=p; r=r->next; } } p=(29) ; } if(t!=NULL) ( 30 ) ; return s; } 參考答案 一、選擇題 1.A 2.D 3.A 4.B 5.D 6.C 7.B 8.B 9.B 10.D 11.C 12.B 13.A 14.D 15.C 16.D 17.C 18.A 19.B 20.B 21.C 22.C 23.B 24.D 25.C 26.C 27.B 28.A 29.D 30.D 二、填空題 (1)! (2)8 (3)sqrt(fabs(x))!=4*a/(b*c)或sqrt(fabs(x))!=4*a/b/c <4)1,2 (5)auto (6)123,456 (7)2 (8)15 23 (9)2 (10)6 (11)9 (12)4 (13)0 (14)2 5 10 (15)4 8 12 (16)4 (17)64,48 (18)4,3 (19)f(a)*f(b)>0 (20)(a+b)/2 (21)y*f(a)或f(x)*f(a) (22)cos (23)n%i==0或!(n%i) (24)a[k++]=i或a[k]=i,k++ (25)0 (26)prime(j) (27)p->next (28)q->next=p->next (29)p->next (30)r->next=NULL |