《C程序設(shè)計》1~6章測試題
???
?
請在下課前把答案以郵件形式(不要把答案放到附件里)發(fā)到下面的兩個郵箱中:
c-program@hotmail.com, xteacher.he@gmail.com
一、選擇題(每題
1
分,共
40
分)
1.
以下說法中正確的是
【
】
A) C
語言程序總是從第一個的函數(shù)開始執(zhí)行
B)
在
C
語言程序中
,
要調(diào)用的函數(shù)必須在
main()
函數(shù)中定義
C) C
語言程序總是從
main()
函數(shù)開始執(zhí)行
D) C
語言程序中的
main()
函數(shù)必須放在程序的開始部分
2. 下列關(guān)于C語言用戶標(biāo)識符的敘述中正確的是
【
】
A) 用戶標(biāo)識符中可以出現(xiàn)在下劃線和中劃線(減號)
B) 用戶標(biāo)識符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線
C) 用戶標(biāo)識符中可以出現(xiàn)下劃線,但不可以放在用戶標(biāo)識符的開頭
D) 用戶標(biāo)識符中可以出現(xiàn)在下劃線和數(shù)字,它們都可以放在用戶標(biāo)識符的開頭
3. 以下有4組用戶標(biāo)識符,其中合法的一組是
【
】
A) For??????? B) 4d????????? C) f2_G3????????? D) WORD
?? -sub????????? DO???????????? IF??????????????? void
?? Case????????? Size?????????? abc??? ???????????define
?
4. 下面四個選項(xiàng)中,均是不正確的八進(jìn)制數(shù)或十六進(jìn)制數(shù)的選項(xiàng)是
【
】
A) 016? 0x8f??? 018????????????????? B) 0abc? 017??? 0xa
C) 010? -0x11?? 0x16???????????????? D) 0a12? 7ff??? -123
5. 以下正確的敘述是
【
】
A) 在C程序中,每行中只能寫一條語句
B) 若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)
C) 在C程序中,無論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無誤地表示
D) 在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符
6. 下面四個選項(xiàng)中,均是合法的浮點(diǎn)數(shù)的選項(xiàng)是
【
】
A) +1e+1?? 5e-9.4? 03e2????????????? B) -.60?? 12e-4?? -8e5
C) 123e?? 1.2e-.4? +2e-1???????????? D) -e3?? .8e-4?? 5.e-0
7
、已知各變量的類型說明如下:
?????? int k, a, b, w=5;? float x=1.42;
????
則以下不符合C語言語法的表達(dá)式是
【
】
?? A) x%(-3)? ???????? ?? B) w+=-2?? ?
C) k=(a=2, b=3, a+b)? D) a+=a-=(b=4)*(a=3)
8. 以下不正確的敘述是
【
】
A) 在C程序中,逗號運(yùn)算符的優(yōu)先級最低
B) 在C程序中,APH和aph是兩個不同的變量
C) 若a和b類型相同,在計算了賦值表達(dá)式a=b后b中的值將放入a中,而b中的值不變
D) 當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實(shí)型變量只能輸入實(shí)型數(shù)值
9. ?sizeof(double)
是 【
】
。
?A
)一種函數(shù)調(diào)用
???B
)一個雙精度型表達(dá)式
C
)一個整型表達(dá)式
?
D
)一個不合法的表達(dá)式
10.
設(shè)有語句
char a='\72';
則變量
a
【
】 。
A
)包含
1
個字符
B
)包含
2
個字符
C
)包含
3
個字符
D
)說明不合法
?
11.
執(zhí)行下面程序中的輸出語句,
a
的值是【
】
A) 65? ?B) 20 ?C) 15 ?D) 10
main()
{ int a;
printf("%d\n",(a=3*5,a*4,a+5));}
12.
設(shè)有語句
int a=3;
則執(zhí)行了語句
a+=a-=a*a;
后,變量
a
的值是 【
】
?A
)
3 ?B
)
0 ?C
)
9 ?D
)
-12
13. 下列關(guān)于單目運(yùn)算符++、--的敘述中正確的是
【
】
A) 它們的運(yùn)算對象可以是任何變量和常量
B) 它們的運(yùn)算對象可以是char型變量和int型變量,但不能是float型變量
C) 它們的運(yùn)算對象可以是int型變量,但不能是double型變量和float型變量
D) 它們的運(yùn)算對象可以是char型變量、int型變量和float型變量
14.
在
C
語言中,如果下面的變量都是
int
類型,則輸出的結(jié)果是
【
】
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
?A) 7 B) 6 C) 5 D) 4
15.
以下程序的輸出結(jié)果是
【
】
# include <stdio.h>
main()
{ int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -); }
?A) 11,10 B) 9,10 C) 010,9 D) 10,9
16.
已知在
ASCII
代碼中,字母
A
的序號為
65
,以下程序的輸出的結(jié)果是
【
】
。
# include <stdio.h>
main()
{ char c1='A', c2='Y';
printf("%d,%d\n",c1,c2); }
A)
因輸出格式不合法,輸出錯誤信息
B
)
65
,
90 ?C
)
A
,
Y ?D
)
65
,
89
17.
以下程序的輸出結(jié)果是 【
】
。
# include <stdio.h>
# include <math..h>
main()
{ int a=1,b=4,c=2;
float x=10.5 , y=4.0 , z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
pritnf("%f\n",z); }
A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000
18.
以下程序的輸出結(jié)果是 【
】
。
# include <stdio.h>
main()
{ int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c); }
A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
19.
以下程序的輸出結(jié)果是 【
】
。
# include<stdio.h>
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b); }
?A) 6,1 B) 2,1 C) 6,0 D) 2,0
20.
已知字母
A
的
ASCII
碼為十進(jìn)制的
65
,下面程序的輸出是【
】
A) 67,D B) B,C C) C,D D)
不確定的值
main()
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);}
21.printf 函數(shù)中用格式符 %5s 規(guī)定字符串的輸出格式。如果字符串長度大于5,則輸出按方式
【
】
;如果字符串長度小于5,則輸出按方式
【
】
??? A) 從左起輸出該字符串,右補(bǔ)空??? B) 按原字符長從左向右全部輸出
??? C) 右對齊輸出該字符串,左補(bǔ)空??? D) 輸出錯誤信息
22.對如下定義和輸入語句,若使a1, a2, c1, c2 的值分別為10, 20, A, B,正確的數(shù)據(jù)輸入方式是
【
】
。
(注:Δ表示空格,<CR>表示回車,下同)。
??? int a1, a2;? char c1, c2;
scanf (" %d%c%d%c ", &a1, &c1, &a2, &c2);
????? A)? 10A
Δ
20B<CR>B)? 10
Δ
A
Δ
20
Δ
B<CR>?????? C)? 10A20B??? D)? 10A20
Δ
B
23.
由給出的數(shù)據(jù)輸入和輸出形式,程序中輸入輸出語句的正確內(nèi)容是
【
】
?
?? main( )
??? { int x;? float y;
???
? printf (" enter x, y: ")
???
?
輸入語句
???
?
輸出語句 }
???
輸入形式??? enter x, y: 2 3.4
???
輸出形式??? x+y=5.40
??? A) scanf (" %d, %f ", &x, &y); ??????? B)? scanf (" %d%f ", &x, &y);
???
?? printf (" \nx+y=%4.2f ", x+y);? ????? printf (" \nx+y=%4.2f ", x+y);
??? C) scanf (" %d%f ", &x, &y); ????????? ???D)? scanf (" %d%3.1f ", &x, &y);
???
?? printf (" \nx+y=%6.1f ", x+y);????? ??? printf (" \nx+y=%4.2f ", x+y);
24. 以下關(guān)于運(yùn)算符優(yōu)先順序的描述中正確的是
【
】
A) 關(guān)系運(yùn)算符<算術(shù)運(yùn)算符<賦值運(yùn)算符<邏輯運(yùn)算符
B) 邏輯運(yùn)算符<關(guān)系運(yùn)算符<算術(shù)運(yùn)算符<賦值運(yùn)算符
C) 賦值運(yùn)算符<邏輯運(yùn)算符<關(guān)系運(yùn)算符<算術(shù)運(yùn)算符
D) 算術(shù)運(yùn)算符<關(guān)系運(yùn)算符<賦值運(yùn)算符<邏輯運(yùn)算符
25.
語句
while(!E);
中的條件
!E
等價于 【
】
。
?A
)
E = = 0 B
)
E
!
=1 C
)
E
!
=0 D
)
~E
26.
與
y=(x>0?1:x<0?-1:0);
的功能相同的
if
語句是
【
】
A) if (x>0) y=1;????????? B) if(x)
?? else if(x<0) y=-1;??????? if(x>0) y=1;
?? else y=0;???????????????? else if(x<0) y=-1;
C) y=-1?????????????????? D) y=0;
?? if(x)???????????????????? if(x>=0)
?? if(x>0)y=1;?????????????? if(x>0)y=1;
?? else if(x==0) y=0;??????? else y=-1;
??
else y=-1;
27.對下面三條語句(其中s1和s2為內(nèi)嵌語句),正確的論斷是
【
】
??
(1)if (a) s1;else s2;? ????(2) if (a= =0) s2;else s1;?
?
(3)if (a!=0) s1;else s2;
??? A)
三者相互等價
????????? B)
(1)
和
(2)
等價
,
但與
(3)
不等價
??? C)
三者互不等價
????????? D)
(1)
和
(3)
等價
,
但與
(2)
不等價
28.若x,y,z的初值均為1,則執(zhí)行表達(dá)式w =++x || ++ y && ++ z后,x,y,z的值分別為。
A. x=1, y=1, z=2 ?????B. x=2, y=2, z=2????
?C. x=1, y=2, z=1????? D. x=2, y=1, z=1
29
以下的
for
循環(huán)
【
】
。
for(x=0,y=0; (y!=123)&&(x<4); x + + );
A)
是無限循環(huán)
B
)循環(huán)次數(shù)不定
C
)執(zhí)行
4
次
D
)執(zhí)行
3
次
?
?30. ?C
語言中 【
】
。
?A
)
不能使用
do-while
語句構(gòu)成的循環(huán)
B
)
do-while
語句構(gòu)成的循環(huán)必須用
break
語句才能退出
C
)
do-while
語句構(gòu)成的循環(huán),當(dāng)
while
語句中的表達(dá)式值為非零時結(jié)束循環(huán)
D
)
do-while
語句構(gòu)成的循環(huán),當(dāng)
while
語句中的表達(dá)式值為零時結(jié)束循環(huán)
?31.
以下程序的輸出結(jié)果是 【
】
。
# include <stdio.h>
main()
{ int i;
for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*");
else continue; printf("#");}
printf("$\n"); }
A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
?
32.
下面的程序【
】
A)
輸出的是
1 B)
輸出的是
1
和
-2 C
)
輸出的是
3
和
0 D)
是死循環(huán)
main()
{ int x=3;
do {
printf("%d\n",x-=2);
}while(!(--x));}
33.
若執(zhí)行下面的程序時從鍵盤上輸入
5
,則輸出是【
】
A) 7 ?B) 6 ?C) 5 ?D) 4
main()
{ int x;
scanf("%d",&x);
if(x++>5) printf("%d\n",x);
else printf("%d\n",x--);}
34.
下面程序的輸出是【
】
A) -1 B) 0 C) 1 D)
不確定的值
main()
{ int x=100, a=10, b=20, ok1=5, ok2=0;
if(a<b)
if(b!=15)
if(! ok1)
x=1;
else
if(ok2)x=10;
x=-1;
printf("%d\n",x);}
35.
為表示關(guān)系
x
≥
y
≥
z,
應(yīng)使用
C
語言表達(dá)式【
】
A) (x>=y)&&(y>=z) ?????B) (x>=y)AND(y>=z)
C) (x>=y>=z) ??????????D) (x>=y)&(y>=z)
36.
假定有以下變量定義
:
int k=7 ,x=12;
則能使值為
3
的表達(dá)式是
【
】
A ) x%=(K%=5)??? ?B) ?x%=(k-k%5)
C ) x%=k-k%5???? ?D) ?(x%=k)-(k%=5)
37.
以下敘述中正確的是
【
】
A )
輸入項(xiàng)可以是一個實(shí)型常量
,
如
: scanf("%f",3.5);
B)
只有格式控制
,
沒有輸入項(xiàng)
,
也能正確輸入數(shù)據(jù)到內(nèi)存
,
例如
: scanf("a=%d ,b=%d")'
C)
當(dāng)輸入一個實(shí)型數(shù)據(jù)時
,
格式控制部分可以規(guī)定小數(shù)點(diǎn)后的位數(shù)
,
例如
: scanf("%4.2f",&d);
D)
當(dāng)輸入數(shù)據(jù)時
,
必須指明變量地址
,
例如
: scanf("%f",&f);
38.
在下列選項(xiàng)中
,
沒有構(gòu)成死循環(huán)的程序是
【
】
A)
int i =100;
while(1)
{ i=i%100+1;
if (i>100)break;
}
B)
?for (;;);
C)
?int k=1000;
do {--k;} while(k>=1000);
D)
?int s=36;
while (s);--s;
39.
執(zhí)行語句
: for (i=1;i++<4;);
后
,
變量
i
的值是
【
C
】
A) 3 ?B) 4 ?C) 5 ?D)
不定
40.
能正確表示
a
和
b
同時為正或同時為負(fù)的邏輯表達(dá)式是
【
】
A) (a>=0
‖
b>=0)&&(a<0
‖
b<0)
B) (a>0&&b>0)||(a<0&&b<0)
C) (a+b>0)&&(a+b<=0)
D) a*b>0
二、填空題(每空
2
分,共
16
分)
1.
一個
C
源程序中至少應(yīng)包括一個
_____________
2.
結(jié)構(gòu)化程序設(shè)計所規(guī)定的三種基本控制結(jié)構(gòu)是
__________________________
3.
以下程序的功能是
:
人鍵盤上輸入若干個學(xué)生的成績
,
統(tǒng)計并輸出最高成績和最低成績,當(dāng)輸入負(fù)數(shù)時結(jié)束輸入,請?zhí)羁铡?/span>
main()
{ int x, max, min;
scanf("%d",&x);
max=x; min=x;
while(
_____________
)
{ if(x>max) max=x;
if(
_____________
) min=x;
scanf("%d",&x); }
printf("\nmax=%f\nmin=%f\n",max, min); }
4.
設(shè)
i,j,k
均為
int
型變量
,
則執(zhí)行完下面的
for
循環(huán)后
,k
的值為
_____________
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
5.
下面程序的功能是
:
計算
1
到
10
之間奇數(shù)之和及偶數(shù)之和
,
請?zhí)羁铡?/span>
#include <stdio.h>
main()
{ int a, b, c, i;
a=c=0;
for(i=0;i<=10;i+=2)
{ a+=i;
_____________
;
c+=b;
}
printf("
偶數(shù)之和
=%d\n",a);
printf("
奇數(shù)之和
=%d\n",c-11);
}
6.
下面程序的功能是
:
輸出
100
以內(nèi)能被
3
整除且個位數(shù)為
6
的所有整數(shù)
,
請?zhí)羁铡?/span>
#include <stdio.h>
main()
{ int i, j;
for(i=0;
_____________
; i++)
{ j=i*10+6;
if(
_____________
) continue;
printf("%d",j);
}
}
?
?
?
三、閱讀下面的程序,寫出每個程序的運(yùn)行結(jié)果(第
1
題
4
分,第
2,3
題各
5
分,共
14
分)
1.
main()
{ int i=10, j=0;
do
{ j=j+i; i--;}
while(i>2);
printf("%d\n",j);
}
2.
有以下程序:
# include<stdio.h>
main()
{ int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
case 4: putchar(c+2);break; } }
printf("\n"); }
輸入以下數(shù)據(jù),
<CR>
代表一個回車符。
2743<CR>
寫出程序的輸出結(jié)果。
?
3.
main()
{ int a,b;
for (a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1) {b+=3; continue; }
b-=5; }
printf("a=%d\n",a)?;?
}
?
四、程序設(shè)計題(每題
15
分,共
30
分)
1.
判斷
100-200
之間有多少個素數(shù),并輸出所有素數(shù)。
2.
求分?jǐn)?shù)序列:
1/2,2/3,3/5,5/8,8/13/13/21/
……的前
20
項(xiàng)之和。
?
?