1、输出0~9之间的数
#include <stdio.h>
int main()
{
int ch=0;
while((ch=getcharr())!=EOF)
{
if(ch<'0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
for循环
使用while循环时,循环变量初始、循环判断、循环调整,可能会离得比较远,不容易修改,如下;所以就使用了for循环
#include <stdio.h>
int main()
{
int i=0;//初始化
//...
while(i<10)//判断
{
//...
i++;//循环调整
}
return 0;
}
for语法
for(表达式1;表达式2;表达式3)
循环语句;
表达式1是 初始化部分,用于初始化循环变量的
表达式2是 条件判断部分
表达式3是 调整部分
建议:
1、不可在for循环体内(循环语句)修改循环变量,防止for循环失去控制
eg:在循环语句中写上 if(i=5),直接改变了i的值
2、建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
eg:前闭后开区间如:for(i=0;i<10;i++);
前后都闭区间如:for(i=0;i<=9;i++);
上面两个是等价的,推荐第一个是由于 第一个方便看出进行了10次循环,其他无关
eg:
#include <stdio.h>
int main()
{
int i=0;
//初始化 判断 调整
for(i=1; i<=10; i++)
--- ----- ---
1 2 4
{
printf("%d ",i);
----------------
3
}
//先走第1步(初始)——>第2步(判断)--判断为真--->第3步 第4步
(一直2、3、4步循环),直到----判断为假--->跳出
return 0;
}
或
#include <stdio.h>
int main()
{
for(int i=1;i<=10;i++)
{
printf("%d ",i);
}
return 0;
}
break、continue可以在for循环中使用,且与while循环中的作用一致
break:跳出循环;
continue:跳到循环调整部份处
使用continue时,while循环会卡死,但for不会;由于while循环中i++在循环语句中,而for循环i++在调整语句中,无论如何都会执行调整语句
如while:
while(i<=10)
{
if(5==i)
continue;//当i=5时,直接跳到while条件判断部份,不会执行i++,
i一直是5,就一直在死循环
printf("%d ",i);
i++;
}
#include <stdio.h>
int main()
{
for(int i=1;i<=10;i++)
{
if(5==i)
break/continue; //
printf("%d ",i);
}
return 0;
}
1、for循环的初始化、调整、判断都可以省略;但是——for循环的判断部分如果被省略,那判断条件就是:恒为真,就一直会执行
#include <stdio.h>
int main()
{
for(;;)
{
printf("hehe\n");
}
return 0;
2、如果不是非常熟练,不要随便省略代码
如下正常是会打印100个“hehe”,如省略两个图示,就只会打印10个,是由于i=0,j循环时,j循环结束,j=10并未清零,之后i=2、3、4...10时j都不会再循环,所以只有1*10个“hehe”
#include <stdio.h>
int main()
{
int i=0;
int j=0;
for(i=0;i<10;i++) //省略i=0
{
for(j=0;j<10;j++)//省略j=0
{
printf("hehe\n");
}
}
return 0;
}
例:下面不进行循环,由于条件判断语句:k=0, 直接k赋予/赋值 0,0为假,直接跳出循环
#include <stdio.h>
int main()
{
int i=0;
int k=0;
for(i=0,k=0;k=0;i++,k++)//条件判断语句:k=0,
直接k赋予/赋值 0,0为假,直接跳出循环
k++;
return 0;
}