- 2005年上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題 推薦度:
- 相關(guān)推薦
2006上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題
一、選擇題((1)一(10)每題2分,(11)一(50)每題1分,共60分)下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請(qǐng)將正確選項(xiàng)涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是
A.自頂向下
B.逐步求精
C.模塊化
D.可復(fù)用
(2)兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度稱為
A.耦合度
B.內(nèi)聚度
C.復(fù)雜度
D.數(shù)據(jù)傳輸特性
(3)下列敘述中正確的是
A.軟件測(cè)試應(yīng)該由程序開發(fā)者來完成
B.程序經(jīng)調(diào)試后一般不需要再測(cè)試
C.軟件維護(hù)只包括對(duì)程序代碼的維護(hù)
D.以上三種說法都不對(duì)
(4)按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是
A.隊(duì)列
B.棧
C.雙向鏈表
D.二叉樹
(5)下列敘述中正確的是
A.線性鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
B.棧與隊(duì)列是非線性結(jié)構(gòu)
C.雙向鏈表是非線性結(jié)構(gòu)
D.只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)
(6)對(duì)如下二叉樹
ABDECF
進(jìn)行后序遍歷的結(jié)果為
A.ABCDEF
B.DBEAFC
C.ABDECF
D.DEBFCA
(7)在深度為7的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為
A.32
B.31
C.64
D.63
(8)“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是
A.一對(duì)一
B.一對(duì)多
C.多對(duì)一
D.多對(duì)多
(9)在E-R圖中,用來表示實(shí)體的圖形是
A.矩形
B.橢圓形
C.菱形
D.三角形
(10)數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是
A.DB包含DBS和DBMS
B.DBMS包含DB和DBS
C.DBS包含DB和DBMS
D.沒有任何關(guān)系
(11)以下不合法的用戶標(biāo)識(shí)符是
A.j2_KEY
B.Double
C.4d
D._8_
(12)以下不合法的數(shù)值常量是
A.011
B.1e1
C.8.0E0.5
D.0xabcd
(13)以下不合法的字符常量是
A.′\018′
B.′\"′
C.′\\′
D.′\xcc′
(14)表達(dá)式3.6-5/2+1.2+5%2的值是
A.4.3
B.4.8
C.3.3
D.3.8
(15)以下能正確定義字符串的語句是
A.char str[]={′\064′};
B.char str="kx43";
C.char str=";
D.char str[]="\0";
(16)以下數(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};
(17)若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)
A.getc()
B.gets()
C.getchar()
D.scanf()
(18)以下四個(gè)程序中,完全正確的是
A.#include
B.#include
main();main()
{/*programming*/{/*/ programming /*/
printf("programming!\n");} printf("programming!\n");}
C.#include
D. include
main()main()
{/*/*programming*/*/{/*programming*/
printf("programming!\n");} printf("programming!\n");}
(19)若有定義:float x=1.5;int a=1,b=3,c=2;則正確的switch語句是
A.switch(x)
B.switch((int)x);
{case 1.0:printf("*\n"); {case 1:printf("*\n");
case 2.0:printf("**\n");} case 2:printf("**\n");}
C.switch(a+
B.
D.switch(a+
B.
{case 1:printf("*\n");{case 1:printf("*\n");
case 2+1:printf("**\n");}case c:printf("**\n");}
(20)若各選項(xiàng)中所用變量已正確定義,函數(shù)fun中通過return語句返回一個(gè)函數(shù)值,以下選項(xiàng)中錯(cuò)誤的程序是
A.main()
B.float fun(int a,int
B.{……}
{……x=fun(2,10);……}main()
float fun(int a,int
B.{……} {……x=fun(i,j);……}
C.float fun(int,int);
D.main()
main() {float fun(int i,int j);
{……x=fun(2,10);……} ……x=fun(i,j); ……}
float fun(int a,int
B.{……}float fun(int a,int
B.{……}
(21)在以下給出的表達(dá)式中,與while(E)中的(E)不等價(jià)的表達(dá)式是
A.(!E==0)
B.(E>0‖E<0)
C.(E==0)
D.(E!=0)
(22)要求通過while循環(huán)不斷讀入字符,當(dāng)讀入字母N時(shí)結(jié)束循環(huán)。若變量已正確定義,以下正確的程序段是
A.while((ch=getchar())!=′N′)printf("%c",ch);
B.while(ch=getchar()!=′N′)printf("%c",ch);
C.while(ch=getchar()==′N′)printf("%c",ch);
D.while((ch=getchar())==′N′)printf("%c",ch);
(23)已定義以下函數(shù)
int fun(int *p)
{return *p;)
fun函數(shù)返回值是
A.不確定的值
B.一個(gè)整數(shù)
C.形參P中存放的值
D.形參P的地址值
(24)若有說明語句:double *p,a;則能通過scanf語句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是
A.*p=&a; scanf("%1f",p);
B.*p=&a; scanf("%f",p);
C.p=&a; scanf("%1f",*p);
D.p=&a; scanf("%1f",p);
(25)現(xiàn)有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向一個(gè)鏈表中連續(xù)的三個(gè)結(jié)點(diǎn)。
struct node
{char data;
struct node *next; }*p,*q,*r;
現(xiàn)要將q和r所指結(jié)點(diǎn)交換前后位置,同時(shí)要保持鏈表的連續(xù),以下不能完成此操作的語句是
A.q->next=r->next;p->next=r;r->next=q;
B.p->next=r;q->next=r->next;r->next=q;
C.q->next=r->next;r->next=q;p->next=r;
D.r->next=q;p->next=r;q->next=r->next;
(26)有以下程序段
struct st
{int x;int *y;}*pt;
int a[]={l,2},b[]={3,4};
struct st c[2]={10,a,20,b};
pt=c;
以下選項(xiàng)中表達(dá)式的值為11的是
A.*pt->y
B.pt->x
C.++pt->x
D.(pt++)->x
(27)設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為
A.EOF
B.非0值
C.0
D.NULL
(28)設(shè)有以下語句
int a=1,b=2,c;
c=a^(b<<2);
執(zhí)行后,C的值為
A.6
B.7
C.8
D.9
(29)有以下程序
#include
main()
{char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運(yùn)行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結(jié)果是
A.1267
B.1256
C.1278
D.1245
(30)有以下程序
main()
{int y=10;
while(y--);printf("y=%d\n",y);
}
程序執(zhí)行后的輸出結(jié)果是
A.y=0
B.y=-1
C.y=1
D.while構(gòu)成無限循環(huán)
(31)有以下程序
main()
{int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,
D.;
}
程序輸出
A.0,1,2,0
B.0,0,0,3
C.1,1,2,0
D.編譯有錯(cuò)
(32)有以下程序
main()
{int i,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序執(zhí)行后的輸出結(jié)果是
A.x=4
B.x=8
C.x=6
D.x=12
(33)有以下程序
int fun1(double a){return a*=a;}
int fun2(double x,double y)
{double a=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+
B.;
}
main()
{double w;w=fun2(1.1,2.0);……}
程序執(zhí)行后變量w中的值是
A.5.21
B.5
C.5.0
D.0.0
(34)有以下程序
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf("%d",t[2-i][i]);
}
程序執(zhí)行后的輸出結(jié)果是
A.7 5 3
B.3 5 7
C.3 6 9
D.7 5 1
(35)有以下程序
fun(char p[][10])
{int n=0,i;
for(i=0;i<7;i++)
if(p[i][0]==′T′)n++;
return n;
}
main()
{char str[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
printf("%d\n",fun(str));
}
程序執(zhí)行后的輸出結(jié)果是
A.1
B.2
C.3
D.0
(36)有以下程序
main()
{int i,s=0,t[]={l,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序執(zhí)行后的輸出結(jié)果是
A.45
B.20
C.25
D.36
(37)有以下程序
void fun1(char *p)
{char *q;
q=p;
while(*q!=′\0′)
{ (*q)++; q++; )
}
main()
{char a[]={"Program"), *p;
p=&a[3];fun1(p);printf("%s\n",a);
}
程序執(zhí)行后的輸出結(jié)果是
A.Prohsbn
B.Prphsbn
C.Progsbn
D.Program
(38)有以下程序
void swap(char *x,char *y)
{char t;
t=*x; *x=*y; *y=t;
}
main()
{char *s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);
}
程序執(zhí)行后的輸出結(jié)果是
A.123,abc
B.abc,123
C.1bc,a23
D.321,cba
(39)有以下程序
int fun(int n)
{if(n==1)return 1;
else
return(n+fun(n-1));
}
main()
{int x;
scanf("%d",&x); x=fun(x);printf("%d\n",x);
}
執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是
A.55
B.54
C.65
D.45
(40)有以下程序
int fun(int x[],int n)
{static int sum=0,i;
for(i=0;ireturn sum;
}
main()
{int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);printf("%d\n",s);
}
程序執(zhí)行后的輸出結(jié)果是
A.45
B.50
C.60
D.55
(41)有以下程序
main()
{union
{char ch[2];
int d;
}s;
s.d=0x4321;
printf("%x,%x\n",s.ch[0],s.ch[1]);
}
在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是
A.21,43
B.43,21
C.43,00
D.21,00
(42)有以下程序
main()
{char *p[]={"3697","2584"};
int i,j;long num=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!=′\0′)
{if((p[i][j]-′0′)%2)num=10*num+p[i][j]-′0′;
j+=2;
}
}
printf("%d\n",num);
}
程序執(zhí)行后的輸出結(jié)果是
A.35
B.37
C.39
D.3975
(43)執(zhí)行以下程序后,test.txt文件的內(nèi)容是(若文件能正常打開)
#include
main()
{FILE *fp;
char *s1="Fortran",*s2="Basic";
if((fp=fopen("test.txt","wb”))==NULL)
{printf("Can′t open test.txt file\n");exit(1);}
fwrite(s1,7,1,fp); /*把從地址s1開始的7個(gè)字符寫到fp所指文件中*/
fseek(fp,0L,SEEK_SET); /*文件位置指針移到文件開頭*/
fwrite(s2,5,1,fp);
fclose(fp);
}
A.Basican
B.BasicFortran
C.Basic
D.FortranBasic
(44)以下敘述中錯(cuò)誤的是
A.C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序
B.C程序經(jīng)過編譯、連接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件
C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個(gè)文本文件中
D.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令
(45)以下敘述中錯(cuò)誤的是
A.算法正確的程序最終一定會(huì)結(jié)束
B.算法正確的程序可以有零個(gè)輸出
C.算法正確的程序可以有零個(gè)輸入
D.算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果
(46)以下敘述中錯(cuò)誤的是
A.C程序必須由一個(gè)或一個(gè)以上的函數(shù)組成
B.函數(shù)調(diào)用可以作為一個(gè)獨(dú)立的語句存在
C.若函數(shù)有返回值,必須通過return語句返回
D.函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參
(47)設(shè)有以下定義和語句
char str[20]="Program",*p;
p=str;
則以下敘述中正確的是
A.*p與str[0]的值相等
B.str與p的類型完全相同
C.str數(shù)組長度和p所指向的字符串長度相等
D.數(shù)組str中存放的內(nèi)容和指針變量p中存放的內(nèi)容相同
(48)以下敘述中錯(cuò)誤的是
A.C程序中的#include和#define行均不是C語句
B.除逗號(hào)運(yùn)算符外,賦值運(yùn)算符的優(yōu)先級(jí)最低
C.C程序中,j++;是賦值語句
D.C程序中,+、-、*、/、%號(hào)是算術(shù)運(yùn)算符,可用于整型和實(shí)型數(shù)的運(yùn)算
(49)以下敘述中正確的是
A.預(yù)處理命令行必須位于C源程序的起始位置
B.在C語言中,預(yù)處理命令行都以"#"開頭
C.每個(gè)C程序必須在開頭包含預(yù)處理命令行:#include
D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能
(50)以下敘述中錯(cuò)誤的是
A.可以通過typedef增加新的類型
B.可以用typedef將已存在的類型用一個(gè)新的名字來代表
C.用typedef定義新的類型名后,原有類型名仍有效
D.用typedef可以為各種類型起別名,但不能為變量起別名
二、填空題(每空2分,共40分)請(qǐng)將每一個(gè)空的正確答案寫在答題卡【1】至【20】序號(hào)的橫線上,答在試卷上不得分。
(1)對(duì)長度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為【1】。
(2)在面向?qū)ο蠓椒ㄖ,?】描述的是具有相似屬性與操作的一組對(duì)象。
(3)在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個(gè)二維表稱為一個(gè)【3】。
(4)程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【4】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
(5)數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【5】。
(6)若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請(qǐng)寫出完整的的輸出語句【6】。
(7)以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時(shí),確定a、b、c能構(gòu)成三角形的條件是需同時(shí)滿足三個(gè)條件:a+b>c,a+c>b,b+c>a。請(qǐng)?zhí)羁铡?/p>
main()
{float a,b,c;
scanf("%f%f%f",&a,&b,&
C.;
if(【7】)printf("YES\n");/*a、b、c能構(gòu)成三角形*/
else printf("NO\n");/*a、b、c不能構(gòu)成三角形*/
}
(8)以下程序的輸出結(jié)果是【8】 。
main()
{int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1];
printf("%d\n",s);
}
(9)當(dāng)運(yùn)行以下程序時(shí),輸入abcd,程序的輸出結(jié)果是:【9】。
insert(char str[])
{int i;
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*i-1]=′*′;i--;}
printf("%s\n",str);
}
main()
{char str[40];
scanf("%s",str);insert(str);
}
(10)下面程序的運(yùn)行結(jié)果是:【10】。
fun(int t[],int n)
{int i,m;
if(n==1)return t[0];
else
if(n>=2){m=fun(t,n-1); return m; }
}
main()
{int a[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
}
(11)現(xiàn)有兩個(gè)C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:
#include
#include "myfun.c"
main()
{fun();printf("\n");}
myfun.c文件如下:
void fun()
{char s[80],c; int n=0;
while((c=getchar())!=′\n′) s[n++]=c;
n--;
while(n>=0) printf("%c",s[n--]);
}
當(dāng)編譯連接通過后,運(yùn)行程序T18時(shí),輸入Thank!則輸出結(jié)果是:【11】。
(12)以下函數(shù)fun的功能是返回str所指字符串中以形參c中字符開頭的后續(xù)字符串的首地址,例如:str所指字符串為:Hello!,c中的字符為e,則函數(shù)返回字符串:ello!的首地址。若str所指字符串為空串或不包含c中的字符,則函數(shù)返回NULL。請(qǐng)?zhí)羁铡?/p>
char *fun(char *str,char
C.
{ int n=0; char *p=str;
if(p!=NULL)
while(p[n]!=c&&p[n]!=′\0′)n++;
if(p[n]==′\0′) return NULL;
return(【12】);
}
(13)以下程序的功能是:輸出100以內(nèi)(不含100)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)?zhí)羁铡?/p>
main()
(int i,j;
for(i=0;【13】;i++)
{j=i*10+6;
if(【14】)continue;
printf("%d",j);
}
}
(14)以下isprime函數(shù)的功能是判斷形參a是否為素?cái)?shù),是素?cái)?shù),函數(shù)返回1,
否則返回0。請(qǐng)?zhí)羁?/p>
int isprime(int a)
{int i;
for(i=2;i<=a/2;i++)
if(a%i==0)【15】;
【16】;
}
(15)以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形
字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:
A B C D E
F G H I
J K L
M N
O
請(qǐng)?zhí)羁胀瓿稍摮绦颉?/p>
main()
{int i,j,n; char ch=′A′;
scanf("%d",&n);
if(n<11)
{for(i=1;i<=n;i++)
{for(j=1; j<=n-i+1;j++)
{printf("%2c",ch);
【17】;
}
【18】;
}
}
else printf("n is too large!\n")
printf("\n");
}
(16)以下程序中函數(shù)fun的功能是:構(gòu)成一個(gè)如圖所示的帶頭結(jié)點(diǎn)的單向鏈表,在結(jié)點(diǎn)的數(shù)據(jù)域中放入了具有兩個(gè)字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點(diǎn)中的字符串。請(qǐng)?zhí)羁胀瓿珊瘮?shù)disp。
#include
typedef struct node/*鏈表結(jié)點(diǎn)結(jié)構(gòu)*/
{char sub[3];
struct node *next;
}Node;
Node fun(char s) /*建立鏈表*/
{…… }
void disp(Node *h)
{Node *p;
p=h->next;
while(【19】)
{printf("%s\n",P->su
B.; p=【20】; }
}
main()
{Node *hd;
hd=fun();disp(h
D.;printf("\n");
}
2006年4月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言筆試試題答案
【上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題】相關(guān)文章:
2005年上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題03-02
2006上半年全國計(jì)算機(jī)二級(jí)C++筆試真題11-17
2005年上半年全國計(jì)算機(jī)二級(jí)C++筆試真題03-02
全國計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試真題10-11
全國計(jì)算機(jī)二級(jí)考試《C語言》真題練習(xí)及答案09-20