![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2012年3月全國計(jì)算機(jī)二級(jí)C考試筆試真題 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
2012年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)筆試試卷 C語言程序設(shè)計(jì) (考試時(shí)間90分鐘,滿分100分) 一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分) 下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的。請(qǐng)將正確選項(xiàng)填涂在答題卡相應(yīng)位置上,答在試卷上不得分。 (1)下列敘述中正確的是 A)循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu) B)循環(huán)隊(duì)列是隊(duì)列的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) C)循環(huán)隊(duì)列是非線性結(jié)構(gòu) D)循環(huán)隊(duì)列是一種邏輯結(jié)構(gòu) (2)下列敘述中正確的是 A)棧是一種先進(jìn)先出的線性表 B)隊(duì)列是一種后進(jìn)先出的線性表 C)棧與隊(duì)列都是非線性結(jié)構(gòu) D)以上三種說法都不對(duì) (3)一棵二叉樹共有25個(gè)結(jié)點(diǎn),其中5個(gè)是葉子結(jié)點(diǎn),則度為1的結(jié)點(diǎn)數(shù)為 A)4 B)6 C)10 D)16 (4)在下列模式中,能夠給出數(shù)據(jù)庫物理存儲(chǔ)結(jié)構(gòu)與物理存取方法的是 A) 內(nèi)模式 B)外模式 C) 概念模式 D)邏輯模式 (5)在滿足實(shí)體完整性約束的條件下 A)一個(gè)關(guān)系中可以沒有候選關(guān)鍵字 B)一個(gè)關(guān)系中只能有一個(gè)候選關(guān)鍵字 C)一個(gè)關(guān)系中必須有多個(gè)候選關(guān)鍵字 D)一個(gè)關(guān)系中應(yīng)該有一個(gè)或多個(gè)候選關(guān)鍵字 (6)有三個(gè)關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是 A)自然連接 B)并 C)差 D)交 (7)軟件生命周期的活動(dòng)中不包括 A)軟件維護(hù) B)需求分析 C)市場(chǎng)調(diào)研 D)軟件測(cè)試 (8)下面不屬于需求分析階段任務(wù)的是 A)確定軟件系統(tǒng)的性能需求 B)確定軟件系統(tǒng)的功能需求 C)指定軟件集成測(cè)試計(jì)劃 D)需求規(guī)格說明書評(píng)審 (9)在黑盒測(cè)試方法中,設(shè)計(jì)測(cè)試用例的主要根據(jù)是 A)程序外部功能 B)程序數(shù)據(jù)結(jié)構(gòu) C)程序流程圖 D)程序內(nèi)部結(jié)構(gòu) (10)在軟件設(shè)計(jì)中不使用的工具是 A)系統(tǒng)結(jié)構(gòu)圖 B)程序流程圖 C)PAD圖 D)數(shù)據(jù)流圖(DFD圖) (11)針對(duì)簡(jiǎn)單程序設(shè)計(jì),以下敘述的實(shí)施步驟順序正確的是 A)確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔 B)編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔 C)整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試 D)確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔 (12)關(guān)于C語言中數(shù)的表示,以下敘述中正確的是 A)只有整型數(shù)在允許范圍內(nèi)能精確無誤的表示,實(shí)型數(shù)會(huì)有誤差 B)只要在允許范圍內(nèi)整型數(shù)和實(shí)型數(shù)都能精確的表示 C)只有實(shí)型數(shù)在允許范圍內(nèi)能精確無誤的表示,整型數(shù)會(huì)有誤差 D)只有用八進(jìn)制表示的數(shù)才不會(huì)有誤差 (13)以下關(guān)于算法的敘述中錯(cuò)誤的是 A)算法可以用偽代碼、流程圖等多種形式來描述 B)一個(gè)正確的算法必須有輸入 C)一個(gè)正確的算法必須有輸出 D)用流程圖描述的算法可以用任何一種計(jì)算機(jī)高級(jí)語言編寫成程序代碼 (14)以下敘述中錯(cuò)誤的是 A)一個(gè)C程序中可以包含多個(gè)不同名的函數(shù) B)一個(gè)C程序只能有一個(gè)主函數(shù) C)C程序在書寫時(shí),有嚴(yán)格的縮進(jìn)要求,否則不能編譯通過 D)C程序中主函數(shù)必須用main作為函數(shù)名 (15)設(shè)有以下語句 char ch1, ch2; scanf("%c%c",&ch1,&ch2); 若要為變量ch1和ch2分別輸入字符A和B,正確的輸入形式應(yīng)該是 A)A和B之間用逗號(hào)間隔 B)A和B之間不能有任何間隔符 C)A和B之間可以用回車間隔 D)A和B之間用空格間隔 (16)以下選項(xiàng)中非法的字符常量是 A)'\101' B)'\65' C)'\xff' D)'\019' (17)有以下程序 # include <stdio.h> main( ) { int a=0, b=0, c=0; c=(a-=a-5); (a=b,b+=4); printf("%d,%d,%d\n",a,b,c); } 程序運(yùn)行后的輸出結(jié)果是 A)0,4,5 B)4,4,5 C)4,4,4 D)0,0,0 (18)設(shè)變量均已正確定義并賦值,以下與其他三組輸出結(jié)果不同的一組語句是 A)x++; printf("%d\n",x); B)n=++x; printf("%d\n",n); C)++x; printf("%d\n",x); D)n=x++; printf("%d\n",n); (19)以下選項(xiàng)中,能表示邏輯值“假”的是 A)1 B)0.000001 C)0 D)100.0 (20)有以下程序 # include <stdio.h> main( ) { int a; scanf("%d",&a); if(a++<9) printf("%d\n",a); else printf("%d\n",a--); } 程序運(yùn)行時(shí)從鍵盤輸入9<回車>,則輸出結(jié)果是 A)10 B)11 C)9 D)8 (20)有以下程序 # include <stdio.h> main( ) { int a; scanf("%d",&a); if( a++<9 ) printf( "%d\n",a ); else prinft( "%d\n",a-- ); } 程序運(yùn)行時(shí)從鍵盤輸入9<回車>,則輸出結(jié)果是 A)10 B)11 C)9 D)8 (21)有以下程序 # include <stdio.h> main( ) { int s=0, n; for( n=0; n<3; n++ ) { switch(s) { case 0: case 1: s+=1; case 2: s+=2; break; case 3: s+=3; default: s+=4; } printf("%d,",s); } } 程序運(yùn)行后的輸出結(jié)果是 A)1,2,4, B)1,3,6, C)3,10,14, D)3,6,10, (22)若k是int類型變量,且有以下for語句 for (k=-1; k<0; k++ ) printf("****\n"); 下面關(guān)于語句執(zhí)行情況的敘述中正確的是 A)循環(huán)體執(zhí)行一次 B)循環(huán)體執(zhí)行兩次 C)循環(huán)體一次也不執(zhí)行 D)構(gòu)成無限循環(huán) (23)有以下程序 # include <stdio.h> main( ) { char a,b,c; b='1'; c='A'; for (a=0; a<6; a++) { if(a%2) putchar(b+a); else putchar(c+a); } } 程序運(yùn)行后的輸出結(jié)果是 A)1B3D (24)設(shè)有如下定義語句 int m={2,4,6,8,10}, *k=m; 以下選項(xiàng)中,表達(dá)式的值為6的是 A)*(k+2) B)k+2 C)*k+2 D)*k+=2 (25)fun函數(shù)的功能是:通過鍵盤輸入給x所指的整型數(shù)組所有元素賦值。在下劃線處應(yīng) 填寫的是 # include <stdio.h> #define N 5 void fun(int x[N]) { int m; for (m=N-1; m>=0; m-- ) scanf( "%d", _____ ); } A)&x[++m] B)&x[m+1] C)x+(m++) D)x+m (26)若有函數(shù) void fun(double a, int *n) { ...... } 以下敘述中正確的是 A)調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送 B)形參a和n都是指針變量 C)形參a是一個(gè)數(shù)組名,n是指針變量 D)調(diào)用fun函數(shù)時(shí)將把double型實(shí)參數(shù)組元素一一對(duì)應(yīng)地傳送給形參a數(shù)組 (27)有以下程序 # include <stdio.h> main( ) { int a,b,k,m,*p1,*p2; k=1, m=8; p1=&k, p2=&m; a=*p1-m; b=*p1+*p2+6; printf( "%d ",a ); printf( "%d\n",b ); } 編譯時(shí)編譯器提示錯(cuò)誤信息,你認(rèn)為出錯(cuò)的語句是 A)a=/*p1-m B)b=*p1+*p2+6; C)k=1,m=8; D)p1=&k,p2=&m; (28)以下選項(xiàng)中有語法錯(cuò)誤的是 A)char *str[ ] = {"guest"}; B)char str[ ][10] = {"guest"}; C)char *str[3]; str[1]="guest"; D)char str[3][10]; str[1]="guest"; (29)avg函數(shù)的功能是求整型數(shù)組中的前若干個(gè)元素的平均值,設(shè)數(shù)組元素個(gè)數(shù)最多不超過10,則下列函數(shù)說明語句錯(cuò)誤的是 A)int avg( int *a, int n ); B)int avg( int a[10], int n ); C)int avg( int a, int n ); D)int avg( int a, int n ); (30)有以下程序 # include <stdio.h> # include <string.h> main( ) { printf( "%d\n",strlen("ATS\n012\1")); } 程序運(yùn)行后的輸出結(jié)果是 A)3 B)8 C)4 D)9 (31)有以下程序 # include <stdio.h> main( ) { char a[20], b[20], c[20]; scanf( "%s%s" ,a,b ); gets(c); printf("%s%s%s\n",a,b,c); } 程序運(yùn)行時(shí)從第一列開始輸入: This is a cat!<回車> 則輸出結(jié)果是 A)Thisisacat! B)Thisis a C)thisis a cat! D)Thisisa cat! (32)有以下程序 # include <stdio.h> void fun( char c ) { if (c>'x') fun( c-1 ); printf( "%c%",c); } main( ) { fun('z'); } 程序運(yùn)行后的輸出結(jié)果是 A)xyz B)wxyz C)zyxw D)zyx (33)有以下程序 # include <stdio.h> void func( int n ) { int i; for (i=0; i<=n; i++) printf("*"); printf("#"); } main( ) { func( 3 ); printf("????"); func(4); printf("\n"); } 程序運(yùn)行后的輸出結(jié)果是 A)****#????***# B)***#????****# C)**#????*****# D)****#????*****# (34)有以下程序 # include <stdio.h> void fun( int *s ) { static int j=0; do { s[j] = s[j] + s[j+1]; } while( ++j < 2 ); } main( ) { int k,a[10]={1,2,3,4,5}; for( k=1; k<3; k++) fun(a); for( k=0; k<5; k++) printf("%d", a[ k ] ); printf("\n" ); } 程序運(yùn)行后的輸出結(jié)果是 A)12345 B)23445 C)34756 D)35745 (35)有以下程序 # include <stdio.h> # define S(x) (x)*x*2 main( ) { int k=5, j=2; printf( "%d,", S(k+j)); printf( "%d\n",S((k-j)) ); } 程序運(yùn)行后的輸出結(jié)果是 A)98,18 B)39,11 C)39,18 D)98,11 (36)有以下程序 # include <stdio.h> void exch( int t ) { t[0] = t[5]; } main( ) { int x[10] = {1,2,3,4,6,7,8,9,10},i=0; while ( i<=4 ) { exch( &x[i]); i++; } for (i=0; i<5; i++) printf("%d ",x[i]); printf( "\n" ); } 程序運(yùn)行后的輸出結(jié)果是 A)2 4 6 8 10 B)1 3 5 7 9 C)1 2 3 4 5 D)6 7 8 9 10 (37)設(shè)有以下程序段 struct MP3 { char name[20]; char color; float price; } std, *ptr; ptr = &std; 若要引用結(jié)構(gòu)體變量std中的color成員,寫法錯(cuò)誤的是 A)std.color B)ptr->color C)std->color D)(*ptr).color (38)有以下程序 # include <stdio.h> struct stu { int num; char name[10]; int age; }; void fun(sruct stu *p ) { printf( "%s\n", p->name ); } main( ) { struct stu x[3]={ {01,"Zhang",20},{02,"Wang",19},{03,"Zhao",18} }; fun( x+2 ); } 程序運(yùn)行后的輸出結(jié)果是 A)Zhang B)Zhao C)Wang D)19 (39)有以下程序 # include <stdio.h> main( ) { int a=12,c; c = (a<<2)<<1; printf("%d\n",c); } 程序運(yùn)行后的輸出結(jié)果是 A)3 B)50 C)2 D)96 (40)以下函數(shù)不能用于向文件中寫入數(shù)據(jù)的是 A)ftell B)fwrite C)fputc D)fprintf 二、填空題(每空2分,共30分) 請(qǐng)將每空的正確答案寫在答題卡【1】至【15】序號(hào)的橫線上,答在試卷上不得分。 (1)在長度為n的順序存儲(chǔ)的線性表中刪除一個(gè)元素,最壞情況下需要移動(dòng)表中的元素個(gè)數(shù)為 【1】 。 (2)設(shè)循環(huán)隊(duì)列的存儲(chǔ)空間為Q(1:30),初始狀態(tài)為front=rear=30,F(xiàn)經(jīng)過一系列入隊(duì)與退隊(duì)運(yùn)算后,front=16,rear=15,則循環(huán)隊(duì)列中有 【2】 個(gè)元素。 (3)數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)語言中,負(fù)責(zé)數(shù)據(jù)的增、刪、改和查詢的是 【3】 。 (4)在將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示成 【4】 。 (5)常見的軟件工程方法有結(jié)構(gòu)化方法和面向?qū)ο蠓椒,類、繼承以及多態(tài)性等概念屬于 【5】 。 (6)變量a和b已定義為int類型,若要通過scanf("a=%d,b=%d",&a,&b); 語句分別給a和b輸入1和2,則正確的數(shù)據(jù)輸入內(nèi)容是 【6】 。 (7)以下程序的輸出結(jié)果是 【7】 。 # include <stdio.h> main( ) { int a=37; a+=a%=9; printf(%d\n”,a); } (8)設(shè)a、b、c都是整型變量,如果a的值為1,b的值為2,則執(zhí)行c=a++||b++; 語句后,變量b的值是 【8】 。 (9)有以下程序段 s=1.0; for (k=1; k<=n; k++) s=s+1.0/(k*(k+1)); printf("%f\n",s); 請(qǐng)?zhí)羁,使以下程序段的功能與上面的程序段完全相同。 s=1.0; k=1; while ( 【9】 ) { s=s+1.0/(k*(k+1)); k=k+1; } printf("%f\n", s); (10)以下程序的輸入結(jié)果是 【10】 。 # include <stdio.h> main( ) { char a,b; for (a=0; a<20; a+=7) { b=a%10; putchar(b+'0'); } } (11)以下程序的輸出結(jié)果是 【11】 。 # include <stdio.h> main( ) { char *ch[4]={"red","green","blue"}; int i=0; while ( ch[i] ) { putchar(ch[i][0]); i++; } } (12)有以下程序 # include <stdio.h> main( ) { int arr={1,3,5,7,2,4,6,8}, i, start; scanf("%d", &start); for (i=0; i<3; i++) printf("%d", arr[start+i)%8] ); } 若在程序運(yùn)行時(shí)輸入整數(shù)10<回車>,則輸出結(jié)果為 【12】 。 (13)以下程序的功能是輸出a數(shù)組中所有字符串,請(qǐng)?zhí)羁铡?/SPAN> # include <stdio.h> main( ) { char *a[ ]={"ABC", "DEFGH", "IJ", "KLMNOP" } int i=0; for (; i<4; i++) printf("%s\n", 【13】 ); } (14)以下程序的輸出結(jié)果是 【14】 。 # include <stdio.h> # include <stdio.h> # include <string.h> main( ) { char *p, *q, *r); p = q = r = (char *) malloc(sizeof(char)*20); strcpy(p,"attaboy,welcome!"); printf("%c%c%c\n",p[11],q[3],r[4]); free(p); } (15)設(shè)文件 test.txt中原已已寫入字符串Begin,執(zhí)行以下程序后,文件中的內(nèi)容為 【15】 。 # include <stdio.h> main( ) { FILE *fp; fp = fopen( "test.txt","w+" ); fputs("test", ftp ); fclose(fp); } 2012年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)筆試標(biāo)準(zhǔn)答案(花卷貴州版) 一、選擇題(1)ADDAD CBCAD (11)ABBCB DADCA (21)CACAD CADCB (31)CADDC DCBDA 二、填空題(1)n-1 (2)29 (3)數(shù)據(jù)庫操縱語言 (4)關(guān)系 (5)面向?qū)ο蠓椒?SPAN lang=EN-US> (6)a=1,b=2 (7)2 (8)2 (9)k<=n (10)074 (11)rgb (12)572 (13)a[i] (14)cab (15)test |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||