當前位置:成語大全網 - 新華字典 - 誰有四川計算機C語言二級考試的真題或模擬題?最好多給我幾套,有答案的。妳要多少分,只要我有

誰有四川計算機C語言二級考試的真題或模擬題?最好多給我幾套,有答案的。妳要多少分,只要我有

2007年4月,全國計算機等級考試二級筆試試卷。

c語言程序設計

(考試時間120分鐘,滿分100分)

壹、選擇題((1)-(10)每小題2分,(11)-(50) 65438+每小題0分,***60分)以下為a)、b)、c)。

(1)下列說法正確的是(B)

a)算法的效率只與問題的規模有關,與數據的存儲結構無關。

b)算法的時間復雜度是指執行算法所需的計算工作量。

c)數據的邏輯結構與存儲結構壹壹對應。

d)算法的時間復雜度與空間復雜度相關。

(2)結構化程序設計中,模塊劃分的原則是(D)

a)每個模塊應包括盡可能多的功能。

b)每個模塊的規模應盡可能大。

c)模塊之間的鏈接應盡可能緊密。

d)模塊內的高內聚和模塊間的低耦合。

(3)下列說法正確的是(a)

a)軟件測試的主要目的是發現程序中的錯誤。

b)軟件測試的主要目的是確定程序中錯誤的位置。

c)為了提高軟件測試的效率,最好由程序員自己完成軟件測試。

d)軟件測試是為了證明軟件中沒有錯誤。

(4)下列選項中,(c)不是面向對象編程的特點。

a)繼承

b)多態性

c)類比

d)封裝

(5)下列關於隊列的說法正確的是(D)

a)隊列屬於非線性表。

b)隊列根據“先進後出”的原則組織數據

c)隊列刪除隊列末尾的數據。

d)隊列根據“先進先出”的原則組織數據

(6)對於下面的二叉樹

A

公元前

D E F X

Y Z

前序遍歷的結果是(c)

A) DYBEAFCZX

B) YDEBFZXCA

C) ABDYECFXZ

D) ABCDEFXYZ

(7)如果二叉樹中有n個度為2的節點,則二叉樹的葉節點數為(A)。

A) n+1

B) n-1

C) 2n

d)不適用

(8)在下面的關系運算中,可以在不改變關系表中屬性個數的情況下減少元組個數的是(b)。

a)和

b)薪酬

c)投影

d)笛卡爾乘積

(9)在E-R圖中,用來表示實體間關系的圖是(C)

a)矩形

b)橢圓形

c)菱形

d)平行四邊形

(10)下列說法中錯誤的是(a)

a)在數據庫系統中,數據的物理結構必須與邏輯結構壹致。

b)數據庫技術的根本目標是解決數據共享問題。

c)數據庫設計是指在現有數據庫管理系統的基礎上建立數據庫。

d)數據庫系統需要操作系統的支持。

在(11)算法中,每壹個需要執行的操作都必須有明確嚴格的規定,屬於算法的(c)。

a)合法性

b)可行性

c)確定性

d)貧困

(12)下列說法中錯誤的是(D)

a)計算機不能直接執行C語言編寫的源程序。

b)C編譯器編譯完C程序後,生成的帶後綴的文件。obj是壹個二進制文件。

c)帶有後綴的文件。obj和帶後綴的文件。鏈接器生成的exe是壹個二進制文件。

帶後綴的二進制文件。obj和。exe可以直接運行。

(13)根據C語言規定的用戶標識符命名規則,標識符中不能出現的是(b)。

a)大寫字母

b)連接器

c)數字字符

d)下劃線

(14)下列說法中錯誤的是(C)

A)C語言是壹種結構化編程語言。

b)結構化程序由三個基本結構組成:順序、分支和循環。

c)三種基本結構組成的程序只能解決簡單的問題。

d)結構化編程提倡模塊化設計方法。

(15)對於正常運行的C程序,下列說法正確的是(A)。

a)程序的執行總是從主函數開始,到主函數結束。

b)程序的執行總是從程序的第壹個函數開始,到主函數結束。

c)程序的執行總是從主函數開始,到程序的最後壹個函數結束。

d)程序的執行總是從程序的第壹個函數開始,到程序的最後壹個函數結束。

(16)變量已被正確定義。要通過scanf ("%d% c% d% c ",&;a1。c 1;a2和ampC2);該語句將值10和20賦給變量a1和a2,將字符X和Y賦給變量c1和c2。下面顯示的正確輸入形式是(註意:□代表空格字符)(d)

A) 10 □ x □ 20 □ y <回車>

B) 10 □ x20 □ y < Enter >

C) 10 □ x < Enter >

D) 10x < Enter >

20□Y < enter > 20□Y < enter >

(17)如果有壹個代數表達式(其中e只表示自然對數的底數,而不是變量),下列能正確表示該代數表達式的C語言表達式是(C)。

A)sqrt(abs(n^x+e^x))

B) sqrt(fabs(pow(n,x)+pow(x,e)))

C)sqrt(fabs(pow(n,x)+exp(x)))

sqrt(fabs(pow(x,n)+exp(x)))

(18)有壹個定義:int k = 0;在以下選項的四個表達式中,與其他三個表達式不同的值是(a)

A)k++

B)k+=1

C)++k

D)k+1

(19)有以下程序,其中%u表示輸出為無符號整數(B)。

主()

{無符號整數x = 0xFFFF/* x的初始值是十六進制數*/

printf("%u\n ",x);

}

程序運行後的輸出結果是

A)-1

B)65535

C)32767

D)0xFFFF

(20)讓變量X和Y被正確定義和賦值。在下列if語句中,(c)在編譯時會產生錯誤信息。

a)if(x++);

b)如果(x & gty & amp& ampy!=0);

c)如果(x & gty) x- -

d)如果(y & lt0) {;}

else y++;else x++;

(21)下列選項中,x為大於1的奇數時,取值為0的表達式(d)。

A)x%2==1

B)x/2

C)x%2!=0

D)x%2==0

(22)下列說法正確的是(c)

A)A)break語句只能在switch語句體中使用。

B)B)continue語句的作用是使程序的執行流程跳出所有包含它的循環。

C)C)break語句只能在循環體和switch語句體中使用。

d)在循環體中使用break語句與continue語句具有相同的效果。

(23)有以下程序(a)

主()

{int k=5,n = 0;

開關(k)

{ case 1:case 3:n+= 1;打破;

違約;n = 0;k-;

情況2:情況4:n+= 2;k-;打破;

}

printf("%d ",n);

} while(k & gt;0 & amp& ampn & lt5);

}

程序運行後的輸出結果是

A)235

B)0235

C)02356

2356

(24)有以下程序

勉()

{int i,j;

for(I = 1;我& lt4;i++)

{ for(j = I;j & lt4;j++) printf("%d*%d=%d ",I,j,I * j);

printf(" \ n ");

}

}

程序運行後的輸出結果是(b)

a)1 * 1 = 1 * 2 = 2 1 * 3 = 3 B)1 * 1 = 1 1 * 2 = 2 1 * 3 = 3

2*1=2 2*2=4 2*2=4 2*3=6

3*1=3 3*3=9

c)1 * 1 = 1D)1 * 1 = 1

1*2=2 2*2=4 2*1=2 2*2=4

1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9

(25)下列法律字符常量是(a)

A)"\x13 "

B)"\018 "

C)"65 "

D)"\n "

(26)在C語言中,函數返回值的類型最終取決於(a)

a)定義函數時,函數頭中指定的函數類型

B)B)return語句中表達式值的類型

c)調用函數時主函數傳遞的參數類型

d)定義函數時形參的類型

(27)已知大寫字母A的ASCII碼是65,小寫字母A的ASCII碼是97。下列說法中不能將變量C中的大寫字母轉換成相應小寫字母的是(d)。

c=(c-A)和amp+'a '

B)c=c+32

C)c=c-'A'+'a '

c =(' A '+c)& amp;-" a "

(28)具有以下功能

利息(char *s)

{ char * t = s;

while(* t++);

返回(t-s);

}

這個函數的作用是(b)

a)比較兩個字符的大小

b)計算由s表示的字符串占用的存儲字節數

c)計算由s表示的字符串的長度

d)將S表示的字符串復制到字符串t中

(29)假設現有的定義:浮點x;那麽下面定義指針變量P並賦初值的語句中(d)是正確的。

a)float * p = 1024;

b)int * p =(float x);

浮動p = & ampx;

浮動* P = & ampx;

(30)有以下程序

#包括

主()

{int n,* p = NULL

* p = & ampn;

printf("輸入n:");scanf("%d ",& ampp);printf("輸出n:");printf("%d\n ",p);

}

這個程序試圖通過指針P讀取變量n的數據並輸出,但是程序中有很多錯誤。下列說法正確的是(a)。

A)int n,* p = NULL

b)* p = & amp;n;

C)scanf("%d ",& ampp)

D)printf("%d\n ",p);

(31)下面程序中函數f的作用是:當flag為1時,從小到大排序;當標誌為0時,從大到小排序。

void f(int b[],int n,int flag)

{int i,j,t;

for(I = 0;我

for(j = I+1;j

如果(旗幟?b[I]& gt;b[j]:b[i]

}

主()

{int a[10]={5,4,3,2,1,6,7,8,9,10},I;

f(& amp;a[2],5,0);f(a,51);

for(I = 0;我& lt10;i++) printf("%d," a[I]);

}

程序運行後的輸出結果是(b)

A)1,2,3,4,5,6,7,8,9,10,

B)3,4,5,6,7,2,1,8,9,10,

C)5,4,3,2,1,6,7,8,9,10,

D)10,9,8,7,6,5,4,3,2,1,

(32)有以下程序

void f(int b[])

{ int I;

for(I = 2;我& lt6;i++)b[I]* = 2;

}

主()

{int a[10]={1,2,3,4,5,6,7,8,9,10},I;

f(a);

for(I = 0;我& lt10;i++) printf("%d ",a[I]);

}

程序運行後的輸出結果是(b)

A)1,2,3,4,5,6,7,8,9,10,

1,2,6,8,10,12,7,8,9,10

C)1,2,3,4,10,12,14,16,9,10,

D)1,2,6,8,10,12,14,16,9,10,

(33)有以下程序

typedef結構{int b,p;} A;

Void f(A c) /*註意:c是結構變量名*/

{ int j;

c . b+ = 1;c . p+= 2;

}

主()

{ int I;

A a={1,2 };

f(a);

printf("%d,%d\n ",a.b,a . p);

}

程序運行後的輸出結果是(D)

A)2,3

B)2,4

c)1.4

D)1,2

(34)有以下程序

主()

{int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,},I,j,k,t;

for(I = 0;我& lt4;i++)

for(j = 0;j & lt3;j++)

for(k = j+1;k & lt4;k++)

if(a[j][I]& gt;a[k][I]){ t = a[j][I];a[j][I]= a[k][I];a[k][I]= t;}/*按列排序*/

for(I = 0;我& lt4;i++)printf("%d ",a[I][j]);

}

程序運行後的輸出結果是(a)

1,6,5,7,

8,7,3,1,

C)4、7、5、2、

D)1,6,2,1,

(35)有以下程序

主()

{int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,},I,k,t;

for(I = 0;我& lt3;i++)

for(k = I+I;k & lt4;k++) if(a[i][i]

for(I = 0;我& lt4;i++)printf("%d ",a[0][I]);

}

程序運行後的輸出結果是(b)

A)6,2,1,1

B)6、4、3、2、

C)1,1,2,6,

D)2、3、4、6、

(36)有以下程序

void f(int *q)

{ int I = 0;

for(;我& lt5;i++)(* q)++;

}

主()

{int a[5]={1,2,3,4,5},I;

f(a);

for(I = 0;我& lt5;i++)printf("%d ",a[I]);

}

程序運行後的輸出結果是(b)

A)2,2,3,4,5,

B)6、2、3、4、5、

C)1,2,3,4,5,

D) 2、3、4、5、6、

(37)有以下程序

#包括

主()

{char p[20]={'a ',' b ',' c ',' d'},q[]="abc ",r[]= " abcde ";

strcpy(p+strlen(q),r);strcat(p,q);

printf("%d%d\n ",sizeof(p),strlen(p));

}

程序運行後的輸出結果是(C)

A)20 9

B)9 9

C)20 11

D)11 11

(38)有以下程序

#包括

主()

{char p[20]={'a ',' b ',' c ',' d'},q[]="abc ",r[]="abcde "

strcat(p,r);Strcpy(p+strlen(q),q);

Printf("%d \n ",sizeof(p));

}

程序運行後的輸出結果是(b)

A)9

B)6

C)11

D)7

(39)有以下程序

#包括

主()

Void f (char p [] [10],int n)/*字符串從小到大排序*/

{ char t[10];int i,j;

for(I = 0;我

for(j = I+1;j

if(strcmp(p[i],p[j])& gt;0) {strcpy(t,p[I]);strcpy(p[i],p[j]);strcpy(p[i],t);}

}

主()

{char p[5][10]={"abc "," aabdfg "," abbd "," dcdbe "," CD " };

f(p,5);

printf("%d\n ",strlen(p[0]));

}

程序運行後的輸出結果是(C)

A) 2

B) 4

C) 6

D) 3

(40)有以下程序

void f(int n,int *r)

{ int r 1 = 0;

if(n % 3 = = 0)r 1 = n/3;

else if(n % 5 = = 0)r 1 = n/5;

else f( - n,& ampr 1);

* r = r 1;

}

主()

{int m=7,r;

女(男,& ampr);printf("%d\n,r ");

}

程序運行後的輸出結果是(a)

A) 2

B) 1

C)3

D) 0

(41)有以下程序。

main(int argc,char *argv[])

{int n=0,I;

for(I = 1;I n = n * 10+* argv[I]--0;

printf("%d\n ",n);

}

編譯連接後,生成可執行文件tt.exe。如果它正在運行,請輸入以下命令行。

tt 12 345 678

程序運行後的輸出結果是(D)

A) 12

B) 12345

C)12345678

D) 136

(42)有以下程序

int a = 4;

整數f(整數n)

{ int t = 0;靜態int a = 5;

if(n % 2){ int a = 6;t++ = a++;}

else { int a = 7;t++ = a++;}

返回t+a++;

}

主()

{int s=a,I = 0;

for(;I〈2;i++)s+= f(I);

printf ("%d\n ",s);

}

程序運行後的輸出結果是(b)

A)24

B)28

C)32

D)36

(43)有壹個名為init.txt的文件,內容如下:

#定義HDY(A,B) A/B

# define PRINT(Y) Printf("y=%d\n,Y)

有以下程序

#include "init.txt "

主()

{int a=1,b=2,c=3,d=4,k;

K=HDY(a+c,b+d);

打印(K);

}

關於這個項目,下列說法正確的是(D)

a)編譯錯誤

b)操作錯誤

c)運行結果為y=0。

d)運行結果為y=6。

(44)有以下程序

主()

{char ch[]="uvwxyz ",* pc

Pc = chprintf(" % c \ n " ,*(PC+5));

}

程序運行後的輸出結果是(a)

A)z

B)0

c)元素ch[5]的地址

d)字符y的地址

(45)有以下程序

結構S { int n;int a[20];};

空f(結構S *P)

{int i,j,t;

for(I = 0;in-1;i++)

for(j = I+1;jn;j++)

如果(p->;a[I]& gt;p->;a[j]){ t = p-& gt;a[I];p->;a[I]= p-& gt;a[j];p->;a[j]= t;}

}

主()

{ int I;struct S = { 10,{2,3,1,6,8,7,5,4,10,9 } };

f(& amp;s);

for(I = 0;i printf("%d ",s . a[I]);

}

程序運行後的輸出結果是(a)

A)1,2,3,4,5,6,7,8,9,10,

B)10,9,8,7,6,5,4,3,21,

C)2,3,1,6,8,7,5,4,10,9

10,9,8,7,6,1,2,3,4,5,

(46)有以下程序

結構S { int n;int a[20];};

void f(int *a,int n)

{ int I;

for(I = 0;I a[I]+= I;

}

主()

{ int I;struct S = { 10,{2,3,1,6,8,7,5,4,10,9 } };

f(南非,南非);

for(I = 0;i printf("%d ",s . a[I]);

}

程序運行後的輸出結果是(a)

A)2,4,3,9,12,12,11,11,18,9,

B)3,4,2,7,9,8,6,5,11,10,

C)2,3,1,6,8,7,5,4,10,9

D)1,2,3,6,8,7,5,4,10,9,

(47)有以下程序段

typedef結構節點{ int data結構節點* next} *節點;

節點p;

下列說法正確的是(c)

A)p是指向struct節點結構變量的指針的指針。

b)節點p;語句錯誤

C)p是指向struct節點結構變量的指針。

D)p是struct節點結構變量。

(48)有以下程序

主()

{無符號字符a=2,b=4,c=5,d;

d = a | b;d & amp= c;printf("%d\n ",d);}

程序運行後的輸出結果是(b)

A)3

B)4

C)5

D)6

(49)有以下程序

#包括

主()

{ FILE * fpint k,n,a[6]={1,2,3,4,5,6 };

fp=fopen("d2.dat "," w ");

fprintf(fp," %d%d\n ",a[0],a[1],a[2]);fprintf(fp," %d%d%d \n ",a[3],a[4],a[5]);

fclose(FP);

fp=fopen("d2.dat "," r ");

fscanf(fp," %d%d ",& ampk & amp;n);printf("%d%d\n ",k,n);

fclose(FP);

}

程序運行後的輸出結果是(D)

A)1 2

B)1 4

123 4

D) 123 456

(50)有以下程序

#包括

主()

{ FILE * fpint i,a[6]={1,2,3,4,5,6k };

fp=fopen("d3.dat "," w+b ");

fwrite(a,sizeof(int),6,FP);

fseek(fp,sizeof(int)*3,SEEK _ SET);/*該語句使讀取文件的位置指針從文件頭向後移動3 int data */

fread(a,sizeof(int),3,FP);fclose(FP);

for(I = 0;我& lt6;i++) printf("%d ",a[I]);

}

程序運行後的輸出結果是(a)

A)4,5,6,4,5,6,

1,2,3,4,5,6,

C)4,5,6,1,2,3,

D)6,5,4,3,2,1,

填空題(每題2分,***40分)請將每題的正確答案寫在答題卡上序號從[1]到[20]的橫線上,答案不在試卷上計分。註意:用命令關鍵字填空必須完整。

(1)在深度為7的全二叉樹中,度為2的節點數為_ _ _ 63 _ _ _個。

(2)軟件測試分為白盒(箱)測試和黑盒(箱)測試,等價類劃分方法屬於_ _黑盒(或黑盒)測試。

(3)在數據庫系統中,實現各種數據管理功能的核心軟件稱為_ _數據庫管理系統。

(4)軟件生命周期可以分為幾個階段,壹般分為定義階段、開發階段和維護階段。編碼和測試屬於開發的_ _ _ _ _階段。

(5)在用於結構分析的數據流圖(DFD)中,通過使用數據字典準確地解釋了其中的圖形元素。

(6)執行以下程序後的輸出結果是a=14。

主()

{ int a = 10;

a=(3*5,a+4);printf("a=%d\n ",a);

}

(7)執行以下程序時,輸入1234567890,while循環體將執行0次。

#包括

主()

{ char ch

while((ch = getchar())= = ' 0 ')printf(" # ");

}

(8) (8)下面這個程序的運行結果是m=4 k=4 i=5 k=5。

int k = 0;

無效資金(整數)

{ m+= k;k+= m;printf("m=%d\n k=%d ",m,k++);}

主()

{ int I = 4;

fun(i++);printf("i=%d k=%d\n ",I,k);

}

(9) (9)下面的程序運行結果是# &;。

主()

{int a=2,b=7,c = 5;

開關(a & gt0)

{案例1:開關(b & lt0)

{ case 1:switch(“@”);打破;

案例2: printf("!");打破;

}

情況0:開關(c==5)

{ case 0:printf(" * ");打破;

案例1:printf(" # ");打破;

案例二:printf(" $ ");打破;

}

默認值:printf(& amp;);

}

printf(" \ n ");

}

(10)以下程序的輸出是9。

#包括

主()

{ printf("%d\n ",strlen(" IBM \ n 012 \ 1 \ \ ");

}

(11) Charch = "$ "已被定義;int i=1,j;執行j=!ch & amp& ampi++之後,I的值是1。

(12)以下程序的輸出是5 ^ 4。

#包括

主()

{ char a[]={'\1 ',' \2 ',' \3 ',' \4 ',' \ 0 ' };

printf("%d %d\n ",sizeof(a),srelen(a));

}

(13)有定義語句:int a[][3]={{0},{1},{ 2 } };,數組元素a[1][2]的值為0。

(14)下面這個程序的作用是求數組X中兩個相鄰元素的和,依次存入數組A,然後輸出。請填空。

主()

{int x[10],a[9],I;

for(I = 0;我& lt10;i++)

scanf("%d ",& ampx[I]);

for(I = 1;我& lt10;i++)

a[I-1]= x[I]+x[I-1];

for(I = 0;我& lt9;i++)

printf("%d ",a[I]);

printf(" \ n ");

(15)下面這個程序的作用是:用指針指向三個整數變量,通過指針操作找出三個數的最大值並輸出到屏幕上。請填寫空格:

主()

{int x,y,z,max,*px,*py,*pz,* pmax

scanf("%d%d%d ",& ampx & amp;y & amp;z);

px = & ampx;

py = & ampy;

pz = & ampz;

pmax = & ampmax

*pmax=*px(或* pmax = x);

if(* pmax & lt;* py)* pmax = * py;

if(* pmax & lt;* pz)* pmax = * pz;

printf("max=%d\n ",max);

}

(16)以下程序的輸出是10。

int fun(int*x,int n)

{如果(n==0)

返回x[0];

else返回x[0]+fun(x+1,n-1);

}

主()

{int a[]={1,2,3,4,5,6,7 };

printf("%d\n ",fun(a,3));

}

(17)以下程序的輸出是35

#包括

主()

{char *s1,*s2,m;

s 1 = S2 =(char *)malloc(sizeof(char));

* s 1 = 15;

* s2 = 20

m = * s 1+* S2;

printf("%d\n ",m);

}

(18)有說明。

結構日期{整數年;int月;int日;};

請寫壹個定義語句,將D定義為上述結構變量,並依次為其成員年、月、日賦初值:結構數據d = {2006,10,1 };

(19)有壹個定義:FILE * fw,請完成下面的語句來打開文件,以便可以繼續寫到文本文件readme.txt的末尾

fw=fopen("readme.txt "," a ")

2007年4月全國計算機等級考試二級C語言筆試答案

壹、選擇題:

1-5 24134

6-10 31321

11-15 34231

16-20 43113

21-25 43421

26-30 14241

31-35 22412

36-40 23232

41-45 42411

46-50 13241

二、填空:

1.63

2、墨盒

3.DBNS

4、發展

5、數據字典

6、a-14

7,0

8、無人接聽

9,#和符號

10,9

11,1

12,5_4

13,13 0

14,i=1

15,X[i-1]

16,無人接聽

17,10

18,40

19,無人接聽

20,“20a”