循环控制结构与循环语句,逗号运算符

本文介绍了C语言中的三种循环语句——for、while和do-while,详细阐述了它们的工作原理和执行流程。对于while语句,先判断条件再执行循环体;do-while语句则是先执行循环体再判断条件,确保至少执行一次。for语句是一种灵活的循环结构,包含初始化、条件检查和增值三个部分。此外,文章还给出了计算1到n之和的例题,分别用三种循环语句实现。
摘要由CSDN通过智能技术生成

一、循环控制结构与循环语句
上一篇介绍了选择控制,这一篇介绍关于循环控制结构与循环语句

循环结构通常有两种类型:
(1)当型循环结构,表示当条件P成立(为真)时,反复执行A操作,直到条件P不成立(为假)时结束循环。
在这里插入图片描述

(2)直到型循环结构,表示先执行A操作,在判断条件P是否成立(为真),则反复执行A操作,直到条件P不成立(为假)时结束循环。

在这里插入图片描述

C语言提供 for , while ,do-while 三种循环语句(Loop Statement)来实现循环结构。循环语句在给定条件为真的情况下,重复执行一个语句序列,这个被重复执行的语句序列称为循环(Body of Loop)。

1.while语句
while语句属于当型循环。其一般形式为:
while(循环控制表达式)
{
语句序列
}

while语句中的循环控制表达式是在执行循环体之前测试的。
其执行过程如下:
(1)计算循环控制表达式的值;
(2)如果循环控制表达式的值为真,那么就执行循环体中的语句,并返回步骤(1);
(3)如果循环控制表达式的值为假,就退出循环,执行循环体后面的语句。

	为了使程序易于维护,建议即使循环体内只有一条语句,也将其用花括号括起来。这是因为当需要在循环体中增加语句时,如果忘记加上花括号,那么仅while后面的第1条语句会被当做循环体中的语句来处理,从而导致逻辑错误。

2.do-while语句
do-while语句属于直到型循环。其一般形式为:
do
{
语句序列
}while(循环控制表达式);

与while语句不同的是,do-while语句中的循环控制表达式是在执行循环体之后测试的。
do-while语句的执行过程如下:
(1)执行循环体中的语句;
(2)计算循环控制表达式的值;
(3)如果循环控制表达式的值为真,那么返回步骤(1);
(4)如果循环控制表达式的值为假,就退出循环,执行循环体后面的语句。
可见,对do-while语句来说,由于是先执行循环体后计算并判断循环控制条件为真还是为假,所以循环体内的语句将至少被执行一次

3.for语句
for语句属于当型循环结构。它的使用方式非常灵活,在C语言程序中的使用频率也最高,其一般形式如下:
for(初始化表达式;循环控制表达式;增值表达式)
{
语句序列;
}

初始化表达式的作用是为循环控制变量初始化(Initialization),即赋初值,它决定了循环的起始条件;
循环控制表达式是循环控制条件(Loop Control Condition);
增值表达式的作用是每执行一次循环后将循环控制变量增值。

for和while可进行等价实现,与for语句等价的while语句形式是:
初始化表达式;
while(循环控制表达式)
{
语句序列
增值表达式;
}

当已在for语句前面为循环控制变量赋初值时,初始化表达式可以省略;
当已在循环体中改变了循环控制变量时,增值表达式可以省略。
如:
初始化表达式;
for(;循环控制表达式;增值表达式)
{
语句序列
}

初始化表达式;
for(;循环控制表达式;)
{
语句序列
增值表达式;
}

逗号运算符:
逗号运算符可把多个表达式连接在一起,构成逗号表达式,起作用是实现对各个表达式的顺序求值。

二、例题:
1.输入n,并计算出1+2+3+…+n的值。

在这里插入图片描述
for:

#include <stdio.h>

int main()
{
	int n,i;
	int sum=0;
	printf("请输入n:");
	scanf("%d",&n);
	for(i=0;i<=n;i++)
	{
		sum=sum+i;
	}
	printf("sum=%d",sum);
}

do-while:

#include <stdio.h>

int main()
{
	int sum=0;
	int i,n;
	printf("输入一个数n:");
	scanf("%d",&n);
	i=1;
	do
	{
		sum+=i;
		i++;
	}while(i<=n);
	printf("sum=%d",sum);
}

while:

#include <stdio.h>

int main()
{
	int sum=0;
	int i,n;
	printf("输入一个数n:");
	scanf("%d",&n);
	i=1;
	while(i<=n)
	{
		sum+=i;
		i++;
	}
	printf("sum=%d",sum);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值