第四章 循环结构

4.1 for循环

for(init; condition; increment)//初始化,循环条件,循环增量
{
statements(s);
}

init会首先被执行,且只会执行一次。这一步允许声明并初始化任何循环控制变量。也可以不在这里写任何语句,只要有一个分号出现即可。

接下来判断condition。如果为真,则执行循环主体statement。如果为假,则不执行循环主体,且控制流会跳转到紧接着for循环的下一条语句。

执行完for循环主体后,控制流会跳回上面的increment语句。该语句允许更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可(由需求决定)。

条件condition再次被判断。如果为真,则执行循环statement,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for循环终止。

  • 注意
    1.init; condition; increment三个表达式之间是用分号隔开的,千万不要写成逗号。
    2.for(init; condition; increment)的后面不要加分号,加分号没有语法错误,但往往得不到想要的结果。
for(init; condition; increment);
{
statements(s);
}

C语言中只有一个分号代表空语句。for循环中,如果循环体只有一句话,{}可以省略。
因此上述语句实际上的意思为

for(init; condition; increment)
{
    ;
}
{
statements(s);
}
  • 实践:1+2+3+…+100的实现方案
include<stdio.h>
int main()
{
	int i;
	int sum = 0;

	for(i = 1; i<=100; i++)
	{
		sum = sum + i;
	}

	printf("sum = %d", sum);
}

4.2 while循环

while(condition)
{
statements;
}
  • 注意
    1.当condition表达式为真,则执行下面的语句,语句执行完之后再判断condition表达式是否为真,如果为真,再次执行下面的语句,然后再判断表达式是否为真…就这样一直循环下去,直到表达式为假,跳出循环。
    2.statements可以是一个单独的语句,也可以是几个语句组成的代码块。但是语句不论有多少行,都要加“{}”,这是良好的编程习惯。conditions可以是任意的表达式,当为任意非零值时都为true。条件为true时执行循环,条件为false时退出循环,程序流将继续执行紧接着循环的下一条语句。

while循环的关键点是循环可能一次都不会执行。
在循环结构中,循环条件为假时才能退出循环,如何让循环条件由满足逐渐变成不满足,需要在循环中常定义循环变量,通过在循环体语句中改变循环变量的值,使得循环条件不成立。

  • 实践:1+2+3+…+100的实现方案
#include<stdio.h>
int main()
{
	int i = 1;
	int sum = 0;

	while(i <= 100)
	{
		sum = sum + i;
		i++;
	}

	printf("sum = %d", sum);
}
  • 总结
    实际上所有的for循环都可以转化成while循环,所有的while循环也可以转化成for循环。
    具体如何选择要根据实际情况分析,比如死循环(循环条件始终为真的循环)往往就是用while(1),这样更方便。当然也可以用for(;;)来完成死循环。

4.3 dowhile循环

do
{
statements(s);
}while(condition);

先执行一次循环体,再判别表达式。

  • 实践:1+2+3+…+100的实现方案
#include<stdio.h>
int main()
{
	int i=1;
	int sum=0;

	do
	{
		sum = sum + i;
		i++;
	}while(i<=100);

	printf("sum = %d", sum);
}
  • 总结
    dowhile和while不能相互转换,只有当第一次循环都为真时才能够替换。

4.4 break与continue

循环控制结构:循环控制语句改变代码的执行顺序。通过它可以实现代码的跳转。

  • break语句:
    当break语句出现在一个循环内时,立即终止循环,跳出循环,程序流将继续执行紧接着循环外的下一条语句。
    注意:
    break只能跳出“包裹”它的最里面一层循环,即程序执行流程跳转到“内层循环结构后的第一条语句”所在的外层循环体处,开始继续执行。

  • continue语句:
    跳过当前循环中的代码,强迫开始下一次循环。
    对于for循环,continue语句执行后自增语句仍然会执行。
    对于while和do…while循环,continue语句重新执行条件判断语句。

总结:
continue语句和break语句的区别是,continue语句只结束本次循环,break语句则是结束整个循环过程,不再判断执行循环的条件是否成立,属于非正常退出。

4.5循环实践编程

  • 给定一个整数,将该数倒转后输出
#include<stdio.h>
int main()
{
	int oldnumber;
	int newnumber = 0;
	int digitnumber;
	int inivalue;

	printf("input n:");
	scanf("%d", &inivalue);

	oldnumber = inivalue;

	while(oldnumber != 0)
	{
		digitnumber = oldnumber%10;
		newnumber = 10*newnumber + digitnumber;
		oldnumber = oldnumber/10;
	}

	printf("%d converse is %d", inivalue, newnumber);
}

总结:
通过实践分析实际问题,分析问题是否具有循环的设计结构,通过建立通式形成结构映射。
在编程解决实际问题时,数学问题的求解一定要通过计算思维形成数学模型,并通过逻辑思维形成问题的解决方案,最后实现代码映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值