A.continue语句只结束本次循环,而不是终止整个循环的执行。
C.break语句只能用于循环语句和switch语句之中,而不能单独使用。continue只能出现在循环语句中。
D.执行break语句将立即终止最内层循环,而执行continue只结束一次它所在的最内层循环,而不是立即终止循环。
B.不可交叉定义
C.do……while循环至少执行一次
D.循环体内是单条语句不需要花括号
for(表达式1;表达式2;表达式3)语句;
表达式2空白,不需要做任何的判断,执行循环体。
除了三种循环语句,还可以用if语句和goto语句结合实现循环
三种循环语句可以相互嵌套
表达式只要不等于0即为真。
本题考查getchar函数以及C中混合运算时运算的优先级,while后的表达式关心逻辑值的真假
while(k=1)k++;
while后的表达式是赋值表达式k=1每次判断时k的值都被赋值为1,1不等于0为真,所以是死循环。
B、do-while后表达式不满足条件,也会退出循环
C、①while后表达式为0的时候结束循环②循环体中遇到break结束循环
B.continue语句只结束本次循环,而不是终止整个循环的执行。
D.break语句是结束整个循环过程,不在判断执行循环的条件是否成立
B.while和do-while都可以从外部转到循环体内
A.i=i%100+1最大为100,不满足i>100,不能执行break语句,无法跳出进入死循环
C.k=1001,k>1000;k=1002,k>1000;……死循环
D.s自减运算,没有构成死循环。
答案选C,循环体一次也不被执行。
自减运算后置,先将n没有减1之前的值输出为3,再将n的值减1变为2,!2为假,循环只执行一次。
#include<stdio.h>
int main()
{
char ch;
for(;(ch=getchar())!='\n';)
printf("%c",ch);
return 0;
}
回车后放入内存缓冲区,代码从内存缓冲区取字符,依次输出,遇到回车停止
int不特别声明,默认是有符号的;unsigned j是无符号整型变量j,int省写;j没有负数的概念 ,A会进行无限循环
#include<stdio.h>
int main()
{
int i;
for(i=1;i<6;i++)
{
if(i%2)printf("*");
else printf("#");
}
return 0;
}
i%2和(i%2)!=0等价,for循环执行5次,不可能输出6个符号。
#include<stdio.h>
int main()
{
int m=1,n,i;
for(i=0;i<5;i++)
{
int m=1;
m++;
if(i==4)n=m;
}
printf("%d,%d",m,n);
return 0;
}
(超范围了,涉及局部变量和全局变量)for循环内定义了同名的变量m,在复合语句(花括号)内起作用,第四行m在6-9行不起作用,同名遮挡。两个m的存储空间不同,第10行的m指的是初始的第四行的m,始终没有改变。
#include<stdio.h>
int main()
{
int i;
for(i='a';i<'f';i++,i++)
printf("%c",i-'a'+'A');
return 0;
}
表达式2,i自增两次相当于i=i+2
#include<stdio.h>
int main()
{
int f,f1,f2,i;
f1=1;
f2=1;
printf("%2d%2d",f1,f2);
for(i=3;i<=5;i++)
{
f=f1+f2;
printf("%2d",f);
f1=f2;
f2=f;
}
return 0;
}
斐波那契数列,格式输出,先输出f1,f2,再三次循环
#include<stdio.h>
int main()
{
int n=5;
do
{
switch(n%2)
{
case 0:n--;break;
case 1:n--;continue;
}
n--;
printf("%d,",n);
}
while(n>0);
return 0;
}
#include<stdio.h>
int main()
{
int i,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++)
m=m%j;
printf("%d\n",m);
return 0;
}
i=3,j=3,55%3=1;j=4,不满足
#include<stdio.h>
int main()
{
int x=10;
while(x--);
printf("x=%d\n",x);
return 0;
}
while(); 循环体为空语句
后置自减,x=0作为while后面判断的条件不再执行循环体,while结束的时刻x再减1变为-1
#include<stdio.h>
int main()
{
int i,j,n=0;
for(i=0;i<2;i++)
{
n++;
for(j=0;j<=3;j++)
{
if(j%2)
continue;
n++;
}
n++;
}
printf("n=%d,",n);
return 0;
}
j=0,j%2=0,执行n++;当j%2≠0,执行continue,不执行n++
#include<stdio.h>
int main()
{
int x=2;
do
{
printf("%d",!x-2);
}
while(--x);
return 0;
}
!(逻辑非)单目运算优先级比减法运算符高,x=2逻辑值为真,!x逻辑值为假,提供的值为0
第一次 --x为1,真;第二次,--x为0,假
#include<stdio.h>
int main()
{
int n=12345,d;
while(n!=0)
{
d=n%10;
printf("%d",d);
n=n/10;
}
return 0;
}
倒序输出
本人初学,如有错误,还望批评指正!