今天学习学习第五章循环结构程序设计,时间有点来不及了,所以更笔记会有点跟不上,因为笔记是我的一个复习过程,所以在考试之前都要把书看完,不知道有没有一起要考的这个亲,二级C考试之前,肯定要把书先过一遍,整理读书笔记,只是我自己的一个记忆巩固和知识整理的过程。所以大家互相鼓励,同时希望有考二级C的伙伴能一起共享复习资料和练习。。
循环结构程序设计
来由:循环结构是为了解决需要重复选择的问题。
循环结构包括:while 语句、for语句以及do…while语句。
while 语句
一般形式:while(表达式)语句……//语句就是循环体,也就是复合语句。
即:只要循环条件为真(条件表达式的值为1),就执行循环体语句
特点:先判断条件表达式,后执行循环体语句。
如:求1~100的数的和的程序。#inculde
int main(){
int i,sum; /*定义变量i和相加的和为sum */
i=1;sum=0; /*给i和sum分别赋初值,否则它们的值是不可预测的,结果不正确 */
while(i<=100) /*当i大于100时退出循环*/
{
sum+=i; /*sum=sum*/
i++; /*i+1后再循环,这个语句有使循环趋于结束*/
}
printf("sum=%d\n",sum);
return 0;}
注:
1、循环体中如果包含一个以上的语句,应该用花括号括起来,作为复合语句出现,如果不括,则while语句的范围只到其后面第1个分号处。
2、不要忽略给变量赋初值,否则它们的值是不可预测的,结果肯定是不正确的
3、在循环体中应有使循环趋于结束的语句。
思考:求使s=1+2+3+..+n大于1000时n的值。
提示,可参考上面例题,在其中加上if语句。。if(sum>1000) break;
while语句还有另一种形式。
do……while 语句
一般形式:do
语句
while(表达式);
这里最重要的一点是,这里while( 表达式)后面一定要加上分号。
它的执行过程:先无条件执行循环体,然后再检查条件是否成立,若成立再执行,这是和while语句不同的。
/*用do……while语句 求1~100的数的和的程序*/#include
int main(){
int i=1,sum=0;
do{
sum+=i;
i++;}
while(i<=1000); /*这里括号后面一定要加分号*/
printf("sum=%d,i=%d\n",sum,i);
return 0;
}
用for语句实现循环
其特点:更灵活,不仅可以用于已知的循环次数,也可以是未知的循环次数,其完全可以替代while语句。
一般形式:for(表达式1;表达式2;表达式3) 语句。
表达式1:设置初始条件,只执行一次,可以为零,一个或多个变量设置初值。
表达式2:循环条件表达式,用来判断是否继续循环,在每次循环体前先执行此表达式。
表达式3:作为循环的调整,在执行完循环体后才进行的。
简单的记忆方式:for(循环变量赋初值;循环条件;循环变量增值) 语句
例:for(i=1;i<=100;i++) sum+=i;
for语句是可以和while语句相互转换的。
for语句一般形式:for(表达式1;表达式2;表达式3) 语句。
改写成while语句的一般形式为:
while(表达式2){
语句
表达式3} /*二者是无条件等价*/
注意:
1、for(;i<=100;i++),for语句的表达式1可以省略,但分号不能省略。同时必须在for语句之前加上表达式1。
2、表达式2也可以省略,意思就是这个循环体恒为真(非零)就会一直执行下去。
3、表达式3也可以省略,但我们必须设置一个条件让其能正常结束。表达式3也可以放在语句里面。
4、表达式1和表达式3都没有,如果不在其他地方加上的话,程序是无法运行的。三个表达式都没有的话,在其他加上他们的话,也不影响,否则就执行不了。
5、表达式1可以是设置成循环变量初值的赋值表达式,也可以是循环变量无关的其他表达式。
如:for(sum=0;i<=100;i++) sum+=i;但一定要保证循环能正常运行。
6、表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一人以上的简单表达式,中间用逗号间隔。
如:for(sum=0,i=1;i<=100;i++,i--) sum+=i;但一定要保证循环能正常运行。
7、表达式2一般都是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式。只是其值为1(非零),就执行循环体。
8、C99允许在for语句的表达式1中定义变量并赋初值。
循环的嵌套
定义:一个循环体内又包含了另一个完整的循环结构,就是循环的嵌套。
三种循环语句(while语句、do……while 语句、for语句)是可以互相嵌套的。
循环语句嵌套的一般形式
改变循环执行的状态
用break语句提前终止循环
在用switch语句的时候就已经用过break语句了,
一般形式:break;
break语句只能用于循环语句和switch语句中,而不能单独作用。
用continue语句提前结束本次循环
有时不想终止整个循环,但只希望提前结束本次循环,而接着执行下个循环,可以用continue语句
/*要求输出100~200之间不能3整除的数。*/int n;
for(n=100;n<=200;n++)
{
if(n%3==0)
continue;
printf(" %d",n);
}
printf("\n");
循环结构我一直在找内容来让我理解它,我现在自己都还有一点懵,现在也只是有点简单的理解,所以没有基础,特别是数学差或者逻辑思维差的,真的熟练应用要很难,特别是循环的嵌套,多层嵌套绕的头晕,希望大家可以互相留言说大家对循环的理解,这个东西我发现就是死记硬背不行,不理解就不会用了。