【解析】while循环s<=0时退出循环,输入1 2 3 4 5 0,只有printf(“%d\\n”,a); 当输入0时退出循环,switch中当s=1时,执行case 1,case 2,}程序运行后的输出结果是 (B) 由于case 1后面没有break,会继续执行case 2,遇到break, A.- 1 B.0 C.1 D.7
退出switch;当s=2时,执行case 2,退出switch;当s=3时,【解析】此类题一定要注意标点符号的位置,while(a--);该执行case 3,default,由于case 3后面没有break,会继续执行行末尾的分号即为一条空语句,来作为while的循环体。
(2010-09-20)有以下程序 default,遇到break,退出switch;当s=4和5时,执行default,例1:
#include
退出switch。所以输入1时,输出65;输入2时,输出6;输main()
{int a=1,b=2;
入3时,输出64;输入4时,输出5;输入5时,输出6。故
while(a<6) {b+=a;a+=2;b%=10;}
选择A。 printf(“%d,%d\\n”,a,b);
}程序运行后的输出结果是(B) 5.知识点:while,do-while,for三种循环结构
A)5,11 B)7,1 C)7,11
例1:(2011-09-20)有以下程序:
D)6,1
#include
main() { ?
while( getchar()!='\\n');
第 21 页 共 78 页
无限循环
【解析】while(y--)后面的分号是一个空语句,当y--不等于0
}以下叙述中正确的是(C) 时执行空语句,当y—等于0时,执行printf函数输出y值,
当y—等于0时退出循环,此时y值变成-1。
A)此while语句将无限循环
? 如果第一次判断表达式的值为0,则循环一次也不执行。
B) getchar()不可以出现在while语句的条件表达式中 即while循环体最少执行0次。
例4:(2011-03)当执行下列程序时,输入1234567890
C)当执行此while语句时,只有按回车键程序才能继续执
则其中while循环体将执行 0 次。 #include
main()
D)当执行此while语句时,按任意键程序就能继续执行
{char ch;
【解析】while条件表达式getchar()!='\\n'只要输入的字符不是while((ch=getchar()==?0?)) printf(?#?); 回车,就一直执行循环,而循环内是一个空语句,所以按回车} 键程序才能继续执行,选择C。 【解析】ch=getchar(),ch第一次读入的值为?1?,故? 循环体部分可以只有一条空语句,不做任何操作。 while((ch=getchar()==?0?))不成立,循环一次也不执行。 例3:(2010-09-21)有以下程序 ? while循环与switch结构 #include
main() {int y=10;
while(y--);
{ int s;
printf(“y=%d\\n”,y);
scanf(\}程序执行后的输出结果是(B)
A)y=0 B)y=-1 C)y=1 D)while构成
while(s>0) ?
第 22 页 共 78 页
{ switch(s)
{ case1:printf(\case2:printf(\case3:printf(\default:printf(\}
执行case 3,default,由于case 3后面没有break,会继续执行default,遇到break,退出switch;当s=4和5时,执行default,退出switch。所以输入1时,输出65;输入2时,输出6;输入3时,输出64;输入4时,输出5;输入5时,输出6。故选择A。
6.知识点:do-while语句 例1:(2009-09-09)以下程序运行后的输出结果是
scanf(\5 。
#include
main()
} 运行时,若输入1 2 3 4 5 0<回车>,则输出结果是(A) {int a=1,b=7;
do{
A)6566456 B)66656 C)66666
b=b/2; a+=b; }while(b>1); D)6666656
printf(“%d\\n”,a);}
【解析】:while循环s<=0时退出循环,输入1 2 3 4 5 0,只有
? do-while循环体最少执行1次。
(2007-09)若变量已正确定义,有以下程序段 当输入0时退出循环,switch中当s=1时,执行case 1,case 2,例2:i=0;
由于case 1后面没有break,会继续执行case 2,遇到break,do printf(“%d,”,i); while(i++);
退出switch;当s=2时,执行case 2,退出switch;当s=3时,printf(“%d\\n”,i); 其输出结果是 (B)
A)0,0 B)0,1 C)1,1 D)程序进入
第 23 页 共 78 页
无限循环 不能,则输出i+b,如果可以则输出i+c,注意if(i%2)是求表【解析】执行do-while循环,输出i的值为0,接着判断循环
达式i%2是否为true,即其结果是不是非0。所以i为0时,条件i++,i++的值为0,i的值为1,故答案是B。
7.知识点:for语句
输出0+A=A,i为1时,输出1+a=b,i为2时,输出2+A=C,
例1:(2011-03)有以下程序
i为3时,输出3+a=d,i为4时,输出4+A=E,i为5时,输 main() { char b,c; int i;
出5+a=f。故选B。
? 表达式1、表达式2、表达式3可以缺省,但两个分号不能
b='a'; c='A';
省略。
表达式1省略的情况如下: for(i=0;i<6;i++)
例2:(2010-03-21)有以下程序
{ if(i%2) putchar(i+b); #include
main() else putchar(i+c);
{int a=1,b=2;
} for(;a<8;a++) {b+=a;a+=2;}
printf(“%d,%d\\n”,a,b); printf(\
}程序运行后的输出结果是(D)
} 程序运行后的输出结果是(B) A)9,18 B)8,11 C)7,11 D)10,14
? 表达式1和表达式3也可以是逗号表达式。
A)ABCDEF B)AbCdEf C)aBcDeF
例3:(2009-04-20)以下程序段中的变量已正确定义 for(i=0;i<4;i++,i++) D)abcdef
for(k=1;k<3;k++) printf(“*”);程序段的输出结果是 (B)
【解析】:for循环执行6次,每次判断i能否被2整除,如果
A)******** B)**** C)** D)*
第 24 页 共 78 页
【解析】外层for循环,表达式3是逗号表达式,即i自加2。. switch (n) ? for循环与switch结构 例4:(2009-09-29)有以下程序 #include
{int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2)
{case 0:switch(a[i]%2)
{case 0:a[i]++;break; case 1:a[i]--; }break; case 1:a[i]=0; }
for(i=0;i<4;i++) printf(“%d”,a[i]); printf(”\\n”); }程序运行后的输出结果是( C)
A)3 3 4 4 B) 2 0 5 0 C)3 0 40 C)0 3 0 4 例5、(2011-03)有以下程序段 int i,n;
for(i=0;i<8;i++)
{ n=rand()%5;
第 25 页 { case 1: case 3:printf(\ case 2:
case 4:printf(\ case 0:exit(0);
}
printf(\
} 以下关于程序段执行情况的叙述,正确的是(D) A)for循环语句固定执行8次
B)当产生的随机数n为4时结束循环操作 C)当产生的随机数n为1和2时不做任何操作 D)当产生的随机数n为0时结束程序运行
【解析】:rand()是随机产生一个整数,rand()%5即随机得到
0-4这五个数字,for循环控制随机产生8次,当得到1,3时
共 78 页