C语言之初识循环结构

目录

1.while 循环
2.do while 循环
3.for 循环
4.逗号运算符及在循环中的使用
5.空语句

1. while 循环

1.1 while 语句格式

while (condition)
{
	//语句块;
}

1.2 while 循环流程图
在这里插入图片描述
     注意: 在有循环语句的程序中,通常循环开始前对循环条件进行初始化;而在循环体语句中要包含修改循环条件的语句,否则循环将不能终止而陷入死循环。

1.3 示例一:显示平方表

#include<stdio.h>
/** while 循环 显示平方表 */
int main()
{
	int i = 0, n = 0;
	printf("Input number of entries in table: ");		//输入平方数
	scanf_s("%d", &n);

	i = 1;
	while (i <= n)
	{
		printf("%10d%10d\n", i, i * i);
		++i;
	}
	printf("\n");
	return 0;
}

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

2. do while 循环

2.1 do while 循环语句格式

     do 语句本质上就是 while 语句,只不过其控制表达式是在每次执行完循环体之后再进行判断。

do
{
	//语句块;
}while (condition);

2.2 do while 循环流程图
在这里插入图片描述
2.3 示例二:计算输入整型数值的位数

#include<stdio.h>
/** do while 循环 计算输入整型数值的位数 */
int main()
{
	int digits = 0, n = 0;
	printf("Input a nonnegative integer:");		//输入一个非负数值
	scanf_s("%d", &n);

	do
	{						// 计算非负数值的位数
		n /= 10;			// n = n / 10;
		digits++;
	} while (n > 0);

	printf("The number has %d digit!\n", digits);
	return 0;
}

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

3. for 循环

3.1 for 循环语句格式

for(表达式1;表达式2;表达式3)
{
	//循环语句;
}

3.2 for 语句流程图
在这里插入图片描述
3.3 for 语句的惯用法

     对于 “ 向上加 ” (变量自增)或 “ 向下减 ” (变量自减)的循环来说, for 语句通常是最好的选择。

// 从 0 向上加到 n - 1
for(i = 0; i < n; ++i) ...
// 从 1 向上加到 n
for(i = 1; i <= n; ++i) ...
// 从 n - 1 向下减到 0
for(i = n - 1; i >= 0; --i)...
// 从 n 向下减到 1
for(i = n; i > 0; --i)...

3.4 在 for 语句中省略表达式

     for 循环中的 “ 表达式 1(初始化条件)”、“ 表达式 2(循环条件)” 和 “ 表达式 3(自增自减)” 都是可选项,都可以省略(但分号 必须保留)。

#include<stdio.h>
/** for 循环 */
int main()
{
	int sum = 0;
	for (int i = 1; i <= 10; ++i)
	{
		sum += i;
	}

	// 等价于
	int sum = 0;
	int i = 1;
	for ( ; i <= 10; ++i)
	{
		sum += i;
	}
	return 0;

	// 等价于
	int sum = 0;
	int i = 1;
	for (; i <= 10; )
	{
		sum += i;
		++i;
	}

	return 0;
}

3.5 无限循环的惯用法:

while(1)
{
	// 语句块;
}
for(;;)
{
	// 语句块;
}

4. 逗号运算符及在循环中的使用

4.1 逗号运算符

     ①. 逗号运算符作为 C 语言中的运算符级别最低的一员,逗号运算符结合的方向是从左往右。

     ②. 逗号运算符是指在 C 语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别计算,但整个表达式的值是最后一个表达式的值。

4.2 示例一

#include<stdio.h>
/** 逗号运算符 */
int main()
{
	int a = 1, b = 2, c = 3;
	int d = 0;
	d = a > b, a * b, c += 3;	// d = (a > b, a * b, c += 3);
	printf("%d \n", c);
	return 0;
}

运行结果
在这里插入图片描述
4.3 示例二

#include<stdio.h>
/** 逗号运算符 */

int main()
{
	int n = 0, sum = 0;
	printf("Input numbers of int: \n");
	/**
	scanf_s("%d", &n);
	while (n != 0)
	{
		sum += n;
		scanf_s("%d", &n);
	}
	*/
	// 等价于==>
	while (scanf_s("%d", &n), n != 0)
	{
		sum += n;
	}
	printf("The sum is:%d \n", sum);
	return 0;
}

运行结果
在这里插入图片描述
4.4 示例三

#include<stdio.h>
/** 逗号运算符 */
int main()
{
	/**
	int i = 0, sum = 0;
	for (i = 1; i <= 10; ++i)
	{
		sum += i;
	}
	*/
	// 等价于==>
	int i = 0, sum = 0;
	// sum += i, ++i 顺序不可变 sum += i, ++i ==> sum = 55; ++i, sum += i ==> sum = 65 
	for (sum = 0, i = 1; i <= 10; sum += i, ++i)
	{

	}
	printf("The sum is %d \n", sum);
	return 0;
}

运行结果
在这里插入图片描述
4.5 总结:提供逗号运算符是为了 C 语言要求只能有一个表达式的情况下可以使用两个或多个表达式,换句话说,逗号运算符允许将两个表达式 “ 粘贴 ” 在一起构成一个表达式

5. 空语句

5.1 空语句

     语句可以为空,也就是除了末尾处的分号以外什么符号也没有。空语句(仅由分号组成)不执行任何操作。

int i, j;
i = 0; ; j = 1;
// 含三条语句:
// 一条是给 i 赋值 另一条是空语句 还有一条是给 j 赋值

5.2 空语句所带来的问题

     ①. 不小心在 if,while 或 for 语句的圆括号后放置分号会创建空语句,从而造成 if,while 或 for 语句提前结束。if 语句中,如果在圆括号后放置分号,无论条件表达式的值是什么,if 语句执行的动作都一样。

#include<stdio.h>
/** 空语句 ; */
int main()
{
	int age = 0;
	printf("Input your age: ");
	scanf_s("%d", &age);
	if (age > 18 && age < 28);
	{
		printf("您已成年!\n");
	}
	return 0;
}

运行结果
在这里插入图片描述
     ②. while 语句中,如果在圆括号后面放置分号,会产生无限循环;另一种可能是循环终止,但是在循环终止后执行一次循环体语句。

     ③. for 语句中,如果在圆括号后放置分号,会导致只执行一次循环体语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值