一、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; }
运行结果如下: