![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2015年3月全國計算機二級C選擇真題第3套 |
1.下列敘述中正確的是 A.程序可以作為算法的一種表達方式 B.算法的有窮性是指算法的規(guī)模不能太大 C.算法的復雜度用于衡量算法的控制結(jié)構(gòu) D.算法的效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān) 2.某循環(huán)隊列的存儲空間為Q(1:m),初始狀態(tài)為front=rear=m,F(xiàn)經(jīng)過一系列的入隊操作和退隊操作后,front=m-1,rear=m,則該循環(huán)隊列中的元素個數(shù)為 A.m-1 B.1 C.m D.0 3.能從任意一個結(jié)點開始沒有重復地掃描到所有結(jié)點的數(shù)據(jù)結(jié)構(gòu)是 A.循環(huán)鏈表 B.雙向鏈表 C.二叉鏈表 D.有序鏈表 4. 某棵樹中共有25個結(jié)點,且只有度為3的結(jié)點和葉子結(jié)點,其中葉子結(jié)點有7個,則該樹中度為3的結(jié)點數(shù)為 A.不存在這樣的樹 B.7 C.8 D.6 5.在最壞情況下,二分查找法的時間復雜度為 A. B. C. D. 6. 某二叉樹共有730個結(jié)點,其中度為1的結(jié)點有30個,則葉子結(jié)點個數(shù)為 A. 不存在這樣的二叉樹 B.351 C.1 D.350 7.軟件開發(fā)中需求分析的主要任務(wù)是 A.定義和描述目標系統(tǒng)“做什么” B.獲取需求 C.給出軟件解決方案 D.需求評審 8.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是 A.學生成績管理系統(tǒng) B.ERP系統(tǒng) C.辦公自動化系統(tǒng) D.UNIX系統(tǒng) 9.醫(yī)生可以為病人開不同的藥,而同一種藥也可由不同醫(yī)生開給病人,則實體醫(yī)生和實體藥之間的聯(lián)系是 A.多對多 B.一對一 C.多對一 D.一對多 10.學生選課成績表的關(guān)系模式是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、數(shù)值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);的輸出結(jié)果是 A.20 B.22 C.022 D.021 14.以下敘述正確的是 A.有些算法不能用三種基本結(jié)構(gòu)來表達 B.C語言程序不編譯也能直接運行 C.結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)是循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu) D.如果C語言程序?qū)崿F(xiàn)的算法很簡單,則計算機不進行任何代碼轉(zhuǎn)換就能執(zhí)行程序 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); } 程序的運行結(jié)果是 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("*" ); 該程序段的輸出結(jié)果是 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); } } 執(zhí)行時輸入:aBcDefG##<回車>, 則輸出結(jié)果是 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; } 程序運行后的輸出結(jié)果是 A.4 B.2 C.8 D.1 20.關(guān)于地址和指針,以下敘述正確的是 A.可以通過強制類型轉(zhuǎn)換讓char型指針指向double型變量 B.函數(shù)指針p指向一個同類型的函數(shù)f時,必須寫成:p = &f; C.指針p指向一個數(shù)組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 ); } 程序運行后的輸出結(jié)果是 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]); } 程序運行后的輸出結(jié)果是 A.8 B.6 C.7 D.9 23.對于以下函數(shù)聲明 void fun(int array[4], int *ptr); 以下敘述中正確的是 A.array, ptr 都是指針變量 B.調(diào)用fun函數(shù)時,實參的值將逐一復制給array C.調(diào)用fun函數(shù)時,array按值傳送,ptr按地址傳送 D.array 是數(shù)組,ptr 是指針,它們的性質(zhì)不同 24.設(shè)有定義:int x[10],*p=x,i;,若要為數(shù)組x讀入數(shù)據(jù),以下選項正確的是 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); } 程序運行后的輸出結(jié)果是 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)); } 程序運行后的輸出結(jié)果是 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"); } 程序運行后的輸出結(jié)果是 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]); } 程序運行后的輸出結(jié)果是 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 ); } 程序運行后的輸出結(jié)果是 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++ ) ); } 程序運行后的輸出結(jié)果是 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 ); } 程序運行后的輸出結(jié)果是 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.設(shè)有以下程序段 struct book { float price; char language; char title[20]; } rec, *ptr; ptr = &rec; 要求輸入字符串給結(jié)構(gòu)體變量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); } 程序運行后的輸出結(jié)果是 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); } 程序運行后的輸出結(jié)果是 A.1,5 B.2,4 C.2,6 D.2,5 37.若要建立下圖所示的存儲結(jié)構(gòu),以下正確的程序段是( )。 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); } 程序運行后的輸出結(jié)果是 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 ); } 程序運行后的輸出結(jié)果是 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); } 程序運行后的輸出結(jié)果是 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 |