以计算阶乘为例,展开讨论这三种循环的具体区别。
"while"循环:
#include<stdio.h>
int main()
{
int i=1;
int fact=1;
int n;
printf("请输入一个整数以计算阶乘:");
scanf("%d",&n);
while(i<=n){
fact *= i;
i++;
}
printf("%d!=%d\n",n,fact);
return 0;
}
在这个代码中的while,首先进行条件判断,条件满足后进行"fact *=i"的计算并且进行"i++",然后再次进行判断,依次循环,直到不满足条件;
do-while循环:
#include <stdio.h>
int main()
{
int i = 1;
int fact = 1;
int n;
printf("请输入一个整数以计算阶乘:");
scanf("%d",&n);
do{
fact *= i;
i++;
}
while(i<=n);
printf("%d!=%d",n,fact);
return 0;
}
1、在这个代码中,程序执行到"do-while"时,不会首先考虑"while"中的条件,而是无论如何都会先执行一遍"fact *= i;i++";
2、执行一遍之后,然后再对"while"中的条件进行判断,如果满足条件"i<=n",则返回"do"继续执行"fact *= i;i++",直到条件补满足;
3、需要注意,在"do"后面一定要加上更改条件的语句,否则出现死循环;
for循环:
#include<stdio.h>
int main()
{
int i = 1;
int fact = 1;
int n;
printf("请输入一个整数以计算阶乘:");
scanf("%d",&n);
for(i=1;i<=n;i++){
fact *= i;
}
printf("%d!=%d",n,fact);
return 0;
}
1、在for循环当中,"i=1"为初始条件;"i<=n"为判断条件,且在最开始时就会进行条件判断;"i++"为循环一次需要做的改变;
2、使用for循环时,一定要在循环外部首先初始赋值初始变量(例如上面程序中的"i"),如果在for内部进行赋值,会导致报错(for内赋值初始变量为C99的标准,许多编译器不支持这样赋值);
3、for和while等价,可以进行替换;
以上为初学C语言总结,若有错误和不足,还请前辈指出!