循环控制顾名思义就是重复执行某一个语句块,日常生活中也有很多需要重复执行的事,比如生产流水线等都是在重复执行某一件事。程序中如果没有循环控制,那么当需要执行重复的指令时,程序将变得非常庞大,有时候也不是程序员能写出的,比如要重复一百万次,你不可能把语句写一百万遍,所以循环控制是多么的重要,任何一门程序设计语言都有循环控制语句,因此循环控制是多么的基础,打好基础才能进阶成大神。下面就简要附上对每一种循环语句进行简要说明。
C语言中的循环控制?
一、while(表达式)语句:
其一般形式如下:
while(表达式){语句块}
说明:while语句后面的表达式为真时(非0),那么就将执行后面的语句块,但是while后面的表达式一旦为真,那么它就一直为真,自己并不会使条件转变为假,因此后面的语句块必须存在使表达式转变为假的条件,否则将进入死循环,无休无止。换言之,就是程序在运行时可以通过判断,检验条件作出选择,程序还必须能够重复执行随后的语句,直到满足某个条件为止,跳出循环。
二、do{语句块}while(表达式):
上面的while语句如果一开始表达式就为假,那么它大括号里的语句块一次也不执行,但是do……while(表达式)语句就算一开始表达式值为假,它也会执行一次。
可以看出其特点是,先执行循环体语句,然后再进行判断,当表达式结果为真时那么返回重新执行循环体语句,直到循环条件为假时,结束此循环。
大大的注意:在使用do……while语句时,条件要放在while后面的圆括号中,但是最后一定一定要加上分号,如do……while(表达式);.
三、for语句:
for语句的一般形式为:
for(表达式1;表达式2;表达式3)。
for语句每一次循环时修改循环变量,跟上面的两个比,for循环语句最为灵活,它不仅可以用于循环次数确定的情况,也可以用于循环次数不确定的情况,而只给出循环结束条件的情况。
通过上面的流程图对for语句作简要介绍:
首先第一步:求解表达式1(只执行一次)。
第二步:检验表达式2,如果为真,那么就执行循环语句,然后执行第三步,如果为假,那么就跳出循环,继续执行循环后面的语句。
第三步:执行表达式3.
第四步:继续执行第二步。
第五步:跳出循环,for语句结束。
for语句括号里可以在写详细一点:
for(循环变量赋初值;循环条件;循环变量);
for内的表达式1、2、3并不是必须的,可以省略一个甚至全部省略,但是里面的两个分号无论如何不能省略,否则就是错误的语句。
表达式1可以省略,但是必须在for之前被声明,赋初值。
表达式2省略,就没有判断语句,那么程序会无休止执行下去。
表达式3可以省略,但是必须另外加入终止循环的条件,比如符合一定的条件,使用goto语句或break语句跳出循环。
当然三个表达式都可以省略,for(;;),不过,如不设其他跳出条件,那么也会进入死循环。如果程序中有分配内存空间的语句,如malloc那么,将逐渐用光可用内存,导致程序瘫痪崩溃。
当然了,for语句中表达式1和3,除了可以使用一个简单表达式外,还可以使用逗号运算符,包含两个及两个以上的简单表达式。如for(int sum=0,int i=1;i<=10;i++,i++){sum += i;},就相当于int sum=0;for(int i=0;i<=10;i=i+2){sum += i;}逗号表达式依照自左向右顺序求解。
四、三种循环语句的区别:
①、while(循环条件)跟do……while(循环条件),只包含循环条件,而在后面的语句块中,必须有使循环趋于结束的语句。而for语句在表达式3中就有使循环趋于结束的操作。
②、上面三种循环语句,都可以使用break语句、goto语句结束循环,使用continue语句结束本次循环。
③、while和do while语句循环变量必须在while do……while之前完成初始化,而for语句可以在前也可以在表达式1中完成。
五、转移语句:
转移语句有goto语句、break语句、continue语句。其中goto语句为无条件转移语句,可以使程序跳转到函数内部的任意一条语句,goto语句后面带一个标识符,如:
there:
之间若干条语句
for(int i=0;i<=100;i++)
{
if(i==98)
goto there;
}
there为跳转的标识符,there:后面的代码就是要跳转到的位置,而后程序从跳转位置开始向下执行,不过上面的语句会不断的在goto there;there:之间跳转,所以必须在设置跳出其中的条件。
break语句,有时在循环中需要不顾判断条件强制跳出循环,那么break语句就有此作用。如while(i<=100){ if(i==38) break;i++},这条语句当i=38,,时就跳出循环,当然了只是跳出与之对应的循环语句,要是有嵌套循环,如果break语句位于内部循环当中,那么break语句只跳出内部循环,不会跳出外部循环。
continue语句,作用结束本次循环,跳过循环体中尚未执行的部分。如:
for(int i=1;i<=100;i++)
{
if(i==30){
continue;
}
其他语句块;
}
当执行到i=30时,那么就执行continue语句,执行完continue语句后,下面的其他语句块就执行不到了,程序继续从i=31,开始依次执行。
下面随便就一个循环例子并作讲解:
C语言编程,求一个正整数任意次方结果的后三位数,就是求x的n次方结果的后三位数。在思考这个问题时,一定要想到越界问题,因为在C语言中任何一个类型都有一个范围,比如在32位机器中,int的范围为-2147483648~2147483647,所以要考虑到这种情况,比如100的10次方,那么就存不下了。因此为了避免此种情况的发生那么就应该另辟蹊径,很容易想到,每乘以一次都取后三位,那么就不会有越界的问题了。下面写出重要代码段:
int x,last3=1,n
for(int i=1;i<=n;i++)
{
last3=(last3*x)%1000;
}
最后输出的last3就是最后三位数。
更多山东编程培训相关资讯,请扫描下方二维码