2009年春季江蘇省二級c語言試題與答案 |
江蘇省高校計算機等級考試2009年春季考試試題 第二部分 C程序設計 21.以下定義和聲明中,語法均有錯誤的是____(21)_________ ①int j(int x){}②int f(int f){} ③int 2x=1; ④struet for{int x;}; A.②③ B.③④ C.①④ D.①②③④ 22.設有定義和聲明如下: #define d 2 int x=5;float Y =3.83;char c='d'; 以下表達式中有語法錯誤的是_(22)______ A.x++ B.y++ C.c++ D.d++ 23.以下選項中,不能表示函數 A.s=(X>0)?1:(X<0)?-1:0 B.s=X<0?-1:(X>0?1:0) C.s=X<=0?-1:(X==0?0:1) D.s=x>0?1:x==0?0:-1 24.以下語句中有語法錯誤的是____(24)______ 。 A.printf("%d",0e); B.printf("%f",0e2); C.printf("%d",Ox2); D.printf("%s","0x2"); 25.以下函數定義中正確的是___(25)_________ 。 A.double fun(double x,double y){} B.double fun(double x;double Y){} C.double fun(double x,double Y);{} D.double fun(double X,Y){} 26.若需要通過調用f函數得到一個數的平方值,以下f函數定義中不能實現該功能的 是_____(26)______ 。 A.void f(double *a){*a=(*a)*(*a);} B.void f(double a,double *b){*b=a*a;} C.void f(double a,double b){b=a*a;} D.double f(double a){return a*a;} 27.設有聲明"int P[10]={1,2},i=0;",以下語句中與"P[i]=P[i+1],i++;"等價的 是____(27)_______。 A.P[i]=P[i++]; B.P[++i]=P[i]; C.P[++i]=P[i+1]; D.i++,P[i-1]=P[i]; 28.已知有聲明"char a[]="It is mine",*p="It is mine";",下列敘述中錯誤的是28 。 A.strcpy(a,"yes")和strcpy(p,"yes")都是正確的 B.a="yes"和p="yes"都是正確的 C.*a等于*p D.sizeof(a)不等于sizeof(p) 29.已知有聲明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表達式中與 "a[1][1]=1"不等價的表達式是29。 A.*(p1+1)=1 B.p1[1][1]=1 C.*(*(p2+1)+1)=1 D.p2[1][1]=1 30.設有結構定義及變量聲明如下: struct product {char code[5]; float price; }y[4]={"100",100}" 以下表達式中錯誤的是____(30)_____。 A.(*y).code[0]='2'; B.y[0].code[0]='2'; C.y->price=10; D.(*y)->price=10; 二、填空題(將答案填寫在答題紙的相應答題號內,每個答案只占一行,共30分) ●基本概念 1.在一個C語言源程序中,必不可少的是(1) 。 2.若有聲明"int x;"且sizeof(x)的值為2,則當x值為( 2 )時"x+1>x"為假。 3.若有聲明"float y=3.14619;int x;",則計算表達式"x=y*100+0.5,Y=x/100.0"后y 的值是(3) 。 4.執行以下程序段中的語句"k=M*M+1"后k的值是(4) #define N 2 #define M N+1 k=M*M+1: ●閱讀程序 5.以下程序運行時輸出結果是(5) #include<stdio.h> void main() {double x[3]={1.1,2.2,3.3},Y; FILE *fp=fopen("d:\\a.out","wb+"); fwrite(x,sizeof(double),3,fp)" fseek(fp, fread(&y,sizeof(double),1,fp)" printf("% fclose(fp)" } 6.以下程序運行時輸出結果是(6)。 #include<stdio.h> void main() { int k=5,n=0; while(k>0) { switch(k) { case 1: case 3:n+=1;k--;break" default:n=0;k--; case 2: case 4: n+=2;k--;break; } } printf("%3d",n); } } 7.以下程序運行時輸出結果是(7) 。 #include<stdio.h> void change(int x,int Y,int *z) { int t; t=x;x=y;y=*z;*z=t; } void main() { int x=18,y=27,z=63; change(x,y,&z); printf("x=%d,y=%d,z=%d\n",x,y,z); } 8.以下程序運行時輸出結果是(8) 。 #include<stdio.h> int f(int x,int y) {retum x+y; } void main() {double a=5.5,b=2.5; printf("%d",f(a,b)); } 9.以下程序運行時輸出結果中第-行是 (9) ,第三行是(10) 。 #include<stdio.h> define N 5 void main() { static char a[N][N]; int i,j,t,start=0,end=N-1; char str[]="123",ch; for(t=0;t<=N/2;t++) { ch=str[t]; for(i=j-start;i<end;i++)a[i][j]=ch; for(j=start;j<end;j++)a[i][j]=ch; for(i=end;i>start;i--)a[i][j]=ch; for(j=end;j>start;j--)a[i][j]=ch; if(start==end) a[start][end]=ch; start++,end--; } for(i=O;i<N;i++) { for(j=0;j<N;j++) printf("%c",a[i][j]); printf("\n"); } } 10.以下程序運行時輸出結果中第一行是(11),第二行是(12)。 #include<stdio.h> void fun(int x,int P[],int *n) { int i,j=O; for(i=1;i<=x/2;i++) if(x%i==0)p[j++]=i; *n=j: } void main() {int x,a[10],n,i; fun(27,a,&n); for(i=0;i<n;i++) printf("%5d",a[i]); printf("\n%5d",n); } 11.以下程序運行時輸出結果是(11) 。 #include<stdio.h> #include<ctype.h> int count(char s[]) { int i=0; if(s[i]=='\0') return 0; while(isalpha(s[i]))i++; while(!isalpha(s[i])&&s[i]!='\O')i++; return 1+count(&s[i]); } void main() {char line[]="one world,one dream."; printf("%d",count(line)); } . 12.以下程序運行時輸出結果中第一行是 (14) ,第二行是(15) #include<stdio.h> int fun(char *a,char *b) {int m=0,n=0: while(*(a+m)!='\0')m++; while(b[n]) { *(a+m)=b[n];m++;n++; } *(a+m)='\0'; return m; } void main() {char s1[20]="yes",s2[5]="no"; printf("%d\n",fun(s1,s2)); puts(s1); } 13.以下程序運行時輸出結果中第-行是 (16) ,第二行是 (17) ,第三行是( 18 ) #include<stdio.h> typedef struct{int x;int y;}S; void fun(S pp[],int n) {int i,j,k;S t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if((pp[j].x<pp[k].x)||(pp[j].x==pp[k].x&&pp[j].y<pp[k].y)) k=j; if(k!=i) {t=pp[i];pp[i]=pp[k];pp[k]=t;} } } void main() {S a[5]={{3,2},{3,1},{1,2},{2,4},{2,3}}; int i,n=5; fun(a,n); for(i=0;i<n;i++) printf("%d,%d\n",a[i].x,a[i].y); } . ●完善程序 14?以下程序求一組整數的最大公約數。試完善程序以達到要求的功能。 #include<stdio.h> int gcd(int a,int b) i {int r; while(_____(19)_______) {r=a%b;a=b;(_____20_____);} return a; } void main() {int x,i,a[6]={12,56,48,32,16,24}; x= (___21_____) ; for(i=1;i<6;i++) x=gcd(___(22)_____,a[i]); printf("(%d,",a[O]); for(i=1;i<5;i++) printf("%d,",a[i]); printf("%d)=;d\n",a[5],x); } 15.以下程序完成兩個長正整數的加法運算并輸出計算結果。函數add模擬手工加法運 算的過程,將a和b指向的數組中存儲的兩個以字符串形式表示的n位正整數相加,并將運算 結果以字符串形式保存到c指向的數組中。main函數中pl和p2數組分別存放被加數字符串 和加數字符串,p3數組存放運算結果字符串。若p1中的字符串為"1000000001"、p2中的字 符串為"9000000009",調用add函數后p3得到的是以字符串表示的這兩個整數相加的結果 "10000000010"。試完善程序以達到要求的功能。 #include "stdio.h" #include "string.h" void add(char a[],char b[],char c[],__(23)____) {int i,k; c[n]='\0';k=0; for(i=n-1;i>=0;i--) {c[i]=(a[i]-'O')+(b[i]-'0')+k; k=______(24)______; c[i]=c[i]%10+'0'; } if(k) {for(i=n+1;i>O;i--) c[i]=___(25)____; c[i]=k+'0'; } } void main() {char p1[80]="1000000001",pz[80]="9000000009",p3[80]; int i,x=strlen(p1),y=strlen(p2); if(x<y) { for(i=x;i>=0;i--) {p1[i+y-x]=p1[i];p1[i]='0';} _____(26)______; } if(x>y) for(i=y;i>=0;i--) {p2[i+x-y]=p2[i];p2[i]='0';} add(p1,p2,p3,x); puts(p3); } 16.以下程序創建-個鏈表并實現數據統計功能。函數WORD *create(char a[][20], int n)創建-個包含n個結點的單向鏈表,結點數據來自a指向的數組中存儲的n個單詞 (字符串)。函數void count(WORD *h)統計h指向的單向鏈表中不同單詞各自出現的次數, 將統計結果保存到局部數組c中并輸出。程序運行時輸出結果為"red:1 green:2 blue:3" 試完善程序以達到要求的功能。 #include "stdio.h" #include "stdlib.h" #include "string.h" typedef struct w {char word[20]; struct w *next: }WORD; WORD *create(char a[][20],int n) {WORD *p1,*p2,*h=0;int i; for(i=0;i<n;i++) {p1=(WORD *)malloc(sizeof(WORD)); strcpy(___(27)___,a[i]); if(h==O) h=p2=p1: else {p2->next=p1;p2=pl;} } p2->next=_____(28)____; return h; } void count(WORD *h) { struct {char word[20]; int num; }c[6]={0}; int m=0,i; while(h) {if(m==O) {strcpy(c[0].word,h->word); c[0].num=1;m++; } else {for(i=O;i<m;i++) if(strcmp(c[i].word,h->word)==0) { ______(29)_____ ; break; } if(i>=m) {strcpy(c[m].word,h->word); c[m++].num=1; } } ____(30)_____; } for(i=0;i<m;i++) printf("%s:%d",c[i].word,c[i].num); } void main() {char words[6][20]={"red","green","blue","blue","green","blue"}; WORD *head=0: head=create(words,6); count(head); } 第一部分計算機基礎知識 1. 在下列有關現代信息技術的一些敘述中,正確的是 1 。 A.集成電路是20世紀90年代初出現的,它的出現直接導致了微型計算機的誕生 B.集成電路的集成度越來越高,目前集成度最高的已包含幾百個電子元件 C.目前所有數字通信均不再需要使用調制解調技術和載波技術 D.光纖主要用于數字通信,它采用波分多路復用技術以增大信道容量‘ . 2. 最大的10位無符號二進制整數轉換成八進制數是 2 .。 A.1023 B.1777 C.1000 D.1024 3. 在下列有關目前PC機CPU的敘述中,錯誤的是 3 。 A.CPU芯片主要是由Intel公司和AMD公司提供的 B."雙核"是指PC機主板上含有兩個獨立的CPU芯片 C.Pentium 4微處理器的指令系統由數百條指令組成 D.Pentium 4微處理器中包含一定容量的Cache存儲器 4. 在下列有關當前PC機主板和內存的敘述中,正確的是 4 。 A.主板上的BIOS芯片是一種只讀存儲器,其內容不可在線改寫 B.絕大多數主板上僅有一個內存插座,因此PC機只能安裝一根內存條 C.內存條上的存儲器芯片屬于SRAM(靜態隨機存取存儲器) D.目前內存的存取時間大多在幾個到十幾個ns(納秒)之間 5. 在下列有關PC機輔助存儲器的敘述中,正確的是 5 。 A.硬盤的內部傳輸速率遠遠大于外部傳輸速率 B.對于光盤刻錄機來說,其刻錄信息的速度一般小于讀取信息的速度 C.使用USB 2.0接口的移動硬盤,其數據傳輸速率大約為每秒數百兆字節 D.CD-ROM的數據傳輸速率一般比USB 2.0還快 6. 在下列PC機I/O接口中,數據傳輸速率最快的是 6 。 A.USB 2.0 B.IEEE-1394 C.IrDA (紅外) D.SATA 7. 計算機軟件可以分為商品軟件、共享軟件和自由軟件等類型。在下列相關敘述中,錯誤的是 7 。 A.通常用戶需要付費才能得到商品軟件的使用權,但這類軟件的升級總是免費的 B.共享軟件通常是一種"買前免費試用"的具有版權的軟件 C.自由軟件的原則是用戶可共享,并允許拷貝和自由傳播 D.軟件許可證是一種法律合同,它確定了用戶對軟件的使用權限 8. 人們通常將計算機軟件劃分為系統軟件和應用軟件。下列軟件中,不屬于應用軟件類型的是 8 A.AutoCAD B.MSN C.Oracle D.Windows Media Player 9. 在下列有關Windows 98/2000/XP操作系統的敘述中,錯誤的是 9 。 A.系統采用并發多任務方式支持多個任務在計算機中同時執行 B.系統總是將一定的硬盤空間作為虛擬內存來使用 C.文件(夾)名的長度可達200多個字符 D.硬盤、光盤、優盤等均使用FAT文件系統 10. 在下列有關算法和數據結構的敘述中,錯誤的是 10 。 A.算法通常是用于解決某一個特定問題,且算法必須有輸入和輸出 B.算法的表示可以有多種形式,流程圖和偽代碼都是常用的算法表示方法 C.常用的數據結構有集合結構、線性結構、樹形結構和網狀結構等 D.數組的存儲結構是一種順序結構 11•因特網的IP地址由三個部分構成,從左到右分別代表 11 。 A.網絡號、主機號和類型號 B.類型號、網絡號和主機號 C.網絡號、類型號和主機號 D.主機號、網絡號和類型號 12•在下列有關ADSL技術及利用該技術接入因特網的敘述中,錯誤的是 12 。 A.從理論上看,其上傳速度與下載速度相同 B.一條電話線上可同時接聽/撥打電話和進行數據傳輸 C.利用ADSL技術進行數據傳輸時,有效傳輸距離可達幾公里 D.目前利用ADSL技術上網的計算機一般需要使用以太網網卡 13.人們往往會用"我用的是 指的是數據通信中的 13 指標。 A.最高數據傳輸速率 B.平均數據傳輸速率 C.每分鐘數據流量 D.每分鐘IP數據包的數目 14•計算機局域網按拓撲結構進行分類,可分為環型、星型和 14 型等。 A.電路交換 B.以太 C.總線 D.對等 15.網絡信息安全主要涉及數據的完整性、可用性、機密性等問題。保證數據的完整性就是 15 。 A.保證傳送的數據信息不被第三方監視和竊取 B.保證發送方的真實身份 C.保證傳送的數據信息不被篡改 D.保證發送方不能抵賴曾經發送過某數據信息 16.某計算機系統中,西文使用標準ASCII碼、漢字采用GB2312編碼。設有一段純文本,其機內碼為CB F5 DO B4 50 43 CA C7 D6 B8,則在這段文本中含有: 16 。 A.2個漢字和1個西文字符 B.4個漢字和2個西文字符 C.8個漢字和2個西文字符 D.4個漢字和1個西文字符 17.以下關于漢字編碼標準的敘述中,錯誤的是 17 。 A.GB 2312標準中所有漢字的機內碼均用雙字節表示 B.我國臺灣地區使用的漢字編碼標準BIG 5收錄的是繁體漢字 C.GB 18030漢字編碼標準收錄的漢字在GB 2312標準中一定能找到 D.GB 18030漢字編碼標準既能與UCS(Unicode)接軌,又能保護已有中文信息資源 18.若波形聲音未進行壓縮時的碼率為64kb/s,已知取樣頻率為8kHz,量化位數為8,那么它的聲道數是 18 。 A.1 B 19.從信息處理的深度來區分信息系統,可分為業務處理系統、信息檢索系統和信息分析系統等。在下列幾種信息系統中,不屬于業務處理系統的是 19 。 A.DSS B.CAI C.CAM D.OA 20.在下列有關信息系統開發、管理及其數據庫設計的敘述中,錯誤的是 20 。 A.常用的信息系統開發方法可分為結構化生命周期方法、原型法、面向對象方法和CASE方法等 B.在系統分析中常常使用結構化分析方法,并用數據流程圖和數據字典來表達數據和處理過程的關系 C.系統設計分為概念結構設計、邏輯結構設計和物理結構設計,通常用E-R模型作為描述邏輯結構的工具 D.從信息系統開發過程來看,程序編碼、編譯、連接、測試等屬于系統實施階段的工作 1.D 2.B 3.B 4.D 5.B 6.D 7.A 8.C 9.D 10.A 11.B 12.A 13.A 14.C 15.C 16.B 17.C 18.A 19.A 20.C 21.B 22.D 23.C 24.A 25. A 26.C 27.D 28.B 29.B 30.D 二:填空 (1)main函數定義 (2)32767 (3)3.15 (4) 6 (5)3.3 (6)2 3 5 6 (7)x=18, y=27 , z=18 (8)7 (9)11111 (10)12321 (11)1 3 9 (12)3 (13)4 (14)5 (15)yesno (16)1,2 (17)2,3 (18)2,4 (19)b或b!=0 (20)b=r (21)a[0] (22)x (23)int n (24)c[i]/10 (25)c[i-1] (26)x=y (27)p1->word (28)0或NULL (29)c[i].min++ (30)h=h->next |