C语言循环结构(while循环,do...while循环,for循环)

while 循环

只要控制表达式为 true,while 循环就会反复地执行语句:

while (表达式)语句

先计算循环条件(也就是控制表达式)。如果为 true,就执行循环体,然后再次计算控制表达式。如果控制表达式为 false,程序跳过循环体,而去执行循环体后面的语句。

从语法上讲,循环体只有一条语句组成。如果需要执行多条语句时,可以使用语句块把它们组合在一起。例 1 展示了一个简单的 while 循环,整数逆序。

【例1】一个while循环 (整数逆序):

// 输入一个整数,输出该数的逆序
#include <stdio.h>

int main()
{
	int x;
	scanf("%d", &x);
	int digit;
	int ret = 0;

	while ( x> 0 ) {
		digit = x%10;
		printf("%d", digit);
		ret = ret*10 + digit;
		// printf("x=%d,digit=%d,ret=%d\n", x, digit, ret);
		x /= 10;
	}
	// printf("%d", ret);
	
	return 0;
}

while 循环流程图:
在这里插入图片描述

do…while 循环

do…while 循环是一种底部驱动的循环:

do 语句 while (表达式)

在控制表达式被第一次计算之前,循环体语句会首先被执行一次。与 while 和 for 循环不同,do…while 循环会确保循环体语句至少执行一次。如果控制表达式的值为 true,那么另一次循环就会继续;如果是 false,则循环结束。

例 2 展示了一个do… while 循环,数位数。

【例2】一个do… while 循环(数位数):

//输入一个整数,输出该数的位数
#include<stdio.h>
int main()
{
	int x;
	int n=0;
	scanf("%d",&x);
	
	do {
		n++;
		x /= 10;
	}while( x> 0 ); 
	printf("%d\n",n) ;
	return 0;
 } 

do…while 循环流程图
在这里插入图片描述

for 循环

和 while 一样,for 循环也是一个顶部驱动的循环,但是它包含了更多的循环逻辑,如下所示:

for ( [表达式1] ; [表达式2] ; [表达式3] )
语句

在一个典型的 for 循环中,在循环体顶部,下述三个动作需要执行:

(1) 表达式 1:初始化
只计算一次。在计算控制表达式之前,先计算一次表达式 1,以进行必要的初始化,后面不再计算它。

(2) 表达式 2:控制表达式
每轮循环前都要计算控制表达式,以判断是否需要继续本轮循环。当控制表达式的结果为 false,结束循环。

(3) 表达式 3:调节器
调节器(例如计数器自增)在每轮循环结束后且表达式 2 计算前执行。即,在运行了调节器后,执行表达式 2,以进行判断。

例 3 展示了一个 for 循环,计算一个数的 n! 。

【例3】一个for 循环:

#include<stdio.h>
int main()
{
	int n;
	
	scanf("%d",&n);
	int fact = 1;
	
	int i = 1;
	for ( i=1; i<=n; i++){
		fact *=i;
	}
	
	printf("%d!=%d\n",n,fact);
	return 0;
 } 

for 循环的流程图:
在这里插入图片描述
for 循环中的每一个表达式都是可以省略的,for ( ; 条件 ; ) == while ( 条件 )。
例3 中的循环:

for ( i=1; i<=n; i++){
		fact *=i;
	}

可以改写为 while 循环 如下所示;

int i = 1;
while ( i<=n ){
	fact *=n;
	i++;
}

Tips for loops

  • 如果有固定次数用 for
  • 必须执行一次用 do…while
  • 其他情况用 while
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值