全國計算機二級C語言選擇題 |
1.下列敘述中正確的是 A.棧與隊列都只能順序存儲 B.循環隊列是隊列的順序存儲結構 C.循環鏈表是循環隊列的鏈式存儲結構 D.棧是順序存儲結構而隊列是鏈式存儲結構 2.設某二叉樹的前序序列為ABC,中序序列為CBA,則該二叉樹的后序序列為 A.BCA B.CBA C.ABC D.CAB 3.下列排序方法中,最壞情況下時間復雜度最小的是 A.冒泡排序 B.快速排序 C.堆排序 D.直接插入排序 4.為了對有序表進行對分查找,則要求有序表 A.只能順序存儲 B.只能鏈式存儲 C.可以順序存儲也可以鏈式存儲 D.任何存儲方式 5.軟件設計中模塊劃分應遵循的準則是 A.低耦合低內聚 B.高耦合高內聚 C.低耦合高內聚 D.內聚與耦合無關 6.下面屬于整數類的實例是 A.0x518 B.0.518 C."-518" D.518E-2 7.下面屬于白盒測試方法的是 A.邊界值分析法 B.基本路徑測試 C.等價類劃分法 D.錯誤推測法 8.設有一個商店的數據庫,記錄客戶及其購物情況,由三個關系組成:商品 (商品號,商品名,單價,商品類別,供應商) ,客戶 (客戶號,姓名,地址,電郵,性別,身份證號) ,購買 (客戶號,商品號,購買數量),則關系購買的鍵為 A.客戶號 B.商品號 C.客戶號, 商品號 D.客戶號, 商品號, 購買數量 9.有兩個關系R,S如下,由關系R和S通過運算得到關系T,則所使用的操作為 A.并 B.自然連接 C.差 D.交 10.在數據庫管理系統提供的數據語言中,負責數據的查詢、增加、刪除和修改等操作的是 A.數據定義語言 B.數據管理語言 C.數據操縱語言 D.數據控制語言 11.流程圖是描述算法的很好的工具,一般的流程圖中由幾種基本圖形組成。其中判斷框的圖形是 A.菱形 B.長方形 C.平行四邊形 D.橢圓型 12.以下敘述錯誤的是 A.在進行模塊化程序設計的時候,應首先完成每個模塊的編寫調試,再集中考慮主程序中的算法 B.同一程序各模塊可由一組人員同時進行編寫調試,可提高編寫程序的效率 C.模塊化的程序設計是采用自頂向下、逐步細化的原則 D.程序的每個模塊都可通過三種基本結構實現 13.關于C語言的變量名,以下敘述正確的是 A.變量名不可以與關鍵字同名 B.變量名不可以與預定義標識符同名 C.變量名必須以字母開頭 D.變量名是沒有長度限制的 14.有以下程序 #include <stdio.h> main() { int a; a = (int)1.99*3; printf("%d\n", a); } 程序的運行結果是 A.3 B.5 C.6 D.結果不確定 15.有以下程序 #include <stdio.h> main() { int k=-17; printf("%d,%o,%x\n", k, 1-k, 1-k); } 程序的運行結果是 A.-17,22,12 B.-17,12,22 C.-17,-22,-12 D.17,22,12 16.若有定義:int a; float b; double c; ,程序運行時輸入:a=1,b=2,c=3 <回車>,能把值1輸入給變量a、值2輸入給變量b、值3輸入給變量c的輸入語句是 A.scanf("a=%d,b=%f,c=%lf", &a,&b,&c); B.scanf("%d%f%lf", &a,&b,&c); C.scanf("a=%d,b=%lf,c=%lf", &a,&b,&c); D.scanf("a=%d,b=%f,c=%f", &a,&b,&c); 17.有以下程序 #include <stdio.h> main() { int a=0,b=0,c=0,d=0; (++a || ++b) ? ++c : ++d; printf("%d,%d,%d,%d\n", a,b,c,d); } 程序的運行結果是 A.1,0,1,0 B.1,1,0,1 C.1,0,0,1 D.1,1,1,0 18.有以下程序 #include <stdio.h> main() { int a,b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { case 1: printf("%d,", b++); case 2: printf("%d,", b++); default: printf("%d,", b++); } } printf("\n"); } 執行時輸入:1 2 3 <回車>,則輸出結果是 A.1,2,3,2,3,3, B.1,2,3, C.2,3,4,3,4,4, D.1,1,1,2,2,3 19.有以下程序 #include <stdio.h> main() { int a=1,b=1; while(a--) b--; printf("%d,%d\n", a,b); } 程序的運行結果是 A.-1,0 B.0,0 C.-1,-1 D.1,1 20.有以下程序 #include <stdio.h> main() { int a=1, b=0; for(;a<5; a++) { if (a%2==0) break; b += a; } printf("%d \n", b); } 程序的運行結果是 A.1 B.10 C.0 D.4 21.以下能正確輸出字符a 的語句是 A.printf("%s", "a"); B.printf("%s", 'a'); C.printf("%c", "a"); D.printf("%d", 'a'); 22.有以下程序 #include <stdio.h> main() { char c; do { c=getchar(); putchar(c); } while(c != '#'); printf("\n"); } 執行時如輸入:abcdefg##<回車> , 則輸出結果是 A.abcdefg# B.abcdefg C.abcdefg## D.## 23.以下關于C語言函數參數傳遞方式的敘述正確的是 A.數據只能從實參單向傳遞給形參 B.數據可以在實參和形參之間雙向傳遞 C.數據只能從形參單向傳遞給實參 D.C語言的函數參數既可以從實參單向傳遞給形參,也可以在實參和形參之間雙向傳遞,可視情況選擇使用 24.以下關于指針的敘述正確是 A.所有類型的指針變量所占內存的大小是一樣的 B.指針變量所占內存的大小與其類型有關,char型指針變量只占1個字節,double型指針變量占8個字節 C.指針變量可直接指向任何類型的變量,而不會出現編譯或運行錯誤 D.指針變量既可以直接指向結構體,也可直接指向結構體中某個成員,而不會出現編譯或運行錯誤 25.有以下程序 #include <stdio.h> int k=5; void f(int *s) { s=&k; } main() { int m=3,*p=&m; f(p); printf("%d,%d\n", m, *p); } 程序的運行結果是 A.3,3 B.5,5 C.3,5 D.5,3 26.有以下程序 #include <stdio.h> int *f(int *s,int *t) { if (*s < *t) *s=*t; return s; } main() { int i=3, j=5, *p=&i, *q=&j, *r; r=f(p,q); printf("%d,%d,%d,%d,%d\n", i, j, *p, *q, *r); } 程序的運行結果是 A.5,5,5,5,5 B.3,5,5,5,5 C.5,3,3,3,5 D.3,5,3,5,5 27.有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N]) { int b[N][N],i,j; for(i=0; i<N; i++) for(j=0; j<N; j++) b[i][j] = a[N-1-j][i]; for(i=0; i<N; i++) for(j=0; j<N; j++) a[i][j] = b[i][j]; } main() { int x[N][N]={ {1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}, {13,14,15,16} }, i; fun(x); fun(x); for (i=0;i<N; i++) printf("%d,", x[i][i]); printf("\n"); } 程序的運行結果是 A.16,11,6,1, B.1,6,11,16, C.4,7,10,13, D.13,10,7,4, 28.有以下程序 #include <stdio.h> void fun(int a[ ], int n) { int i,j=0,k=n/2, b[10]; for (i=n/2-1; i>=0; i--) { b[i] =a[j]; b[k] =a[j+1]; j+=2; k++; } for (i=0; i<n; i++) a[i] = b[i]; } main() { int c[10]={10,9,8,7,6,5,4,3,2,1},i ; fun(c, 10); for (i=0;i<10; i++) printf("%d,", c[i]); printf("\n"); } 程序的運行結果是 A.2,4,6,8,10,9,7,5,3,1, B.10,8,6,4,2,1,3,5,7,9, C.1,2,3,4,5,6,7,8,9,10, D.1,3,5,7,9,10,8,6,4,2, 29.有以下程序 #include <stdio.h> #include <string.h> main() { int i; char a[]="How are you!"; for (i=0; a[i]; i++) if (a[i] == ' ') { strcpy(a, &a[i+1]); i=0; } printf("%s\n",a); } 程序的運行結果是 A.you! B.Howareyou! C.areyou! D.are you! 30.有以下程序(其中的strstr()函數頭部格式為:char *strstr(char *p1, char *p2) 確定p2字符串是否在p1中出現,并返回p2第一次出現的字符串首地址) #include <stdio.h> #include <string.h> char *a="you"; char *b="Welcome you to Beijing!"; main() { char *p; p = strstr(b, a) + strlen(a) + 1; printf("%s\n", p); } 程序的運行結果是 A.to Beijing! B.you to Beijing! C.Welcome you to Beijing! D.Beijing! 31.有以下程序 #include <stdio.h> main() { char b[4][10]; int i; for (i=0; i<4; i++) scanf("%s", b[i]); printf("%s%s%s%s\n", b[0],b[1],b[2],b[3]); } 執行時若輸入: Fig flower is red. <回車>則輸出結果是 A.Figflowerisred. B.Figfloweris red. C.Figflower is red. D.Fig flower is red. 32.有以下程序 #include <stdio.h> #include <string.h> main() { char w[20], a[5][10]={"abcdef", "ghijkl", "mnopq", "rstuv", "wxyz."}; int i; for (i=0; i<5; i++) w[i]=a[i][ strlen(a[i]) - 1]; w[5]= '\0'; puts(w); } 程序的運行結果是 A.flqv. B.agmrw C.ekpuy D.flqvz 33.有以下程序 #include <stdio.h> void f(int x[], int n) { if ( n> 1) { f(&x[1], n-1); printf("%d,", x[0]); } else printf("%d,", x[0]); } main() { int z[6] = {1,2,3,4,5,6}; f(z,6); printf("\n"); } 程序的運行結果是 A.6,5,4,3,2,1, B.1,1 C.1,1,1,1,1,1, D.1,2,3,4,5,6, 34.有以下程序 #include <stdio.h> int a=2; int f() { static int n; int m; m=n=0; n++; a++; m++; return n+m+a; } main() { int k; for (k=0; k<3; k++) printf("%d,", f( )); printf("\n"); } 程序的運行結果是 A.5,6,7, B.5,7,9, C.5,8,11, D.5,5,5, 35.有以下程序 #include <stdio.h> #define S(x) x*x main() { int k=5, j=2; printf("%d,%d\n", S(k+j+2),S(j+k+2)); } 程序的運行結果是 A.21,18 B.81,81 C.21,21 D.18,18 36.有以下程序 #include <stdio.h> typedef struct stu { char name[10]; char gender; int score; } STU; void f(STU *a, STU *b) { *b = *a; printf("%s,%c,%d,", b->name, b->gender, b->score); } main() { STU a={"Zhao", 'm', 290}, b={"Qian", 'f', 350}; f(&a,&b); printf("%s,%c,%d\n", b.name, b.gender, b.score); } 程序的運行結果是 A.Zhao,m,290,Zhao,m,290 B.Zhao,m,290,Qian,f,350 C.Qian,f,350,Qian,f,350 D.Qian,f,350,Zhao,m,290 37.有以下程序 #include <stdio.h> #include <string.h> typedef struct stu { char name[10]; char gender; int score; } STU; void f(char *name, char gender, int score) { strcpy(name, "Qian"); gender = 'f'; score = 350; } main() { STU a={"Zhao", 'm', 290}, b; b=a; f(b.name,b.gender,b.score); printf("%s,%c,%d,", a.name, a.gender, a.score); printf("%s,%c,%d\n", b.name, b.gender, b.score); } 程序的運行結果是 A.Zhao,m,290,Qian,m,290 B.Zhao,m,290,Zhao,m,290 C.Zhao,m,290,Qian,m,350 D.Zhao,m,290,Qian,f,350 38.若有定義 typedef int T[10]; T *a[20]; 則與上述定義完全等價的說明語句是 A.int *a[20][10]; B.int *a[20]; C.int *a[10]; D.int *a[10][20]; 39.有以下程序 #include <stdio.h> main() { int c,d; c= 13&5; d=10&&5; printf("%d,%d\n", c, d); } 程序的運行結果是 A.5,1 B.1,1 C.18,1 D.13,1 40.有以下程序 #include <stdio.h> main() { FILE *fp; int i, a[6]={1,2,3,4,5,6}, k; fp = fopen("data.dat", "w+b"); fwrite(&a[0], sizeof(int), 1, fp); for (i=1; i<6; i++) { fseek(fp, 0L, 0); fread(&k, sizeof(int), 1, fp); fseek(fp, 0L, 0); a[i] +=k; fwrite(&a[i], sizeof(int), 1, fp); } rewind(fp); fread(&k, sizeof(int), 1, fp); fclose(fp); printf("%d\n", k); } 程序的運行結果是 A.21 B.6 C.123456 D.11 1.B 2.B 3.C 4.A 5.C 6.A 7.B 8.C 9.D 10.C 11.A 12.A 13.A 14.A 15.A 16.A 17.A 18.A 19.A 20.A 21.A 22.A 23.A 24.A 25.A 26.A 27.A 28.A 29.A 30.A 31.A 32.A 33.A 34.A 35.A 36.A 37.A 38.A 39.A 40.A
|