表达式1,是初始化条件,如i=0。
表达式2,循环条件,满足就继续执行循环体,不满足就跳出循环。
表达式3,这个一般是改变循环条件的地方,如i++。
参考代码:
#include<stdio.h>
int main()//for循环计算1到10累加和
{
int i,sum=0
for (i=0i<=10i++)
sum+=i
printf("%d\n",sum)
return 0
}
/*
运行结果:
55
*/
②while(表达式){循环体}
表达式的值为真(非0)时,
执行循环体语句。
参考代码:
#include<stdio.h>
int main()//while循环计算1到10累加和
{
int i,sum=0
while(i<=10) {
sum+=i
i++
}
printf("%d\n",sum)
return 0
}
/*
运行结果:
55
*/
③ do{循环体} while(表达式);
先执行循环中的语句,然后再判断表达式是否为真,
如果为真则继续循环;否则,
则终止循环。
参考代码:
#include<stdio.h>
int main()//do……while循环计算1到10累加和
{
int i,sum=0
do{
sum+=i
i++
} while(i<=10)
printf("%d\n",sum)
return 0
}
/*
运行结果:
55
*/
#include "stdio.h"void main()
{
while(1)
{
int b,d
d=scanf("%d",&b)
if(d==1)
break
else
{
fflush(stdin)
printf("again")
}
}
}
这个原因是这样的:当你输入非法时,你的输入将留在输入缓冲区中。这样下一次循环,因为输入缓冲区中仍然有数据,就会再次做判断,判断非法继续留在输入缓冲区中,如此反复。。。。
解决方法也很简单,加一句fflush(stdin)即可。
12345678910111213141516171819
#include <stdio.h>int main(void){int b,a a=b=0 while(a != 11){b=(scanf("%d",&a)) if(b == 1)printf ("%d\n",b) else{printf ("++++%d\n",b) fflush(stdin) } }return 0