zl程序教程

您现在的位置是:首页 >  其他

当前栏目

C控制语句:循环

控制循环 语句
2023-09-27 14:29:24 时间


主要介绍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;
}

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