![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2009江蘇省計算機等級考試C語言考前沖刺模擬試卷3 |
考試模擬試題3 1.下列關(guān)于信息的敘述錯誤的是____(1)__。 A. 信息是指事物運動的狀態(tài)及狀態(tài)變化的方式 B. 信息是指認識主體所感知或所表述的事物運動及其變化方式的形式、內(nèi)容和效用 C. 在計算機信息系統(tǒng)中,信息是對用戶有意義的數(shù)據(jù),這些數(shù)據(jù)將可能影響到人們的行為與決策 D. 在計算機信息系統(tǒng)中,信息是數(shù)據(jù)的符號化表示 2.下列關(guān)于集成電路的敘述中錯誤的是____(2)____。 A.將大量晶體管、電阻及互連線等制作在尺寸很小的半導(dǎo)體單晶片上就構(gòu)成集成電路 B. 現(xiàn)代集成電路使用的半導(dǎo)體材料通常是硅或砷化鎵 C. 集成電路根據(jù)它所包含的晶體管數(shù)目可分為小規(guī)模、中規(guī)模、大規(guī)模、超大規(guī)模和極大規(guī)模集成電路 D. 集成電路按用途可分為通用和專用兩大類。微處理器和存儲器芯片都屬于專用集成電路 3.移動通信指的是處于移動狀態(tài)的對象之間的通信,下面的敘述中錯誤的是__(3)______。 A. 移動通信始于上世紀20年代初,70~80年代開始進入個人領(lǐng)域 B. 移動通信系統(tǒng)進入個人領(lǐng)域的主要標志就是手機的廣泛使用 C. 移動通信系統(tǒng)由移動臺、基站、移動電話交換中心等組成 D. 目前廣泛使用的GSM是第三代移動通信系統(tǒng) 4.下列不同進位制的四個數(shù)中,最小的數(shù)是__(4)______。 A.二進制數(shù)1100010 B. 十進制數(shù) 5.下面是關(guān)于PC機主存儲器的一些敘述,其中正確的是_____(5)____ A.主存儲器每次讀寫一個字節(jié)(8位) B.主存儲器也稱內(nèi)存,它是一種動態(tài)隨機存儲器 C.目前市場上銷售的pC機器,其內(nèi)存容量多數(shù)已達128MB D.PC機的容量總是可擴充的 A.①③ B.①②③ C.①④ D.②③④ 6.下面關(guān)于USB接口的敘述中,錯誤的是____(6)______ A.USB2.0的數(shù)據(jù)傳輸速率比USB1.1快的多 B.USB具有熱插拔和即插即用功能 C.主機不能通過USB連接器向外圍設(shè)備供電 D.從外觀上看,USB連接器要比PC機的串行口連接器小 7.下列關(guān)于目前流行的臺式PC機主板的敘述,正確的是_______(7)____ ①主板上通常包含微處理器插座和芯片組 ②.主板上通常包含內(nèi)存儲器(內(nèi)存條)插槽和BIOS ROM芯片 ③.主板上通常包含PCI(或PCI-E)總線插槽 ④.主板上通常包含IDE(或SATA)連接器 A.①③ B. ① ②③ C. ①④ D. ①②③④ 8.為了讀取硬盤存儲器上的信息,必須對硬盤盤片上的信息進行定位,在定位一個扇區(qū)時,不需要以下參數(shù)中的_____(8)___。 A. 柱面(磁道)號 B. 盤片(磁頭)號 C. 通道號 D. 扇區(qū)號 9.下列各類存儲器中,____(9)____在斷電后其中的信息不會丟失。 A.寄存器 B. Cache C. Flash ROM D. DDR SDRAM 10. 下列關(guān)于操作系統(tǒng)處理器管理的說法中,錯誤的是____(10)___ 。 A. 處理器管理的主要目的是提高CPU的使用效率 B. 分時是指將CPU時間劃分成時間片,輪流為多個程序服務(wù) C. 并行處理操作系統(tǒng)可以讓多個CPU同時工作,提高計算機系統(tǒng)的效率 D.多任務(wù)處理都要求計算機必須有多個CPU 11.在下列有關(guān)程序設(shè)計語言及其處理程序的敘述中,錯誤的是_(11)_。 A.用多種不同的匯編語言編寫一個程序稱為"交叉匯編" B.匯編語言是一種用助記符號表示的、與機器語言接近的符號語言 C.機器語言指令是由一串“0”和“1”組成的二進位代碼 D.編譯程序應(yīng)具有詞法分析和語法分析功能 12.以下關(guān)于局域網(wǎng)和廣域網(wǎng)的敘述中,正確的是____(12)___。 A. 廣域網(wǎng)只是比局域網(wǎng)覆蓋的地域廣,它們所采用的技術(shù)是相同的 B. 家庭用戶撥號入網(wǎng),既可接入廣域網(wǎng),也可接入局域網(wǎng) C. 現(xiàn)階段家庭用戶的PC機只能通過電話線接入網(wǎng)絡(luò) D. 個人不允許組建計算機網(wǎng)絡(luò) 13.將異構(gòu)的計算機網(wǎng)絡(luò)進行互連通常使用的網(wǎng)絡(luò)互連設(shè)備是_____(13)___。 A. 網(wǎng)橋 B. 集線器 C. 路由器 D. 中繼器 14.在TCP/IP網(wǎng)絡(luò)中,任何計算機必須有一個IP地址,而且__(14)______ A. 任意兩臺計算機的IP地址不允許重復(fù) B. 任意兩臺計算機的IP地址允許重復(fù) C. 不在同一城市的兩臺計算機的IP地址允許重復(fù) D. 不在同一單位的兩臺計算機的IP地址允許重復(fù) 15. 當網(wǎng)絡(luò)中的兩臺計算機之間需要互相傳送多個文件時,一般應(yīng)使用_______(15)____服務(wù) A.www B.Telnet C.FTP D.電子郵件 16. 在瀏覽器的地址欄中輸入想要瀏覽的網(wǎng)頁URL時,不能缺省的輸入是___(16)_____ A.執(zhí)行的傳輸協(xié)議 B.網(wǎng)頁所在的Web服務(wù)器的域名或IP地址 C.端口號 D.網(wǎng)頁的文件名和查找路徑 17. 下面關(guān)于我國漢字編碼標準的敘述中,錯誤的是__ (17)_________ A.GB2312國標字符集所包含的漢字許多情況下已不夠使用 B.GBK字符集既包括簡體漢字,也包括繁體漢字 C.GB18030編碼標準中所包含的漢字數(shù)目超過2萬個 D.無論采用上述哪一種漢字編碼標準,漢字在計算機中均采用雙字節(jié)編碼 18. 下列關(guān)于計算機合成圖像(計算機圖形)的應(yīng)用中,錯誤的是__(18)_______。 A. 可以用來設(shè)計電路圖 B. 可以用來生成天氣圖 C. 計算機只能生成實際存在的具體景物的圖像,不能生產(chǎn)虛擬景物的圖像 D. 可以制作計算機動畫 19.計算機中用于描述樂譜并由聲卡合成出樂曲的一種專用語言,稱為_____(19)_____ A.MP3 B.JPEG 20.在PC機中安裝視頻輸入設(shè)備就可以獲取數(shù)字視頻,下面關(guān)于視頻獲取設(shè)備的敘述中,錯誤的是____(20)_________ A.視頻卡能通過有線電視電纜接收模擬電視信號并進行數(shù)字化 B.視頻卡一般插在PC機的PCI插槽內(nèi) C.數(shù)字攝像頭必須通過視頻卡與PC機相連接 D.數(shù)字攝像頭拍攝的數(shù)字視頻可通過USB或IEEE1394接口直接輸入計算機 二:c語言程序設(shè)計 21.一個用c語言編寫的程序,____________是必不可少的 A.取名為main的函數(shù)定義 B.#include <stdio.h> C.變量聲明 D.注釋 22.已有枚舉類型定義:"enum letter{A,B,C=7,D,E};",以下表達式中除(22)外,其他表達式的機內(nèi)值均等于10。 A.'\xb'-1 B.B+E C.010+2 D•0xf-3 23.以下聲明中正確的是(23) 。 A.int n=2,a[n]={10}; B.int n=10,*p[2]=&n; C.int n=10,a[2]={n};D.int a[2][2]={lO},(*p)[2]=a+1; 24.若有函數(shù)fun的定義為 void fun(…) {static int a=1; ... } 則下列敘述中不正確的是 ( 24) 。 A.在每次調(diào)用fun函數(shù)時,變量a的值是上次調(diào)用結(jié)束時a的值 B.在fun函數(shù)之外,可以用變量名a直接引用a的值 c.在其他函數(shù)中,可以出現(xiàn)聲明double a=2.5; D.fun函數(shù)的形式參數(shù)不能取名為a 25.已知數(shù)據(jù)類型定義和變量聲明如下: struct sk {int a;float b;} data[2],*p; 若有P=data,則以下對data[0]中成員a的引用中錯誤的是:(25)。 A.data[0]->a B.data->a C.P->a D.(*p).a 26.以下單目運算符均只需妻一個操作數(shù),其中要求操作數(shù)的類型只能是指針型的是 (26) 。 A.& B.++ C.! D.* 27.已知有聲明"int good=1;",若要使得表達式"P="good"+good"無語法錯誤(包括警告錯 誤),P應(yīng)當聲明為( 27)。 A.char p; B.char *p; C.int p;D.int*p; 28.已知有聲明"char c='1',;int x=300;float t=35000;double d=3.1234567e10;",則以下表達 式求值時除 ( 28 ) 外其結(jié)果都可能是不準確的。 A.x=t/c B.t=d/x C.t=d/le 29.已有預(yù)處理命令和聲明如下: #define N 10 int a=2,c=1; double b=1.2: 下述程序段正確的是(29)。 A.switch(a) B.switch(a) {case c: a--;break; {case N>0:a=1;break; case c+1:a++;break; case 1: a=O;break; } } C. switch(a) D.switch(b) { { case 1.0: b++;break; case 2: b++;break; case 1.2: b=1;break; case '0': b=3; } } 30.若有以下聲明和定義: void fun(int c){prinff("%d",C);} main() {void(*a)(int)=fun,*b(int),(*c)(int); /*調(diào)用fun函數(shù)語句位置*/ } void*b(int C){}。 如果在main函數(shù)中需要調(diào)用fun函數(shù),以下調(diào)用語句中錯誤的是_______(30)______ 。 A.fun(1); B.(*a)(1); C.b=fun;(*b)(1); D.c=a;(*c)(1); 二、填空題(請將答案填寫在答題紙的相應(yīng)答題號內(nèi),每個答案只占一行) ●基本概念題(共5分) 1.若有聲明"char a=0;int b=1;float c=2;double d=3;",則表達式"c=a+b+c+d"值的類型 為(1) 。 2.若某個程序運行時創(chuàng)建了多個輸入流,當執(zhí)行到程序中的scanf函數(shù)時,只有在 (2)輸 人流為空時才會暫停程序運行而等待輸入。 . 3.執(zhí)行"printf("%d,%d",i,j,k,m);"后在屏幕上將輸出_____(3)______個整數(shù)。 4.設(shè)已有非空文本數(shù)據(jù)文件filel.dat,要求能讀出文件中原有的全部數(shù)據(jù),并在文件原有數(shù)據(jù) 之后添加新數(shù)據(jù),則用FILE *fp=fopen("filel.dat", ____(4)_________ )打開該文件。 5.若有函數(shù)定義int f(){int x=4,y=3,z=2;return x,y,z;},則調(diào)用函數(shù)f后的返回值是 (5) ●閱讀程序題(共13分) 6.以下程序運行時輸出結(jié)果是 (6 ) 。 #include<stdio.h> #define M 3 #defme N M+1 #define NN N*N/2 main() . {printf("%d\n",NN);} 7.以下程序運行時輸出結(jié)果是 (7) 。 #include <stdio.h> main() {char a=256: int d=a; prinff("%d",d+1); } 、 8•有如下程序,假定所用編譯系統(tǒng)用兩個字節(jié)存儲一個int型操作數(shù),已知輸出結(jié)果第一行是FFD2,則第二行應(yīng)當是( 8) main() {int a[10]={1,2,3,4,5,6,7,8,9,0},*p; P=&a[5]; printf("%X\n",p);printf("%X\n",p-1); 9•以下程序運行時輸出結(jié)果的第一行是(9) ,第二行是(10)。 int C: void fl(int x,int *sum) {static int y; x++;y++;c=c+y; *sum=(x+y)/c; } main() {int a,b=100: for(a=O;a<2;a++) {f1(a,&b);printf("%d%d%d\n",a,b,c)} , 10.以下程序運行時輸出結(jié)果的第一行是___(11)_______,第三行是______(12)__________ #include<stdio.h> void mat_change(int b[4][4]) {int i,j,m,n,k,c[6][6]; for(i=0;i<6;i++) for(j=0;j<6;j++) c[i][j]=1; for(i=1;i<5;i++) for(j=1;j<5;j++) c[i][j]=b[i-1][j-1]; for(i=1;i<5;i++) for(j=1;j<5;j++) {if(c[i][j]==0) {k=0; for(m=-1;m<=1;m++) for(n=-1;n<=1;n++) if(!(m==O&&n==O))k=k+c[i+m][j+n]; if(k==8)c[i][j]=1; } } for(i=1;i<5;i++) for(j=1;j<5;j++) b[i-1][j-1]=c[i][j]; } main() {int i,j,a[4][4]={{0,1},{1,1,1,l},{0,1,0,1},{0,1,1,1}}; mat_change(a); for(i=0;i<4;i++) . {for(j=0;j<4;j++)printf("%d",a[i][j]); printf("\n"); } } 11.以下程序運行時輸出結(jié)果是(13) 。 #include<stdio.h> void f(int a[],int n,int x,int *c); main() {int a[10]={1,3,5,2,3,5,3,7,4,1},t=0; f(a,10,5,&t);printf("%d",t); } void f(int a[],int n,int X,int *c) {if(n==0)return; if(a[O]>=x)(*c)++; f(a+1,n-1,x,c); } 12.以下程序運行時輸出結(jié)果的第一行是 (14) ,第二行是(15) ,第三行是(16) #include<stdio.h> typedef struct s { int index; int value; }M; main() {static int i,j,k,c[4][4]; M a[10]={{0,1},{3,2},{5,3},{6,4},{9,5},{15,6},{-l,0}},*p=a, b[10]={{1,1},{3,2},{4,3},{6,4},{lO,5},{13,6},{-1,0}},*q=b; while(p->index!=-1) { i=p->index/4; j=p->index%4; c[i][j]=P->value; p++; } while(q->index!=-1) { i=q->index/4; j=q->index%; c[i][j]+=q->value; q++; } for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%d",c[i][j]); printf("\n"); } } 13.以下程守運行時輸出結(jié)果的第一行是__(17)______ ,第二行是____(18)________ 。 void q(char *s,int left, int right) { int i,j; char x,y; i=left; j=right; x=s[(1eft+right)/2]; do {while(s[i]>x&&i<right)i++: while(s[j]<x&&j>left)j--; if(i<=j) { y=s[i]; s[i]=s[j]; s[j]=y; i++;j--; } }while(i<=j); } main() {char strl[6]="abcde",str2[7]="25134"; q(strl,0,4);puts(strl); q(str2,1,4);puts(str2); } ●完善程序題(共12分) 7 14.如果一個兩位整數(shù)是質(zhì)數(shù),將組成它的兩個數(shù)字交換位置后形成的整數(shù)仍為質(zhì)數(shù),則稱這 樣的數(shù)為絕對質(zhì)數(shù)。例如,13就是一個絕對質(zhì)數(shù)。以下程序用于找出所有兩位絕對質(zhì)數(shù)。 #include<stdio.h> int a_prime(int n) {int j,k,m[2]; m[O]=n; m[1]= _____(19)_______ ; for(j=0;j<2;j++) for(k=m[j]/2;k>1;k--) if( (20) )return 0; return 1; } main() {int i; for(i=10;i<100;i++) if(a_prime(i))printf("%d",i); } 20 i 15.計算∑ ∑n!的值,即求(1!)+(1!+2!)+(1!+2!+3!)+…+(1!+2!+3!+…+20!) i=1 n=1 main() {int i,n;double s=0,t; for(i=1;i<=20;i++) { ________(21)__________ ; for(n=1;_____(22)___________ ;n++) { t=t*n;s=s+t;} } printf("1!+(1!+2!)+…+(1!+2!+…+20 !)=%e\n",s); } . 16.以下程序中函數(shù)strmerge的功能是:合并a和b兩個有序的字母字符串(字典序)而產(chǎn)生一 個新的字符串,在合并的過程中刪除重復(fù)出現(xiàn)的字符,合并后的字符串仍然保持原序并保 存到c指向的數(shù)組中,函數(shù)返回在合并過程中刪除的字符個數(shù)。main函數(shù)中輸出合并后 的字符串“copy”以及在合并過程中刪除的字符個數(shù)3。 include<stdio.h> int strmerge(char *a,char *b,char *c) {int i=0,j=0,k=O;char t; while(a[i]!='\0' && ( 22 ) {if(a[i]==b[j]) {t=a[i];i++; ( 24 ); } else if(a[i]<b[j]) t=a[i++]; else t=b[j++]; if(t!=c[k-1]) ( 25 ) =t; 。 } while(a[i]) if(a[i]!=c[k-1]) . c[k++]=a[i++]; else i++: while(b[j]) if(b[j]!=c[k-1]) c[k++]=b[j++]; else j++; e[k]='\0'; return ( 26 ) ; } main() {static char s1[10]="ccp",s2[10]="oppy",s3[20];int n; n=strmerge(sl,s2,s3); puts(s3); printf("%d",n); } 17.設(shè)某鏈表上每個結(jié)點的數(shù)據(jù)結(jié)構(gòu)為 typedef struct node {int d; struct node *next; }NODE; 函數(shù)NODE *invert(NODE *head)的功能是:將head指向的單鏈表逆置,即原鏈表最后一 個結(jié)點變?yōu)榈谝粋結(jié)點,原來倒數(shù)第二個結(jié)點變成第二個結(jié)點,以此類推。在逆置過程中不建 立新的鏈表。 NODE *invert(NODE *head) {NODE *P,*q,*r; if(head==0|| ( (27) ) return head; P=head; q=P->next; while(q!=0) {r= ( 28 ) ; q->next=p;p=q;q=r; } ( 29 ) =O; head= ( 30 ) ; return head; } 答案: 1.D 2.D 3.D 4.C 5.A 6.C 7.D 8.C 9.C 10.D 11.A 12.B 13.C 14.A 15.C 16.B 17.D 18.C 19.C 20.C 21.A 22.D 23. D 24.B 25.A 26.D 27.B 28 D 29.C 30.C (1)float (2)標準 (3)2 (4)”a+” (5)2 (6)6 (7)1 (8)FFD0 (9)021 (10)113 (11)1100 (12)0111 (13)3 (14)1104 (15)3380 (16)0550 (17)edcba (18) 25431 (19)n/10+n%10*10 (20)m[j]%k==0 (21)t=1 (22)n<=i (23)b[j]!=’\ (25)c[k++] (26) i+j-k (27)head->next==0 (28)q->next (29)head->next (30) p 上機模擬試卷一: 改錯題:(20分) 以下程序檢查地名登記表,使每個地名只登記一次,并輸出登記表內(nèi)容 函數(shù)del_line刪除s指向的n行字符串中重復(fù)出現(xiàn)的字符串,只保留第一次出現(xiàn)的字符串 若程序正確,運行后輸出結(jié)果應(yīng)為:shanghai beijing nanjing 含有錯誤的源程序如下: #include <stdio.h> #include <string.h> int del_line(char s[10][ ],int n) { int i,j,k; for(i=0;i<n;i++) {j=i; while(j<n) if(strcmp(s[i],s[j])==0) {for(k=j;k<n;k++) s[k]=s[k+1]; s[k][0]=0;n--; } else j++; } return n; } main() { char line[10][10]={“shanghai”,”beijing”,”nanjing”,”shanghai”,”nanjing”}; int k,n=5; n=del_line(line,n); for(k=0;k<n;k++) puts(line); } 將上述程序錄入到文件myf1.c中,然后根據(jù)題目的要求以及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。 2•改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯 預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。 3.改正后的源程序(文件名myfl.c)必須放在考試軟盤的根目錄下,供閱卷用,否則不 予評分。 二:編程題(20分) 1. 編寫函數(shù)int gcd_max(int a[ ],int b[ ],int n),求長度為n的數(shù)組a中所有相鄰兩元素的最大公約數(shù)(共n-1個),并將之依次保存到數(shù)組b中,函數(shù)返回b數(shù)組中最大數(shù)的下標 2. 編寫函數(shù)main函數(shù),聲明一個數(shù)組并用以下測試數(shù)據(jù)對其初始化,調(diào)用函數(shù)gcd_max,將求得的所有公約數(shù),最大公約數(shù)及其下標寫入文件myf2.out中。 例如:輸入測試數(shù)據(jù)3,6,4,16,8,5,15,10,12,18,則輸出結(jié)果應(yīng)為:3,2,4,8,1,5,5,2,6,max1=3,max=8 1.將源文件取名為myf2.c,輸出結(jié)果文件取名為myf2.out。 ‘ 2.數(shù)據(jù)文件的打開、使用和關(guān)閉等操作均用C標準庫中緩沖文件系統(tǒng)的文件操作函數(shù) 實現(xiàn)。 3.源程序文件和運行結(jié)果文件均須保存在T:盤的根目錄下,供閱卷用。 4.不要將myf2.obj、myf2.exe保存到T:盤中。 改錯答案: (1) int del_line(char s[10][ ],int n)修改為: int del_line(char s[ ][10],int n) (2) j=i; 修改為:j=i+1; (3) s[k]=s[k+1] 修改為:strcpy(s[k],s[k+1]); (4) puts(line); 修改為: puts(line[k]); 編程題答案: #include "stdio.h" int gcd_max(int a[ ],int b[ ], int x) { int i,k=0,t,r,m,n; int max,maxk; for(i=0;i<x-1;i++) { m=a[i];n=a[i+1]; if(m<n) t=m,m=n,n=t; r=m%n; while(r!=0) { m=n;n=r;r=m%n; } b[k++]=n; } max=b[0]; maxk=0; for(i=1;i<k;i++) if(max<b[i]) max=b[i],maxk=i; return maxk; } main() { FILE *fp; int a[10]={ 3,6,4,16,8,5,15,10,12,18},i,k; int b[9]={0}; if((fp=fopen("myf2.out","w"))==NULL) { printf("Create file myf2.out failed!\n"); exit(0); } k=gcd_max(a,b,10); for(i=0;i<9;i++) { printf("%5d",b[i]); fprintf(fp,"%5d",b[i]); } fprintf(fp,"\n"); fprintf(fp,"max1=%d,max=%d\n",k,b[k]); fclose(fp); } |