2014年9月全國二級C語言選擇題真題第2套 |
1.下列敘述中錯誤的是 A.數據結構中的數據元素不能是另一數據結構 B.數據結構中的數據元素可以是另一數據結構 C.空數據結構可以是線性結構也可以是非線性結構 D.非空數據結構可以沒有根結點 2.為了降低算法的空間復雜度,要求算法盡量采用原地工作(in place)。所謂原地工作是指 A.執行算法時所使用的額外空間固定(即不隨算法所處理的數據空間大小的變化而變化) B.執行算法時所使用的額外空間隨算法所處理的數據空間大小的變化而變化 C.執行算法時不使用額外空間 D.執行算法時不使用任何存儲空間 3. 某循環隊列的存儲空間為Q(1:m),初始狀態為front=rear=m,F經過一系列的入隊操作和退隊操作后,front=m,rear=m-1,則該循環隊列中的元素個數為 A.m-1 B.m C.1 D.0 4.某棵樹只有度為3的結點和葉子結點,其中度為3的結點有8個,則該樹中的葉子結點數為 A.15 B.16 C.17 D.不存在這樣的樹 5. 某二叉樹共有530個結點,其中度為2的結點有250個,則度為1的結點數為 A.29 B.30 C.249 D.251 6.若某二叉樹中的所有結點值均大于其左子樹上的所有結點值,且小于右子樹上的所有結點值,則該二叉樹遍歷序列中有序的是 A.前序序列 B.中序序列 C.后序序列 D.以上說法均可以 7.將C語言的整數設為整數類I,則下面屬于類I實例的是 A.-103 B.10E3 C.10.3 D."0103" 8.下列敘述中正確的是 A.軟件是程序、數據和文檔 B.軟件是程序和數據 C.軟件是算法和數據結構 D.軟件是算法和程序 9.軟件生命周期是指 A.軟件的定義和開發階段 B.軟件的需求分析、設計與實現階段 C.軟件的開發階段 D.軟件產品從提出、實現、使用維護到停止使用退役的過程 10.下列敘述中正確的是 A.數據庫系統可以解決數據冗余和數據獨立性問題,而文件系統不能 B.數據庫系統能夠管理各種類型的文件,而文件系統只能管理程序文件 C.數據庫系統可以管理龐大的數據量,而文件系統管理的數據量較少 D.數據庫系統獨立性較差,而文件系統獨立性較好 11.關于程序模塊化,以下敘述錯誤的是 A.程序模塊化可以提高程序運行的效率 B.程序模塊化可以提高程序編制的效率 C.程序模塊化可以提高程序代碼復用率 D.程序模塊化可以提高調試程序的效率 12.以下是正確C語言標識符的是 A.&3 B.#3 C._3 D.-3 13.若有定義:int a,b,c; 以下程序段的輸出結果是 a=11; b=3; c=0; printf("%d\n",c=(a/b,a%b)); A.2 B.0 C.3 D.1 14.以下選項中合法的C語言常量是 A. 'C-STR' B.2014.1 C."\1.0 D.2EK 15.設有定義:int x,y,z;,且各變量已賦正整數值,則以下能正確表示代數式“ A.1.0/x/y/z B.1/x*y*z C.1/(x*y*z) D.1/x/y/(double)z 16.有以下程序 #include <stdio.h> main() { char a,b,c,d; scanf("%c%c",&a, &b); c=getchar(); d=getchar(); printf("%c%c%c%c\n",a,b,c,d); } 當執行程序時,按下列方式輸入數據(從第1列開始,<CR>代表回車,注意:回車也是一個字符) 12<CR> 34<CR> 則輸出結果是 A. 12 3 B. 12 C.1234 D. 12 34 17.有以下程序 #include <stdio.h> main( ) { int a, b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { default: printf("%d,",b+1); continue; case 1: printf("%d,", b+1); case 2: printf("%d,", b+1); continue; } } } 執行時輸入:1 2 3<回車>,則輸出結果是 A.2,2,3,4,4,4, B.2,3,4, C.2,2,3,4, D.2,3,3,4,5,6, 18.有以下程序 #include <stdio.h> #include <math.h> main() { double x, y, z; scanf("%lf%lf",&x,&y ); z= x/ y; while(1) if( fabs(z) > 1.0 ) { x=y; y=x; z=x/y; } else break; printf("y=%f \n", y ); } 執行時輸入:3.6 2.4<回車>,則輸出結果是 A.2.400000 B.1.500000 C.1.600000 D.2.000000 19.有以下程序 #include <stdio.h> main( ) { int i; char c; scanf("%c", &c); for (i=0; i<5; i++) { if (i > c) continue; printf("%d,", i); } } 執行時輸入:0<回車>后,則輸出結果是 A.5 B.0,0,0,0,0, C.0,1,2,3,4, D.0,1, 20.以下程序擬實現計算 sum=1+1/2+1/3+ … +1/50 。 #include <stdio.h> main( ) { int i; double sum; sum=1.0; i=1; do { i++; sum += 1/i; } while( i<50 ); printf("sum=%lf\n",sum); } 程序運行后,不能得到正確結果,出現問題的語句是 A.sum += 1/i; B.while(i<50); C.sum = 1.0; D.i++; 21. 若有定義語句: double a, *p=&a; 以下敘述中錯誤的是 A.定義語句中的 * 號是一個間址運算符 B.定義語句中的 * 號是一個說明符 C.定義語句中的p只能存放double類型變量的地址 D.定義語句中 *p=&a 把變量a的地址作為初值賦給指針變量p 22.關于函數返回值,以下敘述正確的是 A.函數可以返回整個結構體,即使結構體中有數組 B.函數只能返回基本數據類型的數值或指針 C.函數不可以返回一個數組 D.函數不能沒有返回值 23.有以下程序 #include <stdio.h> int fun( int *b, int n ) { int i, r=1; for( i=0; i<=n; i++ ) r=r*b[i]; return r; } main() { int x, a[]={2,3,4,5,6,7,8,9 }; x=fun( a,3 ); printf("%d\n", x); } 程序運行后的輸出結果是 A.24 B.720 C.120 D.6 24.若有語句:int a[3][4], (*p)[4]; p = a;,則以下選項中敘述錯誤的是 A.系統將開辟一個名為p的二維數組,p[0][0]中的值即為a[0][0]中的值 B.p+1代表a[1][0]的地址 C.p中將存放 a 數組的首地址 D.p+2代表 a 數組最后一行的首地址 25.有以下程序 #include <stdio.h> void change( char* array, int len ) { for (len--; len>=0; len--) array[len] += 1; } main( ) { int i; char array[5] = "ABCD"; change(array, 4); for (i=0; i<4; i++) printf("%c,", array[i]); } 程序運行后的輸出結果是 A. B,C,D,E, B.A,B,C,D, C.C,D,E,F, D.B,D,F,H, 26.設有以下程序段 float a[8] = {1.0, 2.0}; int b[1] = {0}; char c[] = {"A", "B"}; char d == "1"; 以下敘述正確的是 A.只有變量c的定義是合法的 B.只有變量a,b,c的定義是完全合法的 C.所有變量的定義都是完全合法的 D.只有變量a, b的定義是完全合法的 27.有以下程序 #include <stdio.h> main( ) { int a[4],p,x,i; for( i=3;i>0;i-- )a[i-1]=i*2-1; scanf("%d",&x); i=0; while( a[i]<x ) i++; p=i; for( i=3;i>p;i-- ) a[i]=a[i-1]; a[p]=x; for( i=0;i<4;i++ ) printf("%3d",a[i]); printf("\n"); } 執行時輸入:2<回車>,則輸出結果是 A.1 2 3 4 B.5 4 3 1 C.1 2 3 5 D.3 2 1 4 28.有以下程序 #include <stdio.h> int fun(int a[],int n,int x) { int *p=a; while( p<a+n && *p!=x ) p++; if ( p<a+n ) return p-a; else return -1; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; printf("%d\n",fun(a,10,10)); } 程序運行后的輸出結果是 A.9 B.-1 C.10 D.0 29.有以下程序 #include <stdio.h> main( ) { char w[20], a[5][10]={"abcde", "fghij", "klmno", "pqrst", "uvwxy"}; int i; for ( i=0; i<5; i++ ) w[i] = a[i][i]; w[5]= '\0'; printf( "%s\n", w ); } 程序運行后的輸出結果是 A.ejoty B.afkpu C.agmsy D.eimqu 30.語句printf("%d\n", strlen("\t\"\\\n\'\065\08AB"));的輸出結果是 A.6 B.7 C.8 D.9 31.有以下程序 #include <stdio.h> #include <string.h> void fun( char *s, int m1, int m2 ) { char t, *p; p=s + m1; s= s+m2; while( s<p ) { t=*s; *s=*p; *p=t; s++; p--; } } main() { char ss[10]="012345678"; int n=6; fun( ss,0,n-1 ); fun( ss,9,n ); fun( ss,0,9 ); printf("%s\n", ss ); } 程序運行后的輸出結果是 A.012345 B.876543210 C.876543 D.012345678 32.有以下程序 #include <stdio.h> int m=1,n=2; void sub1(int m,int n) { m+=2; n++; } void sub2( ) { m++; n+=2; } main( ) { printf("%d,%d,",m,n); sub1(4,5); printf("%d,%d,",m,n); sub2(); printf("%d,%d\n",m,n); } 程序運行后的輸出結果是 A.1,2,1,2,2,4 B.1,2,6,6,7,8 C.1,2,2,4,2,4 D.1,2,6,6,2,4 33.有以下程序 #include <ctype.h> #include <stdio.h> long fun( char s[] ) { long n; int sign; for( ; isspace(*s); s++ ); sign=(*s=='-')? -1 : 1; if(*s=='+' || *s=='-') s++; for( n=0 ; isdigit(*s); s++ ) n=10*n+(*s-'0'); return sign*n; } main() { char s[]=" -26a3"; printf("%d\n ",fun(s)); } 程序運行后的輸出結果是 A.-263 B.2 C.0 D.-26 34.設有定義: struct complex { int real,unreal;} data1={1,8},data2; 則以下賦值語句中錯誤的是 A.data2=(2,6); B.data2=data1; C.data2.real=data1.real; D.data2.real=data1.unreal; 35.有以下程序 #include <stdio.h> #define S(x) x*x/x main( ) { int k = 6, j = 3; printf("%d,%d\n", S(k+j+2), S(j+k+2)); } 程序運行后的輸出結果是 A. 11,11 B.29,29 C.26,29 D.121,121 36.若有定義 typedef int *T[10]; T a; 則以下選項與上述定義中a的類型完全相同的是 A.int *a[10]; B.int (*a)[10]; C.int a[10]; D.int (*a[10])(); 37.有以下程序 #include <stdio.h> main( ) { FILE *fp; int i, a[6]={1,2,3,4,5,6},k; fp = fopen( "data.dat", "w+" ); for ( i=0; i<6; i++ ) fprintf(fp, "%d\n", a[5-i]); rewind(fp); for ( i=0; i<6; i++ ) { fscanf(fp, "%d", &k); printf("%d,", k); } fclose(fp); } 程序運行后的輸出結果是 A.6,5,4,3,2,1, B.1,2,3,4,5,6, C.1,1,1,1,1,1 D.6,6,6,6,6,6, 38. 有以下程序 #include <stdio.h> #include <stdlib.h> void fun( double *p1, double *p2, double *s ) { s=( double* )calloc( 1,sizeof(double) ); *s = *p1 + *p2; } main() { double a[2]={1.1,2.2 }, b[2]={ 10.0,20.0 }, *q=NULL; fun( a,b,q ); printf("%5.2f \n", *q ); } 程序運行后的結果是 A.有運行錯誤 B.輸出11.10 C.輸出12.10 D.輸出21.10 39.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是 A.fget( fp,ch ); B.fputc(ch,fp); C.fprintf( fp, "%c",ch ); D.fwrite( &ch,sizeof(ch),1,fp); 40.有以下程序 #include <stdio.h> struct ball { char color[10]; int dim; }; main( ) { struct ball list[2] = {{"white", 2}, {"yellow", 3}}; printf("%s:%d\n", (list+1)->color, list->dim); } 程序運行后的輸出結果是 A.yellow:3 B.yellow:2 C.white:2 D.white:3 1.A 2.A 3.A 4.C 5.A 6.B 7.A 8.A 9.D 10.A 11.A 12.C 13.A 14.B 15.A 16.A 17.C 18.A 19.C 20.A 21.A 22.A 23.C 24.A 25.A 26.D 27.C 28.A 29.C 30.A 31.A 32.A 33.D 34.A 35.B 36.A 37.A 38.A 39.A 40.B
34 |