C控制语句:循环


主要介绍while循环和其他两种循环:for和do while。

入口条件循环

即在执行循环体之前就决定了是否执行循环,因此,for循环和while循环可能一次都不执行。

while语句

通用形式
while (expression)
statement

statement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。
expression可以用任何表达式,如果为真,执行statement部分一次,然后再次判断expression。在为假之前,循环的判断和执行一直重复进行。每次循环都被称为一次迭代。

for语句

通用形式
for (initialize; test; update)
statement

for后面的圆括号内有三个表达式,分别用分号隔开。第一个表达式是初始化,只会在循环开始时执行一次,第二个是测试条件,在执行循环之前对表达式求值,若为假,则循环结束。第三个表达式为更新,在每次循环结束时求值。

利用for的灵活性

1.可以使用递减计数器

#include<stdio.h>
int main(void)
{
	int i;
	for (i = 5; i > 0; --i)
	{
		printf("...\n");
	}
	return 0;
}

2.使计数器递增其他数

#include<stdio.h>
int main(void)
{
	int i;
	for (i = 0; i < 50; i = i + 3)
	{
		printf("...\n");
	}
	return 0;
}

3.可以用字符代替数字计数

#include<stdio.h>
int main(void)
{
	char ch;
	for (ch = 'a'; ch < 'z'; ++ch)
	{
		printf("...\n");
	}
	return 0;
}

4.可测试其他条件

for (int num = 1; num <= 6; ++num)
	//替换成
	for (int num = 1; num*num*num<= 216; ++num)

5.可以让递增的量几何式增长

#include<stdio.h>
int main(void)
{
	double debt = 0.0;
	for (debt = 100.0; debt < 150; debt *= 1.1)
	{
		printf("...\n");
	}
	return 0;
}

6.可以省略一个或多个表达式(但是不能省略分号),只要在循环中包含能结束循环的语句即可。

#include<stdio.h>
int main(void)
{
	int i = 0, num = 1;
	for (i = 2; num <= 30;)
	{
		num = num * i;
		printf("...\n");
	}
	return 0;
}

省略第二个表达式则视为真,所以for ( ; ; )会无限循环

#include<stdio.h>
int main(void)
{
	int i = 0;
	for (; ;)
	{
		printf("%3d", ++i);
	}
	return 0;
}

运行结果
在这里插入图片描述
7.第一个表达式不一定是给变量赋初值,也可以使用printf()。

#include<stdio.h>
int main(void)
{
	int num = 0;
	for (printf("Please input data:\n"); num != 6;)
	{
		scanf_s("%d", &num);
	}
	return 0;
}

出口条件循环

即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。

do while

通用形式
do
statement
while ( expression);

注意do while循环以分号结尾

嵌套循环

指在一个循环中包含领一个循环
示例:

#include<stdio.h>
#define ROW 6
#define COL 6
int main(void)
{
	int i = 0, j = 0;
	for (i = 0; i < ROW; ++i)
	{
		for (j = 0; j < COL; ++j)
		{
			printf("%4d", j);
		}
		printf("\n");
	}
	return 0;
}

运行结果
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_索伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值