第五章 选择结构 循环结构
1. 能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是 。(1级)
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)
C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)
D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
2. main( )
{ int x=5,a=0,b=0;
if(x=a+b) printf(“** **\n”);
else printf(“## ##\n”);
以上程序 。(1级)
A)有语法错,不能通过编译 B)通过编译,但不能连接
C)输出** ** D)输出## ##
3. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 。(1级)
main( )
{ int x;
scanf(“%d”,&x);
if(x++>5) printf(“%d”,x);
else printf(“%d\n”,x--);
}
A)7和5 B)6和3 C)7和4 D)6和4
4. 假定所有变量均已正确说明,下列程序段运行后x的值是 。(1级)
a=b=c=0;x=35;
if(!a) x=-1;
else if(b);
if(c) x=3;
else x=4;
A)34 B)4 C)35 D)3
5. 能表示整数x符合下面两个条件的语句是 。
(1)“能被4整除,但不能被100整除”.(2)能被4整除,又能被400整除.
A)(x%4==0&&x%100!=0)||x%400==0
B)(x%4==0||x%100!=0)&&x%400==0
C)(x%4==0&&x%400!=0)||x%100==0
D)(x%100==0||x%4!=0)&&x%400==0
6. 若I为整型变量,则下列程序段的运行结果为 。(03试题)
I=322;
if(I%2==0) printf(“>”)
else printf(“*****”);
A)> B)>*****
C)***** D)有语法错误,无法输出结果
7. 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为: 。
if (x>y||x<z&&y>z)
z=x; x=y; y=z;
A)x=50, y=80, z=80 B)x=50, y=30, z=30
C)x=30, y=50, z=80 D)x=80, y=30, z=50
8. 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为: 。
if (x>y||x<z&&y>z)
{ z=x; x=y; y=z; }
A)x=50, y=80, z=80 B)x=50, y=30, z=30
C)x=30, y=50, z=80 D)x=80, y=30, z=50
9. 在C的if语句中,可用作判断的表达式是: 。
A)关系表达式 B)逻辑表达式
C)算术表达式 D)任意表达式
10. 在C语言中,多分支选择结构语句为:
switch(c)
{ case 常量表达式1:语句1;
……
case 常量表达式n-1:语句n-1;
default 语句n;}
其中括号内表达式c的类型: 。
A)可以是任意类型 B)只能为整型
C)可以是整型或字符型 D)可以为整型或实型
11. 若x=3,y=z=4,则下列表达式的值分别为 。
(1)(z>=y>=x)?1:0
(2)y+=z,x*=y
A)0 24 B)1 8 C)0 8 D)1 12
12. 程序段如下
int k=-20;
while(k=0) k=k+1;
则以下说法中正确的是 。
A)while循环执行20次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
13. 程序段如下
int k=1;
while(!k==0) {k=k+1;printf("%d\n",k);}
说法正确的是 。 )
A)while循环执行2次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
14. 在下列程序中,while循环的循环次数是 。
main( )
{ int i=0;
while(i<10)
{if(i<1) continue;
if(i= =5) break;
i++; }
......
}
A)1 B)10 C)6 D)死循环、不能确定次数
15. 程序段如下
int k=0; while(k++<=2) printf("%d\n",k);
则执行结果是 。
A)2 B)3 C)4 D)无结果
16. 执行下面的程序后,a的值为 。
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;
}
}
A)7 B)8 C)9 D)10
17. 以下程序的输出结果 。
main()
{
int x=3;
do
{printf("%3d",x-=2);
}while(--x);
}
A)1 B)30 3 C)1 -2 D)死循环
18. 以下程序的输出结果是 。
main()
{int i;
for(i=1;i<=5;i++)
{if(i%2)printf("#");
else continue;
printf("*");
}
printf("$\n");
}
A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$
二、填空题
1. 设有程序片段如下:
switch(class)
{case 'A':printf("GREAT!\n");
case 'B':printf("GOOD!\n");
case 'C':printf("OK! \n");
case 'D':printf("NO!\n");
default:printf("ERROR!\n");
}
若class的值为'C',则输出结果是 。
2. 以下程序段的运行结果是 。
int x=1,y=0;
switch(x)
{case 1:
switch(y)
{
case 0:printf("x=1 y=0\n");break;
case 1:printf("y=1\n");break;
}
case 2:printf("x=2\n");
}
3. 根据以下if语句写出与其功能相同的switch语句(x的值在0~100之间)。
if语句:
if(x<60) m=1;
else if(x<70) m=2;
else if(x<80) m=3; C 语言程序设计习题集 29
else if(x<90) m=4;
else if(x<100) m=5;
switch语句:
switch( (1) )
{
(2) m=1;break;
case 6:m=2;break;
case 7:m=3;break;
case 8:m=4;break;
(3) m=5;
}
4. 写出结果:--------
#include<stdio.h>
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++;break;
}
printf(“%d,%d\n”,a,b);
}
三、编程:
1. 编写程序,判断某一年是否是闰年 p106
main( )
{int year,leap;
scanf(“%d”,&year);
if(year%4= =0)
{if(year%100= =0)
{if(year%400= =0)
leap=1;
else leap=0;
}
else leap=1;
}
else leap=0;
if(leap)
printf(“%d is ”,year);
else printf(“%d is not ”,year);
printf(“ a leap year\n”);
}
2. switch语句表示范围编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为‘A’;80~89分为 ‘B’;70~79分为‘C’;60~69分为‘D’;60分以下为 ‘E’。(switch 实现)p111 5.6
3.输入一个不多于4位的整数,求出它是几位数,并逆序输出各位数字。P112 5.7
main( )
{int num,a,b,c,d,p;
scanf(“%d”,&num);
if(num<=9999&&num>999) p=4;
else if(num>99) p=3;
else if(num>9) p=2;
else if(num>0) p=1;
printf(“位数是:%d\n”,p);
a=num/1000;
b=num/100%10;
c=num/10%10;
d=num%10;
switch(p)
{case 4:printf(“%d%d%d%d\n”,d,c,b,a);
case 3:printf(“%d%d%d \n”,d,c,b);
case 2:printf(“%d%d\n”,d,c);
case 1:printf(“%d \n”,d);
}
}
4. 判断m是否素数
素数:除了1和它本身外,不能被其它整除
所以 只需循环判断m是否能够被2到m-1之间的数整除
可缩小范围,只需判断m是否能够被2到根号m之间的数整除即可。(设一个标志位flag, flag等于0,代表是素数,flag等于1,代表不是素数)
5. 请编写一程序,打印出九九乘法口诀表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
第i行 1*i 2*i 3*i ……. (i-1)*i i*i
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论