2015年3月全國計算機二級C選擇真題第3套 |
1.下列敘述中正確的是 A.程序可以作為算法的一種表達方式 B.算法的有窮性是指算法的規模不能太大 C.算法的復雜度用于衡量算法的控制結構 D.算法的效率與數據的存儲結構無關 2.某循環隊列的存儲空間為Q(1:m),初始狀態為front=rear=m,F經過一系列的入隊操作和退隊操作后,front=m-1,rear=m,則該循環隊列中的元素個數為 A.m-1 B.1 C.m D.0 3.能從任意一個結點開始沒有重復地掃描到所有結點的數據結構是 A.循環鏈表 B.雙向鏈表 C.二叉鏈表 D.有序鏈表 4. 某棵樹中共有25個結點,且只有度為3的結點和葉子結點,其中葉子結點有7個,則該樹中度為3的結點數為 A.不存在這樣的樹 B.7 C.8 D.6 5.在最壞情況下,二分查找法的時間復雜度為 A. B. C. D. 6. 某二叉樹共有730個結點,其中度為1的結點有30個,則葉子結點個數為 A. 不存在這樣的二叉樹 B.351 C.1 D.350 7.軟件開發中需求分析的主要任務是 A.定義和描述目標系統“做什么” B.獲取需求 C.給出軟件解決方案 D.需求評審 8.軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是 A.學生成績管理系統 B.ERP系統 C.辦公自動化系統 D.UNIX系統 9.醫生可以為病人開不同的藥,而同一種藥也可由不同醫生開給病人,則實體醫生和實體藥之間的聯系是 A.多對多 B.一對一 C.多對一 D.一對多 10.學生選課成績表的關系模式是SC(S#,C#,G),其中S#為學號,C#為課號,G為成績,檢索課號為2且成績及格的學生學號的表達式為 A. B. C. D. 11. 若想定義int型變量a,b,c,d并都賦值為1,以下寫法中錯誤的是 A.int a=b=c=d=1; B. int a=1, b=1, c=1, d=1; C.int a,b,c,d; a=b=c=d=1; D.int a,b,c,d=1; a=b=c=d; 12. 若有定義:char c; double d; 程序運行時輸入: 1 2<回車>,能把字符1輸入給變量c、數值2輸入給變量d的輸入語句是 A.scanf("%d%lf", &c,&d); B.scanf("%c%lf", &c,&d) ; C.scanf("%c%f", &c,&d); D.scanf("%d%f", &c,&d); 13.輸出語句:printf("%d\n",11+011);的輸出結果是 A.20 B.22 C.022 D.021 14.以下敘述正確的是 A.有些算法不能用三種基本結構來表達 B.C語言程序不編譯也能直接運行 C.結構化程序的三種基本結構是循環結構、選擇結構、順序結構 D.如果C語言程序實現的算法很簡單,則計算機不進行任何代碼轉換就能執行程序 15.若有定義: double x;,則表達式:x=0,x+10,x++ 的值是 A.11.0 B.10.0 C.0.0 D.1.0 16.有以下程序 #include <stdio.h> main() { int x=1, y=0, a=0, b=0; switch ( x ) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf("a=%d, b=%d\n", a, b); } 程序的運行結果是 A.a=2,b=2 B.a=2,b=1 C.a=1,b=1 D.a=1,b=0 17.以下程序段中的變量已正確定義 for( i=0; i<4; i++,i++ ) for( k=1; k<3; k++ ); printf("*" ); 該程序段的輸出結果是 A.* B.**** C.** D.******** 18.有以下程序 #include <stdio.h> main( ) { char c; for (; ( c=getchar()) != '#'; ) { if ( c>='a' && c<='z' ) c = c - 'a' + 'A'; putchar(++c); } } 執行時輸入:aBcDefG##<回車>, 則輸出結果是 A.AbCdEFg B.ABCDEFG C.BCDEFGH D.bcdefgh 19.有以下程序 #include <stdio.h> int f(int x); main() { int n=1,m; m=f(f(f(n))); printf("%d\n",m); } int f(int x) { return x*2; } 程序運行后的輸出結果是 A.4 B.2 C.8 D.1 20.關于地址和指針,以下敘述正確的是 A.可以通過強制類型轉換讓char型指針指向double型變量 B.函數指針p指向一個同類型的函數f時,必須寫成:p = &f; C.指針p指向一個數組f時,必須寫成:p = &f; D.一個指針變量p可以指向自身 21.有以下程序 #include <stdio.h> #define N 4 int fun( int a[][N] ) { int i,j,x=0; for( i=0; i<N; i++ ) for( j=0; j<N; j++ ) if ( i == j ) x += a[N-1-j][i]; return x; } main( ) { int x[N][N]={{ 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9, 10, 11, 12}, {13, 14, 15, 17}}, y; y = fun(x); printf( "%d\n", y ); } 程序運行后的輸出結果是 A.34 B.35 C.28 D.59 22.有以下程序 #include <stdio.h> #define N 3 void fun( int x[][N], int *r1, int *r2 ) { int i, j; *r1 = *r2 =0; for( i=0; i<N; i++ ) { j=N - (i+1); if (x[*r1][*r2] < x[i][j]){ *r1 = i; *r2 = j; } } } main( ) { int a[N][N] = { 1,5,7,9,2,6,4,3,8 }, i,j; fun( a,&i,&j ); printf("%d\n", a[i][j]); } 程序運行后的輸出結果是 A.8 B.6 C.7 D.9 23.對于以下函數聲明 void fun(int array[4], int *ptr); 以下敘述中正確的是 A.array, ptr 都是指針變量 B.調用fun函數時,實參的值將逐一復制給array C.調用fun函數時,array按值傳送,ptr按地址傳送 D.array 是數組,ptr 是指針,它們的性質不同 24.設有定義:int x[10],*p=x,i;,若要為數組x讀入數據,以下選項正確的是 A.for(i=0;i<10;i++) scanf("%d",p+i); B.for(i=0;i<10;i++) scanf("%d",*p+i); C.for(i=0;i<10;i++) scanf("%d",*(p+i)); D.for(i=0;i<10;i++) scanf("%d",x[i]); 25.有以下程序 #include <stdio.h> main() { char s[]="012xy\08s34f4w2"; int i, n=0; for ( i=0; s[i]!=0; i++ ) if(s[i] >= '0' && s[i] <= '9') n++; printf("%d\n",n); } 程序運行后的輸出結果是 A.7 B.0 C.3 D.8 26.有以下程序段 char str[ 4 ][ 12 ]={"aaa","bbb","ccc","ddd" }, *p[4]; int i; for( i=0; i<4; i++ ) p[i]=str[i]; 以下選項中不能正確引用字符串的是 A.*p[3] B.p[3] C.str[2] D.*p 27. 有以下程序 #include <stdio.h> int mul(int val) { static int init = 1; return init *= val; } main( ) { int i; for (i=1; i<=5; i++) printf("%d,", mul(i)); } 程序運行后的輸出結果是 A.1,2,6,24,120, B.1,2,3,4,5, C.1,1,1,1,1, D.1,2,4,6,8, 28.有以下程序 #include <stdio.h> void fun( int n ) { static int k=0; if(n<0){ printf("-"); n=-n; } k+=n%10; printf("%d,",k); if(n/10) fun(n/10); } main( ) { int x=-12; fun(x); printf("\n"); } 程序運行后的輸出結果是 A.-2,3 B.-1,-2, C.-2,-3, D.-2,1 29.有以下程序 #include <stdio.h> struct S{int n; int a[20]; }; void f(struct S *p) { int i,j, t; for (i=0; i<p->n-1; i++) for (j=i+1; j<p->n; j++) if (p->a[i] > p->a[j]) { t= p->a[i]; p->a[i] = p->a[j]; p->a[j] = t; } } main() { int i; struct S s={10, {2,3,1,6,8,7,5,4,10,9}}; f(&s); for (i=0; i<s.n; i++) printf("%d,", s.a[i]); } 程序運行后的輸出結果是 A.1,2,3,4,5,6,7,8,9,10, B.10,9,8,7,6,5,4,3,2,1, C. 2,3,1,6,8,7,5,4,10,9, D.10,9,8,7,6,1,2,3,4,5, 30.有以下程序 #include <stdio.h> typedef struct stu { char name[10]; char gender; int score; } STU; void f( STU a, STU *b, STU c ) { *b = c =a; printf( "%s,%c,%d,", b->name, b->gender, b->score ); printf( "%s,%c,%d,", c.name, c.gender, c.score ); } main( ) { STU a={"Zhao", 'm', 290}, b={"Qian", 'f', 350}, c={"Sun", 'm', 370}; f( a, &b, c ); printf( "%s,%c,%d,", b.name, b.gender, b.score ); printf( "%s,%c,%d\n", c.name, c.gender, c.score ); } 程序運行后的輸出結果是 A.Zhao,m,290,Zhao,m,290,Zhao,m,290,Sun,m,370 B.Zhao,m,290,Zhao,m,290,Zhao,m,290,Zhao,m,290 C.Zhao,m,290,Zhao,m,290,Qian,f,350,Sun,m,370 D.Zhao,m,290,Zhao,m,290,Qian,f,350,Zhao,m,290 31.有以下程序 #include <stdio.h> #define SUB( x,y ) (x)*(y) main() { int a=3, b=4; printf("%d \n", SUB( a++, b++ ) ); } 程序運行后的輸出結果是 A.15 B.12 C.16 D.20 32.有以下程序 #include <stdio.h> main() { struct cm{ int x; int y; } a[2]={4,3,2,1 }; printf("%d \n", a[0].y/a[0].x*a[1].x ); } 程序運行后的輸出結果是 A.1 B.4 C.0 D.3 33.以下選項中的編譯預處理命令行,正確的是 A.#define E 2.38 B. ##define PI_2 1.56 C. #define int INT D.#DEFINE TRUE 34.設有以下程序段 struct book { float price; char language; char title[20]; } rec, *ptr; ptr = &rec; 要求輸入字符串給結構體變量rec的title成員,錯誤的輸入語句是 A.scanf("%s", ptr.title); B.scanf("%s", rec.title); C.scanf("%s", (*ptr).title); D.scanf("%s", ptr->title); 35.有以下程序 #include <stdio.h> #include <string.h> struct computer { char CPU[10]; }; main( ) { struct computer pc1, pc2; strcpy(pc1.CPU, "3.2G"); strcpy(pc2.CPU, "????"); pc1 = pc2; printf("%s\n", pc1.CPU); } 程序運行后的輸出結果是 A.? B.3.2G C.???? D.?.2G 36.有以下程序 #include <stdio.h> main( ) { int a = 2, b; b = (a >>= 1) + 4; printf("%d,%d", a, b); } 程序運行后的輸出結果是 A.1,5 B.2,4 C.2,6 D.2,5 37.若要建立下圖所示的存儲結構,以下正確的程序段是( )。 A.char **q,*p,c; p=&c; q=&p; B. char **q,*p,c; p=&c; q=*p; C.char *q,*p,c; p=&c; *q=p; D.char *q,*p,c; q=p; p=*c; 38.有以下程序 #include <stdio.h> struct tt { int x; struct tt *y; } s[3]={ 1,0,2,0,3,0}; main( ) { struct tt *p=s+1; p->y=s; printf("%d,",p->x); p=p->y; printf("%d\n",p->x); } 程序運行后的輸出結果是 A. 2,3 B.2,1 C.1,2 D.3,1 39.有以下程序 #include <stdio.h> main( ) { int x=3,y=5; x=x^y; y=x^y; x=x^y; printf( "%d,%d\n", x, y ); } 程序運行后的輸出結果是 A.3,5 B.5,3 C.35,35 D.8,8 40.有以下程序 #include <stdio.h> struct tt { int x; struct tt *y; } s[2]={ 1,0,2,0}; main( ) { struct tt *p=s; p->y=s; printf("%d",++p->x); } 程序運行后的輸出結果是 A.2 B.0 C.1 D.3 1.A 2.B 3.A 4.A 5.C 6.A 7.A 8.D 9.A 10.A 11.A 12.B 13.A 14.C 15.C 16.B 17.A 18.C 19.C 20.A 21.A 22.C 23.A 24.A 25.C 26.A 27.A 28.A 29.A 30.A 31.B 32.C 33.A 34.A 35.C 36.A 37.A 38.B 39.B 40.A
35 |