习题五
一、单选题
5-1. if语句的控制条件 。
A.只能用关系表达式 B.只能用关系表达式或逻辑表达式 C.只能用逻辑表达式 D.可以用任何表达式
5-2. 以下程序的输出结果是 。 main( )
{ float x=2,y; if (x<0) y=0;
else if (x<5&&!x) y=1/(x+2); else if (x<10) y=1/x; else y=10;
printf(\}
A.0.000000 B. 0.250000 C. 0.500000 D. 10.000000
5-3. 执行以下程序段后,a,b,c的值分别是 。 int a,b=100,c,x=10,y=9; a=(--x==y++)?--x:++y; if(x<9)b=x++; c=y;
A.9,9,9 B.8,8,10 C.9,10,9 D.1,11,10
5-4. 执行下列程序段后,x、y和z的值分别是 。 int x=10,y=20,z=30; if(x>y) z=x;x=y;y=z;
A. 10,20,30 B. 20,30,30 C. 20,30,10 D. 20,30,20
5-4. 以下程序的输出结果是____。 main( )
{ int w=4,x=3,y=2,z=1;
if(x>y&&!(z==w))printf(\else printf(\ }
A.1 B. 2 C. 3 D. 4
5-6. 下面的程序片段所表示的数学函数关系是 。 y=-1;
if (x!=0) { if (x>0) y=1;} else y=0;
-1(x<0) 1(x<0) A. y= 0(x=0) B. y= -1(x=0)
1(x>0) 0(x>0) 0(x<0) -1(x<0)
C. y= -1(x=0) D. y= 1(x=0) 1(x>0) 0(x>0)
5-7. 若执行以下程序时从键盘上输入3□4,则输出结果是 (□表示空格)。 main( ) { int a,b,s;
scanf(\s=a;
if (a
printf(\ }
A. 14 B. 16 C. 18 D. 20
5-9. 若a和b均是整型变量,以下正确的switch语句是 。 A. switch (a/b) B. switch (a*a+b*b); {
case 1:
case 3.2: y=a+b; break ; {
case 3:
case 0: case 5: y=a-b; case 1: y=a+b; break ; }
case 0: y=b-a; break; }
C. switch a D. switch(a+b) {
default : x=a+b; {
case 10: x=a+b; break; case 10 : y=a-b;break; case 11: y=a-b; break; case 11 : y=a*d; break; } }
二、填空题
5-10.if语句控制表达式只有其值为___时表示逻辑\真\,其值为__表示逻辑\假\。
5-11.if (!k) a=3;语句中的!k可以改写为_____,其功能不变。
5-12.表达\若|x|>4,则输出x,否则输出:error!\的if语句是________________。
5-13.能正确表达\当x的值是[1,10]或[200,210]范围内的奇数时,输出x\的if语句是__________________。
5-14.下列程序段的输出是______________。 int i=0,k=100,j=4;
if (i+j) k=(i=j)?(i=1):(i=i+j); printf (\
5-15.下列程序段当a的值为014和0x14时的执行结果分别是_________和__________。 if ( a=0xA || a >12 )
if ( 011&&10==a ) printf (\,a); else printf (\,a); else printf (\,a);
5-16.以下程序的输出是__________。 main( )
{ int a=0, b=0, c=0;
if (a=b+c) printf (\else printf (\}
5-17.下列程序的输出结果是__________。 #include \main ( )
{ int x=1, y=0, a=0, b=0; switch (x)
{ case 1: switch (y) { case 0: a++; break; case 1: b++; break; }
case 2: a++; b++; }
printf (\}
5-18. 若下列程序执行后t的值为4,则执行时输入a,b的值范围是_____________。 #include \main( )
{ int a, b, s=1, t=1;
scanf (\
if (a>0) s+=1; if (a>b) t+=s; else if(a==b) t=5; else t = 2*s;
printf (\}
三、编程题
5-19.以下程序求3个整数中的最小值,程序是否有错?若有错,请改正。 main( ) { int a, b, s, t;
scanf (\if (a>b)&&(a>c)
if b if(a 5-20.给出一个5位数,按逆序输出它的各位数字。如:输入12345,输出54321。 5-21.有一分段函数: x (-5 x+1 (0 分别用: (1)简单if 语句 (2)嵌套的if 语句 (3)if-else语句 (4)switch 语句 编写程序,要求输入x 的值,输出y 的值。 5-22. 编写程序,输入一位学生的生日(年:y0、月:m0、日:d0); 并输入当前的日期(年:y1、月:m1、日:d1); 输出该生的实足年龄。 5-23. 编写程序,输入三角形3个边长,判断它们是否能够构成三角形,若能构成三角形,则输出三角形的类型(等边、等腰或一般三角形)。 5-24. 将下列程序用switch语句改写,并使其功能不变。 main( ) { int x, y; scanf (\if ( x<20 ) y = 1; if ( x<30 ) y = 2; if ( x<40 ) y = 3; if ( x<50 ) y = 4; if ( x<60 ) y = 5; else y = 6; printf(\ } 5-25. 某商店为促销推出如下让利销售方案,其中M为购买金额,N为让利百分比。 M<100, N=0; 100<=M<200, N=1.5%; 200<=M<300, N=2.5%; 300<=M<400, N=3.5%; 400<=M<500, N=4.5%; 500<=M<600, N=5.5% M>600, N=6 %; 编写程序,对输入的购买金额,输出顾客购买金额、实际支付的金额和返还的金额。 5-26.编写程序,计算从1995年元月1日至2000年12月10日共有多少天。闰年的二月有29天。闰年Y满足如下条件:Y能被400整除或Y能被4整除,但不能被100整除。 5-27.编写程序,输入一个不超过5位数的正整数,输出它的个位数,并指出它是几位数。 5-28.编写程序,加密数据。方法:对给定数值,每一位数字均加2,且在[0,9]范围内,若加密后某位数字大于9,则取其被10除的余数。如:6987加密后为8109。 习题六 一、单选题 6-1. 下列程序执行的结果是 。 a=1;b=2;c=3; while(a A. 1,2,0 B. 2,1,0 C. 1,2,1 D. 2,1,1 6-2. 执行语句 for(i=1;i++<4;); 后,i的值是 。 A. 3 B. 4 C. 5 D. 不定 6-3. 下列程序段 。 x=3; do{ y = x--; if ( !y ) { printf(\printf(\ } while(1<=x<=2); A. 输出 ## B. 输出 ##x C. 是死循环 D. 有语法错 6-4. 若int x;则执行下列程序段后输出是 。 for ( x=10; x>3; x-- ) { if ( x%3 ) x--; --x; --x; printf(\}

