




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2009年9月全國計算機等級考試二級筆試試卷
C語言程序設計
(考試時間90分鐘,滿分100分)
一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)
每題1分,共70分)
(1)下列數據結構中,屬于非線性結構的是
A)循環隊列
B)帶鏈隊列
C)二叉樹
D)帶鏈棧
(2)下列數據結果中,能夠按照“先進后出”原則存取數據的是
A)循環隊列
B)棧
0隊列
D)二叉樹
(3)對于循環隊列,下列敘述中正確的是
A)隊頭指針是固定不變的
B)隊頭指針一定大于隊尾指針
C)隊頭指針一定小于隊尾指針
D)隊頭指針可以大于隊尾指針,也可以小于隊尾指針
(4)算法的空間復雜度是指
A)算法在執行過程中所需要的計算機存儲空間
B)算法所處理的數據量
C)算法程序中的語句或指令條數
D)算法在執行過程中所需要的臨時工作單元數
(5)軟件設計中劃分模塊的一個準則是
A)低內聚低耦合
B)高內聚低耦合
0低內聚高耦合
D)高內聚高耦合
(6)下列選項中不屬于結構化程序設計原則的是
A)可封裝
D)自頂向下
O模塊化
D)逐步求精
(7)軟件詳細設計產生的圖如下:
YN
該圖是
A)N-S圖
B)PAD圖
0程序流程圖
D)E-R圖
(8)數據庫管理系統是
A)操作系統的一部分
B)在操作系統支持下的系統軟件
C)一種編譯系統
D)一種操作系統
(9)在E-R圖中,用來表示實體聯系的圖形是
A)橢圓圖
B)矩形
0菱形
D)三角形
(10)有三個關系R,S和T如下:
A)選擇
B)投影
O交
D)并
(11)以下敘述中正確的是
A)程序設計的任務就是編寫程序代碼并上機調試
B)程序設計的任務就是確定所用數據結構
C)程序設計的任務就是確定所用算法
D)以上三種說法都不完整
(12)以下選項中,能用作用戶標識符的是
A)void
B)8_8
C)_0_
D)unsigned
(13)閱讀以下程序
^include
main()
{intcase;floatprintF;
printf(“請輸入2個數:”);
scanf("%d%fw,&case,&pjrintF);
printf(w%d%f\nw,case,printF);
)
該程序編譯時產生錯誤,其出錯原因是
A)定義語句出錯,case是關鍵字,不能用作用戶自定義標識符
B)定義語句出錯,printF不能用作用戶自定義標識符
C)定義語句無錯,scanf不能作為輸入函數使用
D)定義語句無錯,printf不能輸出case的值
(14)表達式:(int)((double)9/2)-(9)%2的值是
A)0
B)3
C)4
D)5
(15)若有定義語句:intx=10;,則表達式x-=x+x的值為
A)-20
B)-10
C)0
D)10
(16)有以下程序
ttinclude
main()
{inta=l,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2*b);
)
程序運行后的輸出結果是
A)0,0
B)1,0
C)3,2
D)1,2
17)設有定義:inta=l,b=2,c=3;,以下語句中執行效果與其它三個不同的
是
A)if(a>b)c=a,a=b,b=c;
B)if(a>b){c=a,a=b,b=c;}
C)if(a>b)c=a;a=b;b=c;
D)if(a>b){c=a;a=b;b=c;}
(18)有以下程序
ftinclude
main()
{intc=0,k;
for(k=l;k<3;k++)
switch(k)
{default:c+=k
case2:c++;break;
case4:c+=2;break;
)
printf("%d\n",c);
)
程序運行后的輸出結果是
A)3
B)5
C)7
D)9
(19)以下程序段中,與語句:k=a>b?(b>c?l:0):0;功能相同的是
A)if((a>b)&&(b>c))k=l;
elsek=0;
B)if((a>b)||(b>c)k=l;
elsek=0;
C)if(a<=b)k=0;
elseif(b<=c)k=l;
D)if(a>b)k=l;
elseif(b>c)k=l;
elsek=0;
20)有以下程序
#include
main()
{chars[]={"012xy"};inti,n=O;
for(i=0;s[i]!=O;i++)
if(s[i]>=,a,&&s[i]<=,z,)n++;
printf("%d\n",n);
)
程序運行后的輸出結果是
A)0
B)2
C)3
D)5
(21)有以下程序
4include
main()
{intn=2,k=O;
while(k++&&n++>2);
printf("%d%d\n”,k,n);
)
程序運行后的輸出結果是
A)02
B)13
057
D)12
(22)有以下定義語句,編譯時會出現編譯錯誤的是
A)chara=,a';
B)chara='\n';
C)chara=,aa';
D)chara='\x2d,;
(23)有以下程序
^include
mainO
{charcl,c2;
cl='A'+'8'-'4';
c2='A'+'8'-'5';
printf("%c,%d\nw,cl,c2);
)
已知字母A的ASCH碼為65,程序運行后的輸出結果是
A)E,68
B)D,69
C)E,D
D)輸出無定值
(24)有以下程序
^include
voidfun(intp)
{intd=2;
p=d++;printf("%d”,p);}
main()
{inta=l;
fun(a);printf("%d\n",a);}
程序運行后的輸出結果是
A)32
B)12
C)21
D)22
(25)以下函數findmax擬實現在數組中查找最大值并作為函數值返回,但
程序中有錯導致不能實現預定功能
ttdefineMIN-2147483647
intfindmax(intx[],intn)
{inti,max;
for(i=0;i<N;I++)<p="〃/>
{max=MIN;
if(max
returnmax;
)
造成錯誤的原因是
A)定義語句inti,max;中max未賦初值
B)賦值語句max=MIN;中,不應給max賦MIN值
C)語句if(max
D)賦值語句max=MIN;放錯了位置
(26)有以下程序
ttinclude
main()
{intm=l,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n”,m,n,*p,*q);
程序運行后的輸出結果是
A)1,2,1,2
B)1,2,2,1
C)2,1,2,1
D)2,1,1,2
(27)若有定義語句:inta[4][10],*p,*q[4];且0Wi<4,則錯誤的賦值
是
A)p=a
B)q[i]=a[i]
C)p=a[i]
D)p=&a[2][1]
(28)有以下程序
ttinclude
ttinclude
main()
{charstr[][20]={^One*Worldw,"One*Dream!”},*p=str[1];
printf("%d,”,strlen(p));printf(a%s\nw,p);
}
程序運行后的輸出結果是
A)9,One*World
B)9,One*Dream
C)10,One*Dream
D)10,One*World
(29)有以下程序
#include
main()
{inta[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{case0:switch(a[i]%2)
{case0:a[i]++;break;
case1:a[i]一;
}break;
case1:a[i[=0;
}
for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");
A)3344
B)2050
03040
D)0304
(30)有以下程序
4include
^include
main()
{chara[10]="abed";
printf("%d,%d\n”,strlen(a),sizeof(a));
)
程序運行后的輸出結果是
A)7,4
B)4,10
C)8,8
D)10,10
(31)下面是有關C語言字符數組的描述,其中錯誤的是
A)不可以用賦值語句給字符數組名賦字符串
B)可以用輸入語句把字符串整體輸入給字符數組
C)字符數組中的內容不一定是字符串
D)字符數組只能存放字符串
(32)下列函數的功能是
fun(char*a,char*b)
{while((*b=*a)!='\0'){a++,b++;}}
A)將a所指字符串賦給b所指空間
B)使指針b指向a所指字符串
C)將a所指字符串和b所指字符串進行比較
D)檢查a和b所指字符串中是否有‘'0'
(33)設有以下函數
voidfun(intn,char*s){...}
則下面對函數指針的定義和賦值均是正確的是
A)void(*pf)();pf=fun;
B)viod*pf();pf=fun;
C)void*pf();*pf=fun;
D)void(*pf)(int,char);pf=&fun;
(34)有以下程序
#include
intf(intn);
main()
{inta=3,s;
s=f(a);s=s+f(a)jprintf(<<%d\nw,s);
intf(intn)
{staticinta=l;
returnn;
)
程序運行以后的輸出結果是
A)7
B)8
C)9
D)10
(35)有以下程序
4include
^definef(x)x*x*x
main()
{inta=3,s,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n,,s,t);
}
程序運行后的輸出結果是
A)10,64
B)10,10
C)64,10
D)64,64
(36)下面結構體的定義語句中,錯誤的是
A)structord{intx;inty;intz;};structorda;
B)structord{intx;inty;intz;}structorda;
C)structord{intx;inty;intz;}a;
D)struct{intx;inty;intz;}a;
(37)設有定義:char*c;,以下選項中能夠使字符型指針c正確指向一個
字符串的是
A)charstr[]="string”;c=str;
B)scanf("%s",c);
C)c=getchar();
D)*c="string";
(38)有以下程序
ttinclude
ttinclude
structA
{inta;charb[10];doublec;};
structAf(structAt);
main()
{structAa={1001,wZhangDa”,1098.0};
a=f(a);jprintf("%d,%s,%6.lf\nw,a.a,a.b,a.c);
structAf(structAt)
(t.a=1002;strcpy(t.b,wChangRongw);t.c=1202.0;returnt;)
程序運行后的輸出結果是
A)1001,ZhangDa,1098.0
B)1001,ZhangDa,1202.0
C)1001,ChangRong,1098.0
D)1001,ChangRong,1202.0
(39)若有以下程序段
intr=8;
printf("%d\n",r>>l);
輸出結果是
A)16
B)8
C)4
D)2
(40)下列關于C語言文件的敘述中正確的是
A)文件由一系列數據依次排列組成,只能構成二進制文件
B)文件由結構序列組成,可以構成二進制文件或文本文件
C)文件由數據序列組成,可以構成二進制文件或文本文件
D)文件由字符序列組成,其類型只能是文本文件
二、填空題(每空2分,共30分)
(1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中
共有【1】個結點。
(2)程序流程圖中的菱形框表示的是12】o
(3)軟件開發過程主要分為需求分析、設計、編碼與測試四個階段,其中【3】
階段產生“軟件需求規格說明書。
(4)在數據庫技術中,實體集之間的聯系可以是一對一或一對多或多對多
的,那么“學生”和“可選課程”的聯系為【4】o
(5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。其中可以
作為主關鍵字的是【5】o
(6)若有定義語句:inta=5;,則表達式:a++的值是【6】。
(7)若有語句doublex=17;inty;,當執行y=(int)(x/5)%2;之后y的值
為⑺。
(8)以下程序運行后的輸出結果是[8】o
#include
main()
{intx=20;
printf(,0<X<20);<p=〃"/>
printf(“%d\n”,O〈X&&X<=""/>
(9)以下程序運行后的輸出結果是[9】o
ttinclude
main()
{inta=l,b=7;
do{
b=b/2;a+=b;
}while(b>l);
printf("%d\n",a);}
(10)有以下程序
ttinclude
main()
{intf,fl,f2,i;
fl=0;f2=l;
printf(“%d%d”,fl,f2);
for(i=3;i<=5;i++)
{f=fl+f2;printf(“%d”,f);
fl=f2;f2=f;
)
printf("\n");
)
程序運行后的輸出結果是[10]o
(11)有以下程序
^include
inta=5;
voidfun(intb)
{inta=10;
a+=b;printf("%d",a);
main()
{intc=20;
fun(c);a+=c;printf("%d\n”,a);
}
程序運行后的輸出結果是[111O
(12)設有定義:
structperson
{intID;charname[12];}p;
請將scanf(,[12]);語句補充完整,使其能夠為結構體變量p的
成員ID正確讀入數據。
(13)有以下程序
^include
main()
{chara[20]="Howareyou?”,b[20];
scanf("%s",b);printf("%s%s\n”,a,b);
)
程序運行時從鍵盤輸入:Howareyou?<回車>
則輸出結果為[13]o
(14)有以下程序
ttinclude
typedefstruct
{intnum;doubles}REC;
voidfunl(RECx){x.num=23;x.s=88.5;}
main()
{RECa={16,90.0};
funl(a);
printf("%d\n”,a.num);
}
程序運行后的輸出結果是[14]o
(15)有以下程序
#include
fun(intx)
{if(x/2>0)run(x/2);
printf("%d”,x);
main()
{fun(6)jprintf(a\nw);}
程序運行后的輸出結果是[15]o
2009年9月全國計算機等級考試二級C語言筆試參考答案
一、選擇題
(C(B(D(A(B
1)2)3)4)5)
(A(C(B(C(D
6)7)8)9)10)
(D(C(A(B(B
11)12)13)14)15)
(D(C(A(A(B
16)17)18)19)20)
(D(C(A(C(D
21)22)23)24)25)
(B(A(C(C(B
26)27)28)29)30)
(D(A(A(c(A
31)32)33)34)35)
(B(A(D(c(C
36)37)38)39)40)
*答案僅供參考
(10)01123
(9)5
(8)10
(7)1
(6)5
(5)身份證號
(4)多對多
(3)需求分析
(2)邏輯條件
(1)14
二、填空題
20。9年3月二級C語言筆試真題及答案
((1)—(10)每小題2分,(11)—(50)每題1分,共60分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項
涂寫在答題卡相應位置上,答在試卷上不得分。
(1)下列敘述中正確的是
A)棧是“先進先出”的線性表
B)隊列是“先進先出”的線性表
C)循環隊列是非線性結構
D)有序性表既可以采用順序存儲結構,也可以采用鏈式存儲結構
(2)支持子程序調用的數據結構是
A)棧B)樹C)隊列D)二叉樹
(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是
A)10B)8C)6D)4
(4)下列排序方法中,最壞情況下比較次數最少的是
A)冒泡排序
B)簡單選擇排序
C)直接插入排序
D)堆排序
(5)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。
下面屬于應用軟件的是
A)編譯軟件
B)操作系統
C)教務管理系統
D)匯編程序
(6)下面敘述中錯誤的是
A)軟件測試的目的是發現錯誤并改正錯誤
B)對被調試的程序進行“錯誤定位”是程序調試的必要步驟
C)程序調試通常也稱為Debug
D)軟件測試應嚴格執行測試計劃,排除測試的隨意性
(7)耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是
A)提高耦合性降低內聚性有利于提高模塊的獨立性
B)降低耦合性提高內聚性有利于提高模塊的獨立性
C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度
D)內聚性是指模塊間互相連接的緊密程度
(8)數據庫應用系統中的核心問題是
A)數據庫設計
B)數據庫系統設計
C)數據庫維護
D)數據庫管理員培訓
(9)有兩個關系R,S如下:
S
由關系R通過運算得到關系S,則所使用的運算為
A)選擇B)投影C)插入D)連接
(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為
A)屬性B)鍵C)關系D)域
(11)以下選項中合法的標識符是
A)1-1B)1—1C)-11D)1—
(12)若函數中有定義語句:intk;,則
A)系統將自動給k賦初值0
B)這時k中值無定義
C)系統將自動給k賦初值-1
D)這時k中無任何值
(13)以下選項中,能用作數據常量的是
A)0115B)0118C)1.5el.5D)U5L
(14)設有定義:intx=2;,以下表達式中,值不為6的是
A)x*=x+l
B)x++,2*x
C)x*=(1+x)
D)2*x,x+=2
(15)程序段:intx=12;
doubley=3.141593;printf(“%d%8.6f",x,y);的輸出結果是
A)123.141593
B)12
3.141593
C)12,3.141593
D)123.141593
(16)若有定義語句:doublex,y,*px,*py,執行了px=&x,py=&y;之后,正確
的輸入語句是
A)scanf(,x,y);
B)scanf(“%f%f”,&x,&y);
C)scanf(rt%lf%lew,px,py);
D)scanf(”,x,y);
(17)以下是if語句的基本形式:
if(表達式)
語句
其中“表達式”
A)必須是邏輯表達式
B)必須是關系表達式
C)必須是邏輯表達式或關系表達式
D)可以是任意合法的表達式
(18)有以下程序
/include<stdio.h>
main()
{intx;
scanf("%d",&x);
if(x<=3);else
if(x!=10)
printf("%d\n",x);
)
程序運行時,輸入的值在哪個范圍才會有輸出結果
A)不等于10的整數
B)大于3且不等于10的整數
C)
大于3或等于10的整數
D)小于3的整數
(19)有以下程序
#include<stdio.h>
Main()
(
inta=l,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2||c—!=3)
printf("%d,%d,%d\n”,a,b,c);
elseprintf("%d,%d,%d\n”,a,b,c);
elseprintf(w%d,%d,%d\nw,a,b,c);
)
程序運行后的輸出結果是
A)1,2,3
B)1,3,2
C)1,3,3
D)3,2,1
(20)以下程序中的變量已正確定義
for(i=0;i<4;i++,i++
for(k=l;k<3;k++)jprintf(*”);
程序段的輸出結果是
A)********
B)****
C)**
D)*
(21)有以下程序
#include<stdio.h>
main()
{char
*s=("ABC);
do
{printf(<<%dw,*s%10);s++;
}while(*s);
)
注意,字母A的ASCH碼值為65。程序運行后的輸出結果是
A)5670
B)656667
C)567
D)ABC
(22)設變量已正確定義,以下不能統計出一行中輸入字符個數(不包含回車
符)的程序段是
A)n=0;while((ch=getchar())!='\n')n++;
B)n=0;while(getchar()!='\n,)n++;
C)for(n=0;getchar()!='\n,;n++);
D)n=0;for(ch=getchar();ch!=,\n,;n++);
(23)有以下程序
#include<stdio.h>
main()
{intal,a2;charcl,c2;
scanf(w%d%c%d%cw,&al,&cl,&a2,&c2);
printf(a%d,%c,%d,%cw,&1,cl,a2,c2);
)
若想通過鍵盤輸入,使得al的值為12,a2的是為34,cl的值為字符a,c2的值為
字符b,程序輸出結果是:12,a,34,b,則正確的輸入格式是(以下
代表空格,<CR>代表回車)
A)12a34b<CR>
B)12
a
34
b<CR>
C)12,a,34,b<CR>
D)12
a34
b<CR>
(24)有以下程序
#include<stdio.h>
intf(intx,inty)
{return()y-x)*x);}
main()
{inta=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("%d\n",d);
}
程序運行后的輸出結果是
A)10
B)9
C)8
D)7
(25)有以下程序
#include<stdio.h>
voidfun(char
*s)
{while(*s)
{if(*s%2==0)
printf("%c",*s);
s++;
)
)
main()
{char
a[]={"good”};
fun(a)jprintf(“\n”);
)
注意:字母a的ASCII碼值為97,程序運行后的輸出結果是
A)d
B)go
C)god
D)good
(26)有以下程序
^include<stdio.h>
voidfun(int*a,int*b)
{int*c;
c=a;a=b;b=c;
)
main()
{intx=3,y-5,*P=&x,*q=&y;
fun(p,q);printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n”,*p,*q);
)
程序運行后的輸出結果是
A)3,5,5,3
B)3,5,3,5
C)5,3,3,5
D)5,3,5,3
(27)有以下程序
ttinclude<stdio.h>
viodf(int*p,int*q);
main()
{intm=l,n=2,*r=&m;
f(r,&n);printf("%d,%d”,m,n);
)
voidf(int*p,int*q)
{p=p+l;*q=*q+l;}
程序運行后輸出的結果是
A)1,3
B)2,3
C)1,4
D)1,2
(28)以下函數按每行8個輸出數組中的數據
voidfun(int*w,intn)
{inti;
for(i=0;i<n;i++)
printf("%d”,w);
)
printf("\n");
)
下劃線處應填入的語句是
A)if(i/8==0)print(“\n”);
B)if(i/8==0)continue;
C)if(i%8==0)print("\n”);
D)if(i%8==0)continue;
(29)若有以下定義
intx[10],*pt=x;
則對x數組元素的正確應用是
A)
B)*(x+3)
C)*(pt+10)
D)pt+3
(30)設有定義:chars[81];inti=10;,以下不能將一行(不超過80個字符)
帶有空格的字符串真確讀入的語句或語句組是
A
gets(s)
B)while((s[i++]=getchar())!=”\n”;s="\0”;
C)scanf("%s",s);
D)do{scanf("%c",&s);}while(s[i++]!="\n");s=”\0";
(31)有以下程序
^include<stdio.h>
main()
{char*a[]={"abed"ef"gh"ijk"};intI;
for(i=0;i<4;i++)
printf(“%c”,*a);
)
程序運行后輸出的結果是
A)aegi
B)dfhk
C)abed
D)abedefghijk
(32)以下選項中正確的語句組是
A)chars□;s=”BOOK!”;
B)char*s;s={”BOOK!”};
C)chars[10];s=wB00K!,,;
D)char*s;s="BOOK!”;
(33)有以下程序
^include<stdio.h>
intfun{intx,inty}
{if(x=y)return(x);
elsereturen((x+y)/2)
)
main()
{inta=4,b=5,c=6;
printf("%d\n”,fun(2*a,fun(b,c)))
)
程序運行后的輸出結果是
A)3
B)6
C)8
D)12
(34)設函數中有整型變量n,為保證其在未賦值的情況下初值為0,應選擇的
存儲類別是
A)auto
B)register
C)static
D)auto或register
(35)有以下程序
^include<stdio.h>
intb=2:
intfun(int*k)
{b=*k+b;return(b);)
main()
{inta[10]={l,2,3,4,5,6,7,8},I;
for(i=2;i<4;i++){b=fun(&a)+b;printf("%d",b);}
printf("\n");
)
程序運行后輸出的結果是
A)10
12
B)8
10
C)10
28
D)10
16
(36)有以下程序
^include<stdio.h>
^definePT3.5;
ttdefineS(x)PT*x*x;
mian()
{inta=l,b=2;printf("%4.lf\n”,S(a+b));}
程序運行后輸出的結果是
A)14.0
B)31.5
C)7.5
D)程序有錯無輸出結果
(37)有以下程序
^include<stdio.h>
structord
{intx,y;}dt[2]={l,2,3,4);
main()
{structord*p=dt;
printf("%d,”,++p->x);printf("%d\n”,++p->y);
)
程序的運行結果是
A)1,2
B)2,3
C)3,4
D)4,1
(38)設有宏定義:ttinclude
IsDIV(k,n)((k%n==l)?1:0且變量m已正確定義并賦值,則宏調用:IsDIV
(m,5)&&IsDIV(m,7)為真時所要表達的是
A)判斷m是否能被5或者7整除
B)判斷m是否能被5和7整除
C)判斷m被5或者7整除是否余1
D)判斷m被5和7整除是否余1
(39)有以下程序
ttinclude<stdio.h>
main()
{inta=5,b=l,t;
t=(a?2|b);printf("%d\n",t)
)
程序運行后的輸出結果是
A)21
B)11
C)6
D)1
(40)有以下程序
ttinclude<stdio.h>
main()
{EILE*f;
f=fopen("filea.txt","w");
fprintf(f,nabc");
fclose(f);
)
若文本文件fi1ea.txt中原有內容為:he1lo,則運行以上程序后,文件fi1ea.txt
中的內容為
A)helloabc
B)abclo
C)abc
D)abchello
二、填空題(每空2分,共30分)
請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上
不得分。
(1)假設一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,
棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,
top=30(數組下標),則棧中具有【1】個元素。
(2)軟件測試可分為白盒測試和黑盒測試。基本路徑測試屬于【2】測試。
(3)符合結構化原則的三種基本控制結構是:選擇結構、循環結構和
[3]0
(4)數據庫系統的核心是14】
(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯系的是
[5]框。
(6)表達式(int)((double)(5/2)+2.5)的值是[6】
(7)若變量x、y已定義為int類型且x的值為99,y的值為9,請將輸出語句
printf([7],x/y);補充完整,使其輸出的計算結果形式為:x/y=ll
(8)有以下程序
ttinclude<stdio.h>
main()
{
charcl,c2;
scanf("&c",&cl);
while(cl<65||cl>90)
scanf("&c",&cl);
c2=cl+32;
printf("&c,&c\n",cl,c2);
)
程序運行輸入65回車后,能否輸出結果、結束運行(請回答能或不能)【8】
(9)以下程序運行后的輸出結果是19】
^include<stdio.h>
main()
{intk=l,s=0;
do(
if{((k&2)!=0)continue;
s+=k;k++;
}while(k)10);
printf("s=&d/n”,s);
)
(10)下列程序運行時,若輸入labcedl2df〈回車》輸出結果為[10)
^include<stdio.h>
main()
{char
a=0,ch;
while((ch=getchar())!=,\n,)
{if(a&2!=0&&(ch>&&ch<=fz'))ch=ch-匕,+'A';
a++;putchar(ch);
)
printf("\n”);
}
(11)有以下程序,程序執行后,輸出結果是【口】
^include<stdio.h>
voidfun(int*a)
{a[0=a[l];]}
main()
{inta[10]={10,9,8,7,6,5,4,3,2,l},i;
for(i=2;i>=0;i-)fun{&a};
for(i=0;i<10;i++)printf("&d”,a);
printf(“\n”);
)
(12)請將以下程序中的函數聲明語句補充完整
^include<stdio.h>
intL12]
main()
{intx,y,(*p)();
p=max;
printf("&d\n”,&x,&y);
)
Intmax(inta,intb)
{return(a>b/a:b);}
(13)以下程序用來判斷指定文件是否能正常打開,請填空
^include<stdio.h>
main()
{FILE*fp;
if(((fp二fopen("test,txt","r"))=[13]))
printf(“未能打開文件!\n");
else
printf("文件打開成功!\n");
(14)下列程序的運行結果為【14】
^include<stdio.h>
ttinclude<string.h>
structA
{inta;charb[10];double
c;};
void
f(struct
A
*t);
mainO
{structAa=(1001,wZhangDaw,1098,0);
f(&a);printf("&d,&s,&6,if\n”,a.a,a.b,a.c);
}
voidf(struct
A
*t)
{strcpy(t->b,99ChangRong”);
}
(15)以下程序把三個NODETYPE型的變量鏈接成一個簡單的鏈表,并在while循
環中輸出鏈表結點數據域中的數據,請填空
^include<stdio.h>
structnode
{intdata;structnode*next;};
typedefstructnodeNODETYPE;
main()
{NODETYPEa,b,c,*h,*p;
a.
data=10;b.data=20;c.data=30;h=&a;
b.
next=&b;b.next=&c;c.next=,\0,;
P=h;
while(p){printf("&d",p->data);[15];}
)
答案:
選擇題:
「10:DACDCABABC1P20:CBDDACDBCB2P30:CDABABACBC3C40:ADBCCCBDAC
填空題:
(1)19(2)白盒(3)順序結構(4)數據庫管理系統(DBMS)(5)菱形
(6)4(7)"x/y=%d"(8)能(9)s=0(10)!AbCeDf2dF
(11)7777654321(12)max(inta,intb)(13)NULL
(14)1001,ChangRong,1098.0(15)p=p—>next
200s年9月二級C語言筆試真題及答案
(考試時間:120分鐘,滿分100分)
一、選擇題((1)?(10)、(21)?(40)每題2分,(11)?(20)每題1分,
70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項
填涂在
答題卡相應位置上,答在試卷上不得分。
(1)一個棧的初始狀態為空?,F將元素1、2、3、4、5、A、B、C、D、E依次
入棧,然后
再依次出棧,則元素出棧的順序是()o
A)12345ABCDEB)EDCBA54321C)ABCDE12345D)54321EDCBA
(2)下列敘述中正確的是()o
A)循環隊列有隊頭和隊尾兩個指針,因此,循環隊列是非線性結構
B)在循環隊列中,只需要隊頭指針就能反映隊列中元素的動態變化情況
C)在循環隊列中,只需要隊尾指針就能反映隊列中元素的動態變化情況
D)循環隊列中元素的個數是由隊頭指針和隊尾指針共同決定
(3)在長度為A的有序線性表中進行二分查找,最壞情況下需要比較的次數是
()o
A)0(A)B)0(A2)C)0(log2z?)D)0(z?log2z?)
(4)下列敘述中正確的是()o
A)順序存儲結構的存儲一定是連續的,鏈式存儲結構的存儲空間不一定是連續
的
B)順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構
C)順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表
D)鏈式存儲結構比順序存儲結構節省存儲空間
(5)數據流圖中帶有箭頭的線段表示的是(
A)控制流B)事件驅動C)模塊調用D)數據流
(6)在軟件開發中,需求分析階段可以使用的工具是()0
A)N-S圖B)DFD圖C)PAD圖D)程序流程圖
(7)在面向對象方法中,不屬于“對象”基本特點的是()?
A)一致性B)分類性C)多態性D)標識唯一性
(8)一間宿舍可住多個學生,則實體宿舍和學生之間的聯系是()o
A)一對一B)一對多C)多對一D)多對多
(9)在數據管理技術發展的三個階段中,數據共享最好的是()?
A)人工管理階段B)文件系統階段C)數據庫系統階段D)三個階段相同
(10)有三個關系R、S和T如下:
RST
ABBCABC
m113m13
n235
由關系R和S通過運算得到關系T,則所使用的運算為()o
A)笛卡爾積B)交C)并D)自然連接
(11)以下敘述中正確的是()o
A)C程序的基本組成單位是語句B)C程序中的每一行只能寫一條語句
二級C語言程序設計試卷第2頁(共9頁)
C)簡單C語句必須以分號結束D)C語句必須在一行內寫完
(12)計算機能直接執行的程序是()o
A)源程序B)目標程序C)匯編程序D)可執行程序
(13)以下選項中不能作為C語言合法常量的是()o
A)'cd'B)0.le+6C)“\a"D)''011'
(14)以下選項中正確的定義語句是()o
A)doublea;b;B)doublea=b=7;C)doublea=7,b=7;D)double,a,b;
(15)以下不能正確表示代數式2a8
cd
的C語言表達式是()o
A)2*a*b/c/dB)a*b/c/d*2C)a/c/d*b*2D)2*a*b/c*d
(16)C源程序中不能表示的數制是O。
A)二進制B)八進制C)十進制D)十六進制
(17)若有表達式(w)?(—x):(++y),則其中與w等價的表達式是()o
A)w==lB)w==0C)w!=lD)w!=0
(18)執行以下程序段后,w的值為()o
intw='A',x=14,y=15;
w=((x||y)&&(w<,a));
A)-1B)NULLC)1D)0
(19)若變量已正確定義為int型,要通過語句scanf("d,%d,%d",&a,&b,
&c);給a賦值
1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(b代表一個空格符)
()o
A)ddd1,2,3〈回車〉B)1d2d3〈回車〉
C)l,ddd2,ddd3〈回車〉D)1,2,3〈回車〉
(20)有以下程序段
inta,b,c;
a=10;b=50;c=30;
if(a>b)a=b,b=c;c=a;
printf("a=%db=%dc=%d\nw,a,b,c);
程序的輸出結果是()?
A)a=10b=50c=10B)a=10b=50c=30C)a=10b=30c=10D)a=50b=30c=50
(2D若有定義語句:intm[]={5,4,3,2,l},i=4;,則下面對m數組元素的引
用中錯誤的是
()o
A)m[―i]B)m[2*2]C)m[m[0]]D)
(22)下面的函數調用語句中func函數的實參個數是(
func(f2(vl,v2),(v3,v4,v5),(v6,max(v7,v8)));
A)3B)4C)5D)8
(23)若有定義語句:doublex[5]={l.0,2.0,3.0,4.0,5.0),*p=x;則錯誤引
用x數組元素的是
()o
A)*pB)x[5]C)*(p+l)D)*x
(24)若有定義語句:chars[10]="1234567\0\0";,則strlen(s)的值是()。
A)7B)8C)9D)10
(25)以下敘述中錯誤的是()o
A)用戶定義的函數中可以沒有return語句
B)用戶定義的函數中可以有多個return語句,以便可以調用一次返回多個函
數值
C)用戶定義的函數中若沒有return語句,則應當定義函數為void類型
二級C語言程序設計試卷第3頁(共9頁)
D)函數的return語句中可以沒有表達式
(26)以下關于宏的敘述中正確的是()?
A)宏名必須用大寫字母表示
B)宏定義必須位于源程序中所有語句之前
C)宏替換沒有數據類型限制
D)宏調用比函數調用耗費時間
(27)有以下程序
#include<stdio.h>
main()
{inti,j;
for(i=3;i>=l;i-)
{for(j=l;j<=2;j++)printf("%d”,i+j);
printf("\n");
)
)
程序的運行結果是()。
A)234B)432
345543
C)23D)45
3434
4523
(28)有以下程序
^include<stdio.h>
main()
{intx=l,y=2,z=3;
if(x>y)
if(y<z)printf++z);
elseprintf("%d”,++y);
printf("%d\n”,x++);
)
程序的運行結果是()o
A)331B)41C)2D)1
(29)有以下程序
#include<stdio.h>
mainO
{inti=5;
do
{if(i%3=l)
if(i%5==2)
{printf(“榔d",i);break;}
i++;
}while(i!=0);
printf("\n");
)
二級C語言程序設計試卷第4頁(共9頁)
程序的運行結果是()?
A)*7B)*3*5C)*5D)*2*6
(30)有以下程序
^include<stdio.h>
intfun(inta,intb)
{if(b==0)returna;
elsereturn(fun(-a,-b));
)
main()
{printf("%d\n”,fun(4,2));}
程序的運行結果是()o
A)1B)2C)3D)4
(31)有以下程序
#include<stdio.h>
^include<stdlib.h>
intfun(intn)
{int*p;
p=(int*)malloc(sizeof(int));
*p=n;return*p;
}
main()
{inta;
a=fun(10);printf("%d\n”,a+fun(10));
}
程序的運行結果是()o
A)0B)10C)20D)出錯
(32)有以下程序
#include<stdio.h>
voidfun(inta,intb)
{intt;
t=a;a=b;b=t;
)
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0),i;
for(i=0;i<10;i+=2)fun(c[i],c[i+l]);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf(〃\n〃);
)
程序的運行結果是()o
A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,
D)
0,1,2,3,4,5,6,7,8,9,
(33)有以下程序
^include<stdio.h>
structst
二級C語言程序設計試卷第5頁(共9頁)
{intx,y;)data[2]={l,10,2,20};
main()
{structst*p=data;
printf("%d,”,p->y);printf("%d\n”,(++p)->x);
)
程序的運行結果是()o
A)10,1B)20,1C)10,2D)20,2
(34)有以下程序
ttinclude<stdio.h>
voidfun(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-l-i];a[n-l-i]=t;}
)
mainO
{intk[10]={l,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++)printf('%d",k[i]);
printf("\n");
)
程序的運行結果是()o
A)345678B)876543C)1098765D)321678
(35)有以下程序
#include<stdio.h>
^defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i<N;i++)b[i]=a[i][i];
)
main()
{intX[][N]={{1,2,3),{4),{5,6,7,8),{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
)
程序的運行結果是()o
A)1,2,3,4,B)1,0,7,0,C)1,4,5,9,D)3,4,8,10,
(36)有以下程序
#include<stdio.h>
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[0][k];
for(i=l;i<n;i++)if(s[i][k]>m)m=s[i][k];
returnm;
)
二級C語言程序設計試卷第6頁(共9頁)
mainO
{inta[4][4]={{1,2,3,4),{H,12,13,14},{21,22,23,24},{31,32,33,34}};
printf("%d\n”,fun(a,4,0));
)
程序的運行結果是()o
A)4B)34C)31D)32
(37)有以下程序
^include<stdio.h>
mainO
{structSTU{charname[9];charsex;doublescore[2];};
structSTUa={"Zhao",'m),85.0,90.0),b={〃Qian〃,'f',95.0,92.0);
b=a;
printf("%s,%c,%2.Of,%2.0f\n,z,b.name,b.sex,b.score[0],b.scoretl]);
)
程序的運行結果是()o
A)Qian,f,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,90
(38)假定已建立以下鏈表結構,且指針p和q已指向如圖所示的結點:
headabc
datanext
tPtq
則以下選項中可將q所指結點從鏈表中刪除并釋放該結點的語句組是()o
A)(*p),next=(*q).next;free(p);B)p=q->next;free(q);
C)p=q;free(q);D)p->next=q->next;free(q);
(39)有以下程序
#include<stdio.h>
mainO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工日志模板與實際案例分析
- 教育培訓機構疫情期間課程調整計劃
- 新員工入職培訓流程與指導標準
- 初二上學期體育教學創新計劃
- 科研機構人員健康與安全教育計劃
- 礦產資源開發中的鉆探質量保障措施
- 學業評估與反饋計劃
- 2025年中國脲醛樹脂項目商業計劃書
- 家長參與幼小銜接的具體措施
- 2025幼兒園教師個人能力提升計劃
- 自身免疫病及檢驗(免疫學檢驗課件)
- 簡單機械主題單元教學設計
- 部編版語文二年級下冊第八單元整體教學設計教案
- 2023-2024學年湖南省湘潭市小學語文六年級期末通關試卷附參考答案和詳細解析
- 大廈火災自動報警系統更換方案
- 膜科學與技術
- 2022年泗陽縣事業單位考試真題及答案
- 健康管理基礎MOOC答案100分完整版
- 棉花帝國:一部資本主義全球史
- 高危藥物外滲的預防及處理
- 高考英語詞匯3500電子版
評論
0/150
提交評論