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