1、while语句:
while(表达式)
语句
表达式为循环条件,语句为循环体;
其语义是:当表达式的值为非零时执行语句,然后再判断表达式的值只要它不为零,则继续执行语句,以此重复,直到表达式值为零。
例:求两个数的最大公约数
#include<stdio.h>
int main()
{
int a;
int b;
int c;
printf("please enter two numbers:");
scanf("%d%d",&a,&b);
while(a % b != 0)
{
c = a % b;
a = b;
b = c;
}
printf("bigest_number=%d\n",b);
return 0;
}
2、do-while语句:
do
语句
while(表达式)
语义:先执行语句,再判断表达式,若表达式值为非零则重复执行语句,直到表达式值为零。
例:求1~n的和
#include<stdio.h>
int main()
{
int sum = 0;
int i = 1;
int t;
int n;
printf("please enter a number;");
scanf("%d",&n);
do{
t = i;
sum += t;
i++;
}
while(i <= n);
printf("sum=%d",sum);
return 0;
}
3、for语句:
for(表达式1;表达式2;表达式3)
语句
语义:首先计算表达式1;求表达式2的值若其值为非零执行语句,若表达式2 的值为零则结束for语句;最后求解表达式3转之前的执行
例:1~n中有多少个9
#include <stdio.h>
int count_9( int num )
{
int count = 0;
while( num != 0 )
{
if ( num %10== 9 )
{
count++;
}
num = num / 10;
}
return count;
}
int main ()
{
int i;
int num;
int count = 0;
printf ("input number: \n");
scanf("%d",&num);
for (i=1;i<=num;i++ )
{
count = count + count_9(i);
}
printf("count = %d \n",count);
return 0;
}
省略表达式1:表示不对循环控制变量赋初始值
省略表达式2:表示不做其他处理即死循环
省略表达式3:表示不对循环控制变量进行操作
省略表达式1和表达式3:相当于一个while语句
省略3个表达式:表示无限循环即while(1)
几个循环语句相比较而言:for语句效率最高,while语句次之,do语句一般很少用。
while语句特点:循环次数可知
do-while语句特点:程序的可读性较强
for语句优点:所有循环细节都可在语句中描述,程序可读性较高
当循环次数有限时选择for语句;当循环次数未知时选择while语句。