while循环
代码结构
while (表达式){// 表达式用来判断是否进入循环
循环体
}
当表达式值为真时,进入循环体并执行循环体,循环体每执行结束一次就再次对表达式进行判断,如果表达式值为假则退出循环。
while流程图
while经典例子
求输入正整数的位数。
代码如下附注释。
#include <stdio.h>
int main() {
int n; // 输入的整数
scanf("%d",&n);
int l=0; // 用来记录整数位数的变量
// 后面两行代码为了防止输入的数为0
l++;
n/=10;
while (n!=0){ // 当整数不为0时进入循环体
l++; // 每进入一次循环体,记录长度的变量做加加操作
n/=10; // 每记录一位长度就将整数末尾数字通过整除而去掉
}
printf("%d\n",l);
return 0;
}
do-while循环
观察上面用while求整数位数的代码不难发现,在循环之前进行的l++和n/=10这两步和循环体中的代码完全相同,可是如果把循环外面那一步省略掉程序就会发生错误。那我现在即想把那一步省略掉又不想让程序发生错误怎么办呢?
于是可以引入do-while循环。
代码结构
do{
循环体
}while(表达式);
do-while流程图
do-while经典例子
求输入正整数的位数。
代码如下附注释。
#include <stdio.h>
int main() {
int n; // 输入的整数
scanf("%d",&n);
int l=0; // 用来记录整数位数的变量
do{
l++; // 每进入一次循环体,记录长度的变量做加加操作
n/=10; // 每记录一位长度就将整数末尾数字通过整除而去掉
} while (n!=0);
printf("%d\n",l);
return 0;
}
for循环
代码结构
for(表达式1;表达式2;表达式3){
循环体
}
执行顺序表达式1->表达式2(不成立则退出循环)->循环体->表达式3->表达式2(不成立则退出循环)->循环体->表达式3…………
for循环流程图
for循环经典例子
求n的阶乘。
代码如下
#include <stdio.h>
int main() {
int n;
int fact = 1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
fact*=i;
}
printf("%d\n",fact);
}