(1)下列說法是正確的。
a)算法的效率只與問題的規模有關,與數據的存儲結構無關。
b)算法的時間復雜度是指執行算法所需的計算工作量。
c)數據的邏輯結構與存儲結構壹壹對應。
d)算法的時間復雜度與空間復雜度相關。
(2)在結構化程序設計中,模塊劃分的原則是
a)每個模塊應包括盡可能多的功能。
b)每個模塊的規模應盡可能大。
c)模塊之間的鏈接應盡可能緊密。
d)模塊內的高內聚和模塊間的低耦合。
(3)下列說法是正確的
a)軟件測試的主要目的是發現程序中的錯誤。
b)軟件測試的主要目的是確定程序中錯誤的位置。
c)為了提高軟件測試的效率,最好由程序員自己完成軟件測試。
d)軟件測試是為了證明軟件中沒有錯誤。
(4)下列選項不是面向對象編程的特征。
a)繼承性B)多態性C)類比D)封閉性
(5)下列關於柱子的說法是正確的。
a)隊列屬於非線性表。
b)隊列根據“先進後出”的原則組織數據
c)隊列刪除隊列末尾的數據。
d)隊列根據“先進先出”的原則組織數據
(6)對於下面的二叉樹
前序遍歷的結果如下
A) DYBEAFCZX B) YDEBFZXCA
C) ABDYECFXZ D) ABCDEFXYZ
(7)二叉樹中有n個度為2的節點,因此二叉樹中的葉節點為
a)n+1 B)n-1 C)2n D)n/2
(8)在下面的關系運算中,可以在不改變關系表中屬性數量的情況下減少元組的數量。
a)並集b)交集c)投影d)笛卡爾積
(9)在E-R圖中,用來表示實體間關系的圖形是
a)矩形b)橢圓形c)菱形d)平行四邊形
(10)下列說法中錯誤的是
a)在數據庫系統中,數據的物理結構必須與邏輯結構壹致。
b)數據庫技術的根本目標是解決數據共享問題。
c)數據庫設計是指在現有數據庫管理系統的基礎上建立數據庫。
d)數據庫系統需要操作系統的支持。
在(11)算法中,每壹個需要執行的操作都必須明確而嚴格地指定,這屬於算法。
a)合法性b)可行性c)確定性d)貧困
(12)下列說法中錯誤的是
a)計算機不能直接執行C語言編寫的源程序。
b)C程序用C編譯後,生成的文件帶後綴。obj是壹個二進制文件。
c)帶有後綴的文件。obj和帶後綴的文件。鏈接器生成的exe是壹個二進制文件。
帶後綴的二進制文件。obj和。exe可以直接運行。
(13)根據C語言中用戶標識符的命名規則,標識符中不能出現的是
a)大寫字母b)連接符c)數字字符d)下劃線
(14)下列說法中錯誤的是
A)C語言是壹種結構化編程語言。
b)結構化程序由三個基本結構組成:順序、分支和循環。
c)三種基本結構組成的程序只能解決簡單的問題。
d)結構化編程提倡模塊化設計方法。
(15)對於壹個正常運行的C程序,下列說法是正確的。
a)程序的執行總是從主函數開始,到主函數結束。
b)程序的執行總是從程序的第壹個函數開始,到主函數結束。
c)程序的執行總是從主函數開始,到程序的最後壹個函數結束。
d)程序的執行總是從程序的第壹個函數開始,到程序的最後壹個函數結束。
(16)變量已被正確定義。要通過scanf ("%d% c% d% c ",&;a1。c 1;a2和ampC2);該語句將值10和20賦給變量a1和a2,將字符X和Y賦給變量c1和c2。下面顯示的輸入形式是正確的(註意:□代表空格字符)
a)10□x□20□y < enter > b)10□x20□y < enter >
c)10□x < Enter > D)10x < Enter >
20□Y < enter > 20□Y < enter >
(17)如果有壹個代數表達式(其中e只表示自然對數的底數,不是變量),下面能正確表示該代數表達式的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,e))) D) sqrt(fabs(pow(x,n)+exp(x)))
(18)有壹個定義:int k = 0;以下選項的四個表達式的值與其他三個表達式的值不同。
a)k ++ B)k+= 1 C)++ k DD)k+1
(19)有如下程序,其中%u表示按整數輸出,無呼號。
主()
{無符號整數x = 0xFFFF/* x的初始值是十六進制數*/
Printf("%u\n ",x);
}
程序運行後的輸出結果是
a)-1 B)65535 C)32767D)0x ffff
(20)讓變量X和Y被正確定義和賦值。在下面的if語句中,錯誤信息將在編譯時生成。
a)if(x++)B)if(x & gt;y & ampy!=0);
c)如果(x & gty)x--D)if(y & lt;0) {;}
else y++:else x++;
(21)下列選項中,當x為大於1的奇數時,取值為0的表達式。
A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0
(22)下列說法是正確的。
A)A)break語句只能在switch語句中使用。
B)B)continue語句的作用是使程序的執行流程跳出所有包含它的循環。
C)C)break語句只能在循環體和switch語句體中使用。
d)在循環體中使用break語句與continue語句具有相同的效果。
(23)有以下程序
主()
{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 D)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 ");
}
}
程序運行後的輸出結果是
* p = & ampn;
Printf("輸入n:");scanf("%d ",& ampp);printf("輸出n:");printf("%d\n ",p);
}
這個程序試圖通過指針P為變量N讀入數據並輸出,但是程序中有很多錯誤。以下說法是正確的。
A)int n,* p = NULLb)* p = & amp;n;C)scanf("%d ",& ampp) D)printf("%d\n ",p);
(31)函數f在以下程序中的作用是:當flag為4時,從小到大排序;當標誌為0時,從大到小排序。
void f(int b[],int n,int flag)
{int i,j,t;
for(I = 0;我& ltn-1;i++)
for(j = I+1;j & ltn;j++)
如果(旗幟?b[I]& gt;b[j]:b[I]& lt;b[j]){ t = b[I];b[I]= b[j];b[j]= t;}
}
主()
{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]);
}
程序運行後的輸出結果是
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,21,6,7,8,9,10,D)10,9,8,7,6,5,4,3,21,
(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
for(I = 0;我& lt10;i++) printf("%d ",a[I]);
}
程序運行後的輸出結果是
A)1,2,3,4,5,6,7,8,9,10;B)1,2,6,8,10
C)1,2,3,4,10,12,14,16,9,10D)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;
}
main(){ int I;
A a={1,2 };
f
printf("%d,%d\n ",a.b,a . p);
}
程序運行後的輸出結果是
a)2.3 B)2.4 C)1.4D)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 B)8,7,3,1 C)4,7,5,2D)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]& lt;a[k][k]){ t = a[I][I];a[I][I]= a[k][k];a[k][k]= t;}
for(I = 0;我& lt4;i++)printf("%d ",a[0][I]);
}
程序運行後的輸出結果是
A)6,21,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
for(I = 0;我& lt5;i++)printf("%d ",a[I]);
}
程序運行後的輸出結果是
A)2,2,3,4,5,B)6,2,3,4,5,C)2,3,4,5,6,
(37)有以下程序
# include & ltstring.h & gt
主()
{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));
}
程序運行後的輸出結果是
a)20 9 B)9 9 C)20 11D)11 11
(38)有以下程序
# include & ltstring.h & gt
主()
{char p[20]={'a ',' b ',' c ',' d'},q[]="abc ",r[]="abcde "
strcat(p,r);Strcpy(p+strlen(q),q);
Printf("%d \n ",sizeof(p));
}
程序運行後的輸出結果是
A)9 B)6 C)11 D)7
(39)有以下程序
# include & ltstring.h & gt
主()
{ char p[20]={'a ',' b ',' c ',' d'},q[]="abc ",r[]= " abcde ";
Strcat(p,r);strcpy(p+strlen(q),q);
Printf("%d\n ",strlen(p));
}
程序運行後的輸出結果是
A) 9 B) 6 C) 11 D) 7
else { int a = 7;t++ = a++;}
返回t+a++;
}
主()
{int s=a,I = 0;
for(;I〈2;i++〉s+= f(I);
printf ("%d\n ",s);
}
程序運行後的輸出結果是
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);
}
以下對這個程序的描述是正確的
a)編譯錯誤b)操作錯誤
c)運行結果為y=0 D)運行結果為y=6。
(44)有以下程序
主()
{char ch[]="uvwxyz ",* pc
Pc = chprintf(" % c \ n " ,*(PC+5));
}
程序運行後的輸出結果是
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;我& ltp->;n-1;i++)
for(j = j+1;j & ltp->;n-1;j++)
程序運行後的輸出結果是
A)3 B)4 C)5 D)6
(49)有以下程序
# include & ltstdio.h & gt
主()
{ FILE * fpint I,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\n ",a[3],a[4],a[5]);
fclose(FP);
fp=fopen("d2.dat "," r ");
fscanf(fp," " %d%d\n ",& ampk & amp;n);printf("%d%d\n ",k,n);
fclose(FP);
}
程序運行後的輸出結果是
a)1 2 B)1 4 C)123 4D)123 456
(50)有以下程序
# include & ltstdio.h & gt
主()
{ fILE * fpint I,a[6]={1,2,3,4,5,6k };
fp=fopen("d3.dat "," w+b ");
fwrite(a,size(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)4,5,6,4,5,6,B)1,2,3,4,5,6,C)4,5,6,1,2,3,D)6,5,4,3,2,1,
2.填空(每空2分,***40分)
註:填空題14有2個空格,19題***有20個空格。
請將每壹個空白正確答案寫在答題卡上序號從[1]到[20]的橫線上,答案不在試卷上計分。
註意:命令關鍵字填空壹定要寫完整。
(1)深度為7的全二叉樹中,度為2的節點數是_ _ _ _ _ _ _ _ _。
(2)軟件測試分為白盒(箱)測試和黑盒(箱)測試,等價類劃分法屬於_ _ _ _ _ _ _ _ _ _。
(3)在數據庫系統中,實現各種數據管理功能的核心軟件稱為數據庫管理系統_ _ _ _ _。
(4)軟件生命周期可以分為幾個階段,壹般分為定義階段、開發階段和維護階段。編碼和測試屬於_ _ _ _ _ _階段。
(5)在結構分析中使用的數據流圖(DFD)中,其中的圖形元素是用_ _ _ _ _ _ _ _來準確解釋的。
(6)執行以下程序後的輸出結果是_ _ _ _ _ _。
主()
{ int a = 10;
a=(3*5,a+4);printf("a=%d\n ",a);
}
(7)執行以下程序時,輸入1234567890,while循環體將執行。
_ _ _ _ _ _ _ _ _次。
# include & ltstdio.h & gt
主()
{ char ch
while((ch = getchar())= = ' 0 ')printf(" # ");
}
(8)下列程序的運行結果是_ _ _ _ _ _ _ _。
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)下列程序的運行結果是_ _ _ _ _ _ _ _。
主()
{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)下列程序的輸出是_ _ _ _ _ _ _ _ _ _
# include & ltstring.h & gt
主()
{ printf("%d\n ",strlen(" IBM \ n 012 \ 1 \ \ ");
}
(11) Charch = "$ "已被定義;int i=1,j;執行j=!ch & amp& ampi++之後,I的值是_ _ _ _ _ _ _ _ _
(12)下列程序的輸出是_ _ _ _ _ _ _ _ _
# include & ltstring.h & gt
主()
{ char a[]={'\1 ',' \2 ',' \3 ',' \4 ',' \ 0 ' };
Printf("%d %d\n ",sizeof,srelen);
}
(13)有定義語句:int a[][3]={{0},{1},{ 2 } };,數組元素a[1][2]的值是_ _ _ _ _ _ _ _ _。
(14)下面這個程序的作用是求數組X中兩個相鄰元素的和,依次存入數組A,然後輸出。請填空。
主()
{int x[10],a[9],I;
for(I = 0;我& lt10;i++)
Scanf("%d ",& ampx[I]);
for(_ _ _ _ _ _ _ _ _ I & lt;10;i++)
a[I-1]= x[I]+_ _ _ _ _ _ _ _ _ _ _ _ _
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
__________________
if(* pmax & lt;* py)* pmax = * py;
if(* pmax & lt;* pz)* pmax = * pz;
Printf("max=%d\n ",max);
}
(16)下列程序的輸出是_ _ _ _ _ _ _ _ _ _ _ _
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)下列程序的輸出是_ _ _ _ _ _ _ _ _ _
# include & ltstdlib.h & gt
主()
{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定義為上述結構變量,並依次給其成員年、月、日賦值初值:2006,10,1:_ _ _ _ _ _ _ _;
(19)有壹個定義:FILE * fw,請完成下面的語句來打開文件,以便可以繼續寫到文本文件readme.txt的末尾
fw=fopen("readme.txt "," ________ ")
2007年4月二級C語言筆試答案
多項選擇
1-5: BDACD
6-10: CABCA
11-15: CDBCA
16-20: DCABC
21-25: DCABA
26-30: ADCDA
31-35: BBDDB
36-40歲:DCACA
41-45:達達
46-50歲:ACBDA
填空題
1、63
2.黑盒子
3.數據庫管理系統
4.發展
5.數據字典
6、a=14
7、0
8、m=4 k=4 i=5 k=5
9、# & amp
10、9
11、1
12、5 4
13、0
14、i=1
15、x[i-1]
16 ,* pmax = * px
17、10
18、40
19、結構日期d={2006,10,1}
20、答