- 相關(guān)推薦
二級(jí)c語(yǔ)言真題
親愛(ài)的考生們,二級(jí) C 語(yǔ)言真題來(lái)襲!這不僅是一場(chǎng)考試的挑戰(zhàn),更是提升編程能力的機(jī)遇。真題涵蓋多種題型,全面檢驗(yàn)?zāi)愕闹R(shí)掌握程度。認(rèn)真作答,分析每一個(gè)問(wèn)題,讓這次真題演練成為你邁向 C 語(yǔ)言高手之路的重要一步,加油,相信自己能出色發(fā)揮!
一、單選題 ( 本大題 10 道小題 ,每小題 1.5 分,共15 分),從下面題目給出的A、B、C、D四個(gè)可供選擇的答案中選擇一個(gè)正確答案。
1.在C語(yǔ)言中,下列描述正確的是:(_____)。
A.標(biāo)識(shí)符只能由字母和下劃線組成。
B.標(biāo)識(shí)符由任意字符組成。
C.標(biāo)識(shí)符只能由字母、數(shù)字和下劃線組成。
D.標(biāo)識(shí)符只能由字母組成。
2.設(shè)有變量定義:char ch; 若將小寫(xiě)字母a賦給變量ch,正確的表達(dá)式是:(_____)。說(shuō)明:小寫(xiě)字母a的ASCII碼值是97。
A.ch=a
B.ch=97
C.ch=a
D.ch="a"
3.設(shè)有變量定義:int a=345,b=123; 則執(zhí)行語(yǔ)句printf("%2d-%2d",a,b);后,輸出的結(jié)果是:(_____)。
A.45-23
B.34-12
C.345-123
D.222
4.在C語(yǔ)言中關(guān)于函數(shù)的描述,正確的是:(_____)。
A.main函數(shù)的返回類型只能是void
B.函數(shù)可以用return返回多個(gè)值
C.任何一個(gè)函數(shù)都可以有多個(gè)函數(shù)體
D.自定義函數(shù)的形式有無(wú)參函數(shù)和有參函數(shù)
5.設(shè)有變量定義:int a=5,b=8; 則以下各個(gè)選項(xiàng)中,會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤的if語(yǔ)句是:(_____)。
A.if (a>=b) ;
B.if (a==b) a+=b;
C.if (a<=b) { a--; b++; }
D.if (a!=b) a++ else b++;
6.執(zhí)行以下代碼段后,x的結(jié)果是:(_____)。
int x=1;
while (x<=10)
x++ ;
A.9
B.10
C.11
D.有錯(cuò)誤,沒(méi)有輸出結(jié)果
7.設(shè)有變量定義:int a[5]={5,4,3,2,1},*p=a;則執(zhí)行語(yǔ)句 p+=4;后, *p的結(jié)果是(_____)。
A.4
B.3
C.2
D.1
8.已知一結(jié)構(gòu)體類型及變量定義如下:
struct node{
int data;
struct node *next;
} *p,*s,*h;
現(xiàn)已有頭指針h指向的單鏈表如下圖所示,能實(shí)現(xiàn)s指向的結(jié)點(diǎn)插入到p所指結(jié)點(diǎn)后面的語(yǔ)句是:(_____)。說(shuō)明:圖中虛線箭頭表示插入后改變的指針。
A.p->next=s; s->next=p;
B.s->next=p; p->next=s;
C.s->next=p->next; p->next=s;
D.p->next=s; s->next=p->next;
9.設(shè)有變量聲明:char c; 若判斷變量c是否為數(shù)字字符,下列表達(dá)式中,正確的是:(_____)。
A.(c>=0) && (c<=9)
B.(c>=0)||(c<= 9)
C.(c>=0)and (c<=9)
D.(c>=0)&&(c<= 9)
10.以下是Python語(yǔ)言的程序語(yǔ)句,下列選項(xiàng)中與該程序段代碼功能相同的C語(yǔ)言語(yǔ)句是:(____)。
if a>b:
x=a
else:
x=b
A.x=b,a;
B.x=a,b;
C.x=(a>b)?b:a;
D.x=(a>b)?a:b;
二、程序填空題 ( 本大題 2 道小題 ,每空 2.5 分,共20 分)。
1.程序功能:從鍵盤(pán)輸入一個(gè)整數(shù)n(設(shè)0≤n≤99999),統(tǒng)計(jì)各個(gè)位數(shù)中0的個(gè)數(shù),并求出各個(gè)位數(shù)中的最大者。
運(yùn)行示例(60089包含2個(gè)0,最大的位數(shù)為9):
#include
int main(void)
{ int n, count, max=0, t;
count = ____(1)____; //填空(1)
scanf("%d",&n);
do
{ t = n%10;
if (____(2)____) //填空(2)
count = count+1;
else
if (max n = ____(3)____; //填空(3) } while (____(4)____); //填空(4) printf(" count=%d,max=%d
",count,max); return 0; } 2.程序功能:判定二維平面中的三個(gè)點(diǎn)能否構(gòu)成三角形。 運(yùn)行示例: #include #include <____(1)____> //填空(1) struct point { float x; //橫坐標(biāo) floaty; //縱坐標(biāo) }; float length(struct point a,struct point b ) { //求兩點(diǎn)間距離 float len; len=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); return____(2)____; //填空(2) } int main(void) { ____(3)____p[4]; //填空(3) int i; floatlen1,len2,len3; for(i=1;i<4;i++) { printf("輸入第%d點(diǎn)坐標(biāo): ",i); scanf("%f,%f",____(4)____); //填空(4) } len1=length(p[1],p[2]); len2=length(p[2],p[3]); len3=length(p[3],p[1]); if(len1+len2<=len3||len2+len3<=len1||len1+len3<=len2) printf("三點(diǎn)不能構(gòu)成三角形
"); else printf("三點(diǎn)可以構(gòu)成三角形
"); return 0; } 三、操作題 (一)程序調(diào)試題(3小題,第1、2小題各3處錯(cuò),第3小題4處錯(cuò),每改正1處得3分,共30分) 1. 程序調(diào)試題1 調(diào)試要求:下列程序包含3個(gè)錯(cuò)誤,請(qǐng)按題中的功能要求,打開(kāi)C:KSB_2_1.c,調(diào)試并修改該程序(在所修改語(yǔ)句后加“/*_*/”或“//_”字樣的注釋),使其運(yùn)行能得到正確的結(jié)果。修改后的程序仍保存為C:KSB_2_1.c。 功能說(shuō)明:BMI指數(shù)(身體質(zhì)量指數(shù))是世界公認(rèn)的一種評(píng)定肥胖程度的分級(jí)方法,定義如下:BMI指數(shù)=體重÷身高2,其中體重單位為kg,身高單位為m。 參考判別標(biāo)準(zhǔn)如下: 、 偏輕:BMI<18 、 正常:18≤BMI<25 、 超重:25≤BMI<28 、 肥胖:BMI≥28 本程序的功能是:輸入身高和體重,計(jì)算BMI指數(shù),并根據(jù)計(jì)算結(jié)果判定體重情況 運(yùn)行示例: 帶錯(cuò)誤的源程序: #include intmain(void) { float weight,height; printf("請(qǐng)輸入身高和體重:"); scanf("%f%f",&height,&weight); BMI = weight/height*height; if (BMI<18) printf("您的體重偏輕"); else if (BMI<25) printf("您的體重正常"); else if (BMI<28) printf("您的體重超重"); else printf("您已經(jīng)屬于肥胖!!!!); printf("
"); return 0; } 2. 程序調(diào)試題2 調(diào)試要求:下列程序包含3個(gè)錯(cuò)誤,請(qǐng)按題中的功能要求,打開(kāi)C:KSB_2_2.c,調(diào)試并修改該程序(在所修改語(yǔ)句后加“/*_*/”或“//_”字樣的注釋),使其運(yùn)行能得到正確的結(jié)果。修改后的程序仍保存為C:KSB_2_2.c。 功能說(shuō)明:將字符串循環(huán)左移k位,字符串及k的值從鍵盤(pán)輸入。 例如:字符串"abcdefg",假設(shè)k=3,則循環(huán)左移3位后的字符串變?yōu)?defgabc"。 運(yùn)行示例: 帶錯(cuò)誤的源程序: #include intmain(void) { char a[80],b[80];//a用于存放移位前的字符串,b用于存放移位后的字符串 int i,j,k; printf("請(qǐng)輸入待移位的字符串:"); geta); printf("請(qǐng)輸入k的值:"); scanf("%d",&k); for (i=k;a[i]!=/0;i++) b[i-k] = a[i]; j = i-k; for (i=0;i b[j] = a[i]; b[j-1] =