![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
C考試模擬試卷1 |
全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言考前沖刺試卷(1) 一、選擇題 (1)下列選項(xiàng)中,不是算法的基本特征的是( )。 A)完整性 B)可行性 C)有窮性 D)擁有足夠的情報(bào) (2)結(jié)構(gòu)化分析方法是面向( )的自頂向下、逐步求精進(jìn)行需求分析的方法。 A)對(duì)象 B)數(shù)據(jù)結(jié)構(gòu) C)數(shù)據(jù)流 D)目標(biāo) (3)下列工具中為需求分析常用工具的是( )。 A)PAD B)PFD C)N-S D)DFD (4)線性表進(jìn)行二分法檢索,其前提條件是( )。 A)線性表以順序方式存儲(chǔ),并按關(guān)鍵碼值排好序 B)線性表以順序方式存儲(chǔ),并按關(guān)鍵碼的檢索頻率排好序 C)線性表以鏈?zhǔn)椒绞酱鎯?chǔ),并按關(guān)鍵碼值排好序 D)線性表以鏈?zhǔn)椒绞酱鎯?chǔ),并按關(guān)鍵碼的檢索頻率排好序 (5)下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是( )。 A)自頂向下 B)逐步求精 C)模塊化 D)可復(fù)用 (6)下列關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)原則和方法的描述中,錯(cuò)誤的是( )。 A)選用的結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口 B)復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn) C)不允許使用GOTO語句 D)語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬 (7)軟件需求分析階段的工作,可以分為4個(gè)方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及( )。 A)階段性報(bào)告 B)需求評(píng)審 C)總結(jié) D)都不正確 (8)下列關(guān)于軟件測(cè)試的描述中正確的是( )。 A)軟件測(cè)試的目的是證明程序是否正確 B)軟件測(cè)試的目的是使程序運(yùn)行結(jié)果正確 C)軟件測(cè)試的目的是盡可能地多發(fā)現(xiàn)程序中的錯(cuò)誤 D)軟件測(cè)試的目的是使程序符合結(jié)構(gòu)化原則 (9)用鏈表表示線性表的優(yōu)點(diǎn)是( )。 A)便于隨機(jī)存取 B)花費(fèi)的存儲(chǔ)空間較順序存儲(chǔ)少 C)便于插入和刪除操作 D)數(shù)據(jù)元素的物理順序和邏輯順序相同 (10)在數(shù)據(jù)庫設(shè)計(jì)中,將E-R圖轉(zhuǎn)換為關(guān)系模式的過程屬于( )。 A)需求分析階段 B)邏輯設(shè)計(jì)階段 C)概念設(shè)計(jì)階段 D)物理設(shè)計(jì)階段 (11)以下敘述錯(cuò)誤的是( )。 A)C語言區(qū)分大小寫 B)C程序中的一個(gè)變量,代表內(nèi)存中一個(gè)相應(yīng)的存儲(chǔ)單元,變量的值可以根據(jù)需要隨時(shí)修改 C)整數(shù)和實(shí)數(shù)都能用C語言準(zhǔn)確無誤地表示出來 D)在C程序中,正整數(shù)可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式來表示 (12)下列敘述中錯(cuò)誤的是( )。 A)用戶所定義的標(biāo)識(shí)符允許使用關(guān)鍵字 B)用戶所定義的標(biāo)識(shí)符應(yīng)盡量做到“見名知意” C)用戶所定義的標(biāo)識(shí)符必須以字母或下劃線開頭 D)用戶定義的標(biāo)識(shí)符中,大、小寫字母代表不同標(biāo)識(shí) (13)下列選項(xiàng)中可作為C語言合法常量的是( )。 A)-80 B) (14)下列定義變量的語句中錯(cuò)誤的是( )。 A)int _int; B)double int_; C)char For; D)float US$; (15)下列關(guān)于函數(shù)的敘述中正確的是( )。 A)每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù)) B)每個(gè)函數(shù)都可以被單獨(dú)編譯 C)每個(gè)函數(shù)都可以單獨(dú)運(yùn)行 D)在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù) (16)當(dāng)a=1、b=2、c=3、d=4時(shí),執(zhí)行下面程序段后,x的值是( )。 if(a<b) if(c<d)x=1; else if(a<c) if(b<d)x=2; else x=3; else x=6; else x=7; A)1 B) (17)以下程序的輸出結(jié)果是( )。 #include<stdio.h> main() { int a=4,b=3,c=2,d=1; printf("%d",a<b?a:d<c?d:b); } A)1 B) (18)若有語句:char *line[5];下列敘述中正確的是( )。 A)定義line是一個(gè)數(shù)組,每個(gè)數(shù)組元素是一個(gè)基類型為char的指針變量 B)定義line是一個(gè)指針變量,該變量可以指向一個(gè)長度為5的字符型數(shù)組 C)定義line是一個(gè)指針數(shù)組,語句中的*號(hào)稱為間址運(yùn)算符 D)定義line是一個(gè)指向字符型函數(shù)的指針 (19)以下程序: #include<stdio.h> main() { char str[10]; scanf("%s",&str); printf("%s\n",str); } 運(yùn)行上面的程序,輸入字符串how are you,則程序的執(zhí)行結(jié)果是( )。 A)how B)how are you C)h D)howareyou (20)設(shè)x和y都是int類型,且x=1,y=2,則printf("%d%d",x,y,(x,y))的輸出結(jié)果是( )。 A)1 2 B)1 2 (21)以下程序的輸出結(jié)果是( )。 #include<stdio.h> main() { int a=8,b=6,m=1; switch(a%4) { case 0:m++; break; case 1:m++; switch(b%3) { default: m++; case 0:m++; break; } } printf("%d\n",m);} A)1 B) (22)定義如下變量和數(shù)組: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 則下面的語句輸出結(jié)果是( )。 for(i=0;i<3;i++) printf("%d",x[i][2-i]) ; A)159 B) (23)有下列程序段: typedef struct NODE { int num;struct NODE *next; } OLD; 下列敘述中正確的是( )。 A)以上的說明形式非法 B)NODE是一個(gè)結(jié)構(gòu)體類型 C)OLD是一個(gè)結(jié)構(gòu)體類型 D)OLD是一個(gè)結(jié)構(gòu)體變量 (24)下列數(shù)組定義中錯(cuò)誤的是( )。 A)int x[ ][3]={0}; B)int x[2][3]={{l,2},{3,4},{5,6}}; C)int x[ ][3]={{l,2,3},{4,5,6}}; D)int x[2][3]={l,2,3,4,5,6}; (25)以下敘述錯(cuò)誤的是( )。 A)變量的作用域取決于變量定義語句的位置 B)全局變量可以在函數(shù)以外的任何部位進(jìn)行定義 C)局部變量的作用域可用于其他函數(shù)的調(diào)用 D)一個(gè)變量說明為static存儲(chǔ)類型是為了限制其他編譯單元的引用 (26)若定義函數(shù)int *func(),則函數(shù)func的返回值為( )。 A)一個(gè)實(shí)數(shù) B)一個(gè)指向整型變量的指針 C)一個(gè)指向整型函數(shù)的指針 D)一個(gè)整型函數(shù)的入口地址 (27)若有以下定義,則正確引用數(shù)組元素的是( )。 int a[5],*p=a; A)*&a[5] B)*a+ (28)以下對(duì)C語言中聯(lián)合類型數(shù)據(jù)的正確敘述是( )。 A)定義了聯(lián)合變量后,即可引用該變量或該變量中的任意成員 B)一個(gè)聯(lián)合變量中可以同時(shí)存放其所有成員 C)聯(lián)合中的各個(gè)成員使用共同的存儲(chǔ)區(qū)域 D)在向聯(lián)合中的一個(gè)成員進(jìn)行賦值時(shí),聯(lián)合中其他成員的值不會(huì)改變 (29)有以下函數(shù)定義: int fun(double a,double b) {return a*b;} 若以下選項(xiàng)中所用變量都已正確定義并賦值,錯(cuò)誤的函數(shù)調(diào)用是( )。 A)if(fun (x,y)){……} B)z= fun (fun (x,y),fun (x,y)); C)z= fun (fun (x,y)x,y); D)fun (x,y); (30)執(zhí)行以下語句段后,xy的值是( )。 int*pt,xy; xy=200; pt=&xy; xy=*pt+30; A)200 B) (31)下述程序的輸出結(jié)果是( )。 # include<stdio.h> void main() { int a[20],*p[4]; int i,k=0; for(i=0;i<20;i++) a[i]=i; for(i=0;i<4;i++) p[i]=&a[i*i+1]; for(i=0;i<4;i++) k=k+*(p+i); printf ("%d",k); } A)10 B)18 C)6 D)數(shù)組元素引用不合法,輸出結(jié)果不定 (32)下面各語句行中,能正確進(jìn)行賦值字符串操作的是( )。 A)char s[5]={'a','b','c','d', 'e'}; B)char *s;gets(s); C)char *s;s="ABCDEF"; D)char s[5];scanf("%s",&s); (33)下面程序的輸出結(jié)果是( )。 #include<stdio.h> main() { char a[]={'a', 'b', 'c', 'd', 'f ', 'g'},*p; p=a; printf("%c\n",*p+4); } A)a B)b C)e D)f (34)下面函數(shù)的功能是( )。 sss(s,t) char *s,*t; {while(*s); while(*t) *(s++)=*(t++); return s; } A)將字符串s復(fù)制到字符串t中 B)比較兩個(gè)字符串的大小 C)求字符串的長度 D)將字符串t續(xù)接到字符串s中 (35)下列程序的運(yùn)行結(jié)果是( )。 #include<stdio.h> void sub(int*s,int*y) { static int m=4; *y=s[m]; m--; } void main() { int a[]={1,2,3,4,5},k; int x; printf("\n"); for(k=0;k<=4;k++) { sub(a,&x); printf("%d,",x); } } A)5,4,3,2,1, B)1,2,3,4,5, C)0,0,0,0,0, D)4,4,4,4,4, (36)設(shè)q1和q2是指向一個(gè)int型一維數(shù)組的指針變量,k為float型變量,則不能正確執(zhí)行的語句是( )。 A)k=*q1*( *q2); B)q1=k; C)q1=q2; D)k=*q1+*q2; (37)下列程序的輸出結(jié)果為( )。 main() { union un { char *name; int age; int pay; } s; s.name="zhaoming"; s.age=32; s.pay=3000; printf("%d\n",s.age); } A)32 B) (38)以下有關(guān)宏替換的敘述不正確的是( )。 A)使用宏定義可以嵌套 B)宏定義語句不進(jìn)行語法檢查 C)雙引號(hào)中出現(xiàn)的宏名不替換 D)宏名必須用大寫字母表示 (39)下列程序執(zhí)行輸出的結(jié)果是( )。 #include<stdio.h> f(int a) { int b=0; static c=3; a=c++;b++; return(a); } main() { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k); } A)3 B) (40)已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是( )。 A)一個(gè)整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù) B)一個(gè)文件指針,指向要讀的文件 C)一個(gè)指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置 D)一個(gè)存儲(chǔ)區(qū),存放要讀的數(shù)據(jù)項(xiàng) 二、填空題 (1)數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于 【1】 。 (6)若有定義:int a=4,b=5,c=6;接著順序執(zhí)行下列語句后,變量b中的值是___________。 c=(a-=(b-5)); c=(a%3)+(b=1); (7)以下程序運(yùn)行后的輸出結(jié)果是___________。 main() { int a,b,c; a=10; b=20; c=(a/b<1)&&(a%b<1); printf("%d %d %d\n",a,b,c); } (8)以下程序運(yùn)行后的輸出結(jié)果是___________。 #define Power2(x) x*x main() { int i=6,j=8; printf("%d\n",Power2(i+j)); (9)以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值。請(qǐng)?zhí)羁铡?/SPAN> void fun(int,int,int(*)[4],int *); main() { int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i; fun(3,4,a,b); for(i=0;i<3;i++) printf("%4d",b[i]); printf("\n"); } void fun(int m,int n,int ar[][4],int *br) { int i,j,x; for(i=0;i<m;i++) { x=ar[i][0]; for(j=0;j<n;j++) if(___________) x=ar[i][j]; br[i]=x; } } (10)下面程序的功能是:輸出100以內(nèi)能被4整除且個(gè)位數(shù)為8的所有整數(shù),請(qǐng)?zhí)羁铡?/SPAN> main() { int i,j; for(i=0; ___________;i++) { j=i*10+8; if(j%4!=0) continue; printf("%d",j); } } (11)以下程序的輸出結(jié)果是___________。 #include<stdio.h> fun() { static int a=0; a+=3;printf("%d ",a); } main() { int cc; for(cc=1;cc<5;cc++)fun(); printf("\n"); } (12)下面程序的運(yùn)行結(jié)果是___________。 #include<stdio.h> #define SIZE 12 main() { char s[SIZE];int i; for(i=0;i<SIZE;i++) s[i]='A'+i+32; sub(s,5,SIZE-1); for(i=0;i<SIZE;i++) printf("%c",s[i]); printf("\n"); } sub(char *a,int t1,int t2) { char ch; while(t1<t2) { ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1++;t2--; } } (13)下面程序的運(yùn)行結(jié)果是___________。 #include<stdio.h> main() { char a[80],*p="AbabCDcd"; int i=0,j=0; while(*p!='\0') { if(*p>='a' && *p<='z') {a[i]=*p;i++;} } a[i]='\0'; puts(a); } (14)“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結(jié)果是___________。 (15)下面程序的運(yùn)行結(jié)果是___________。 #define P(a) printf("%d ",a) main() { int j,a[]={1,2,3,4,5,6,7},i=5; for(j=3;j>1;j--) { switch(j) { case 1: case 2: P(a[i++]); break; case 3: P(a[--i]); } } } 參考答案 一、選擇題 (1)A) (2)C) (3)D) (4)A) (5)D) (6)C) (7)B) (8)C) (9)C) (10)B) (11)C) (12)A) (13)A) (14)D) (15)B) (16)A) (17)A) (18)A) (19)A) (20)A) (21)B) (22)C) (23)C) (24)B) (25)D) (26)B) (27)D) (28)C) (29)C) (30)D) (31)B) (32)B) (33)C) (34)D) (35)A) (36)B) (37)B) (38)D) (39)B) (40)C) 二、填空題 (1)數(shù)據(jù)的邏輯結(jié)構(gòu) (2)繼承關(guān)系 (3)內(nèi)聚性 (4)多對(duì)多關(guān)系 (5)概念設(shè)計(jì)階段 (6)1 (7)10 20 0 (8)62 (9)x<ar[i][j] (10)i<10 (11)3 6 9 12 (12)abcdelkjihgf (13)babcd (14)6 (15)5 5 |