第五章 循环控制(一)
在C语言编程中,总有一些程序代码得要被反复多次执行,例如要计算从 1加到100的和是多少,这就要用到循环控制。
一、循环控制语句简介与 goto、while、do…while语句
1、循环控制语句介绍
前面讲过程序的三种基本结构顺序结构、选择结构、循环结构。
选择结构,就是前面章节所讲解的if语句、switch语句等。而循环结构,就是将要讲解的 goto语句、while语句、do...while语句以及后面要讲解的for语句。
几乎所有有实用价值的应用程序都会包含循环结构。比如计算点餐时数量和价格总数。
2、goto语句
goto语句被称为无条件转向语句。用来跳转到某个程序位置进行执行。
一般形式为:
goto语句标号;
其中,语句标号是一个标识符(只能由字母、数字、下划线三种字符组成,且第一个字符必须是字母或者下划线 ,并且标识符不可以是系统中的保留字 )。
goto num;? ? //合法
got 123;? ? ?? //不合法,因为第一个字符是数字
goto 是一个有争议的语句,有人说 goto 语句的使用会使程序的可读性变差,所以要限制使用 ,但作为程序开发人员,如果有使用的必要 ,能够简化程序流程、提高工作效率,那就用。
goto的主要用途:
1)与 if语句一起构成循环结构。
2)从循环体内跳转到循环体外(后面会介绍循环体的概念),不过并不推荐这种跳转方式,因为这破坏了结构化程序设计原则,除非万不得已,没有更好的实现办法时才这样用。
例:做1到100的加法运算。
上面的代码,loop是语句标号行,loop本身是一个标号名,后面跟一个冒号,当程序流程执行goto loop语句时可以直接跳转向loop标号所在行并重新继续往下执行,如此反复。if条件每成立一次,i值就不断加1(i++),sum 也不断累加最新的i值(sum=sum+i),当i值超过100时,if条件不再成立,程序执行流程直接跳过if语句,执行后面的printf 语句输出结果值。
在很多情况下 ,可以用其他的循环语句来代替 goto语句, 目前来看,goto语句的应用场合会比较少,除非觉得 goto语句特别有必要用的时候才用。还有,将来学习函数时,还要知道一点,goto语句不能跨函数使用。
例:
void func1(){
val1:
int k;
k=1;
goto val1;
}
void func2(){
vall2:
int a;
a=1;
}
不能把funcl函数中的goto val1;修改为goto val2;? 这样会导致语法错误,val2标号处于 func2 函数中,goto语句不能跨函数跳转。
3、while语句
while语句是当型循环结构。
格式:
while(表达式) {? //只有1条语句时,可以省略{}
????????要执行的语句;
}
当型循环结构的最大特点是先判断表达式的值,如果表达式的值为真(非0),就执行循环体语句,如此反复。如果表达式的值在第一次判断时就为假 (0) ,那么"循环体语句”部分1次也不会执行。
例:做1到100的加法运算。
4、do...while语句
do...while语句是直到型循环结构。
do{?//只有1条语句时,可以省略{}
????????要执行的语句;
}while(表达式)
直到型循环结构的最大特点是先执行 一次循环体语句,然后判断表达式的值,如果表达式的值为真(非 0)时 ,继续执行循 环体语句 ,然后继续判断表达式的值,如此反复。一直到表达式的值为假(0)的 , 跳出整个 do…while循环继续往后执行。至少会执行循环体语句一次, 然后才判断表达式值是否为真(非 0) 。
例:做1到100的加法运算。
上面的结果与while语句的结果相同。
什么情况结果会不同?
例:如果"表达式"的值一开始就为假 (0)的时候, while与 do...while这两种循环语句所写的代码得到的结果就会不同 ,看看具体的写法:
(1)先用当型循环语句 while 实现一次下面的从 1 加到 10 的求和代码:
(2) 再用直到型循环语句 do…while实现一次和上面相同功能的代码:
结论:当循环语句中表达式第一次的判断结果为真(非 0)时,两种循环得到的最终结果相同,否则 ,两种循环得到的最终结果不同。
在实际应用中,while语句使用的场合更多,do...while语句使用的场合相对较少,因为多数情况下do...while语句可以被 while语句取代。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!