一、while语句
while语句用来实现“当型”循环结构。一般形式为:
while(表达式)
{
语句
}
若条件为真,继续循环;条件为假(0),循环结束。while(1)是死循环的写法。通常不知道其循环次数
二、do...while语句
先执行循环体,再判断循环条件是否成立。其一般形式为
do
{ 循环体语句;}
while(条件/表达式);
对于do...while语句来讲,循环的复合语句至少能执行一次。(因其先执行,再判断)
对while语句来说,复合语句可能一次也不能执行。
三、for语句循环
c语言中最灵活的语句,不仅可用于循环次数确定的情况,还可用于循环次数不确定只给出循环结束条件的情况。它完全可以代替while语句。其一般形式为:
for(表达式1;表达式2;表达式3)
{
语句;
}
表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。
表达式2为循环条件;
表达式3循环变量增值。
注:表达式1可省略,但其后面的分号不能省。
eg:for(i = 0; i < 10; i ++)
sum = sum + 1;
等同于
for(; i < 10; i ++)
sum = sum + 1;
四、continue语句
continue语句表示结束本次循环,循环遇到continue语句,不再执行continue下面的代码,而是直接返回到循环开始处进行下一次是否执行循环的判断。
五、break语句
循环遇到break语句会终止整个循环过程,并退出。
下面是利用循环写的一个关于上三角,下三角的程序:
#include <stdio.h>
int main()
{
int i, j;
int sum = 0;
while(1)
{
printf("Please input sum:");
scanf("%d",&sum);
if(sum < 2)
break;
if(sum % 2 == 0) //当sum为偶数时执行下面的程序
{
for(i = 1; i < sum; i++) //输出的星星行数,sum-1行
{
if(i <= sum / 2 ) //上三角部分
{
for(j = 0; j < (sum / 2 -i); j++) //控制空格数量。printf(“ ”)这句在j < (sum / 2 -i);限制条件下运行。
{
printf(" ");
}
for(j = 0; j < (2 * i - 1 ); j++)
printf("*");
printf("\n");
}
else //下三角部分
{
for(j = 0; j < (i - sum / 2); j++) //控制空格数量。
{
printf(" ");
}
for(j = 0; j < ((sum - i) * 2 - 1); j++) //控制星星的数量
printf("*");
printf("\n");
}
}
}
else //sum为奇数时
{
for(i = 1; i <= sum; i++)
{
if(i <= sum / 2 + 1 ) //shang san jiao
{
for(j = 0; j < ((sum / 2 + 1) -i); j++)
{
printf(" ");
}
for(j = 0; j < (2 * i - 1 ); j++)
printf("*");
printf("\n");
}
else //xia san jiao
{
for(j = 0; j < (i - sum / 2 - 1); j++)
{
printf(" ");
}
for(j = 0; j < ((sum + 1 - i) * 2 - 1); j++)
printf("*");
printf("\n");
}
}
}
}
return 0;
}
运行结果如下: