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