C语言的循环语句
2015-08-09 06:06
441 查看
循环语句是用于重复执行某条语句(循环体)的语句,它包含一个控制表达式,每循环执行一次都要对控制表达式进行判断,如果表达式为真,则继续执行循环。C语言提供了3中循环语句,分别为
while语句是控制表达式在循环体之前的循环语句,它的格式如下:
这里的圆括号是强制要求的,圆括号之内的表达式为控制表达式,圆括号之外的语句为循环体。
如果
其中控制表达式两端的括号也是必须的。
建议对
表达式1是初始化步骤,只执行一次,表达式2是控制表达式,控制循环的终止,表达式3在每次循环的最后被执行。
while语句,
do while语句和
for语句。
while语句
while语句是控制表达式在循环体之前的循环语句,它的格式如下:while (表达式) 语句
这里的圆括号是强制要求的,圆括号之内的表达式为控制表达式,圆括号之外的语句为循环体。
while语句的执行步骤,首先计算控制表达式的值,如果表达式的值不为
0(为真),则执行循环体,接着再次判断控制表达式,如果其值不为
0,再次执行循环体。执行这个步骤直到控制表达式的值为
0时停止。
/************************************* * using_while_1.c * * * * 简单的while语句 * *************************************/ #include <stdio.h> int main() { int i = 1; int sum = 0; while(i <= 50) { sum += i; i++; } printf("1到50之间(包括1和50)的整数之和为%d\n", sum); return 0; }
如果
while的控制表达式一直不为0,那么循环将一直进行下去,称为无限循环。这样的循环在循环体中都包含
break,
goto,
return或者导致程序终止的函数(如
exit等),以在适当的时机终止程序。
/**************************************** * using_while_2.c * * * * 无限循环与break * ****************************************/ #include <stdio.h> int main() { int i = 1; int sum = 0; while(1) { if ( i > 50) break; sum += i; i++; } printf("1到50之间(包括1和50)的整数和为%d\n", sum); return 0; }
do while
语句
do while语句与
while语句非常相似,只不过
do while语句在每次执行完循环体之后对控制表达式进行判断的,因此
do while语句的循环体至少会执行一次,而
while语句的循环体可能一次都不被执行。
do while语句的格式如下:
do 语句 while(表达式);
其中控制表达式两端的括号也是必须的。
do while循环的执行步骤如下:首先执行循环体,再计算控制表达式的值,如果表达式的值非零再继续执行循环体,然后再次判断表达式的值。这个过程持续进行,知道控制表达式的值为0,终止
do while语句执行。
建议对
do while的循环体都使用大括号包裹起来,因为大括号会使
do while语句被误认为是
while语句。
/************************************* * using_do_while.c * * * * C语言中的do while循环 * *************************************/ #include <stdio.h> int main() { int i = 1; int sum = 0; do { sum += i; i++; }while(i <= 50); printf("1和50之间(包括1和50)的整数之和为%d\n", sum); return 0; }
for
语句
for语句的格式如下:
for (表达式1; 表达式2; 表达式3) 语句
表达式1是初始化步骤,只执行一次,表达式2是控制表达式,控制循环的终止,表达式3在每次循环的最后被执行。
for语句的执行步骤是:首先执行表达式1进行初始化,然后判断表达式2的值是否为真,若为真,则执行循环体,然后执行表达式3.随后再次对表达式2的值进行判断,若为真,则再次执行循环体和表达式3,依次循环直到表达式2的值为0为止。
for语句的3个表达式都可以省略,若省略表达式1,则在执行循环前没有初始化的操作;若省略第三个表达式,则执行完循环体后,没有再需要执行的语句,循环体确保循环能够在有限时间内终止;若省略第二个表达式,则每次判断都默认为真,除非在循环体内使用
break,
goto和程序终止函数外,循环不会停止。
/************************************* * using_for.c * * * * C语言的for语句 * *************************************/ #include <stdio.h> int main() { int sum = 0; int i; for (i = 1; i <= 50; i++) { sum += i; } printf("1和50之间(包括1和50)的整数之和为%d\n", sum); return 0; }
循环体中的跳转语句
在循环体中可以使用break,
continue和
goto跳转语句。
break
语句。
break语句在循环体的中间设置退出点,用以跳出
while,
do while和
for循环,直接执行循环语句后面的语句。除此之外,
break语句还用于
switch语句,用以跳出
switch语句而直接执行switch语句后面的语句。对于嵌套的循环语句和(或)
switch语句,
break只能跳过其所在的那层循环或
switch语句。
continue
语句。
continue语句并不跳出循环,而是将程序执行正好转移到循环体末尾处,跳过本次循环中循环体余下的内容。
continue语句只能用于循环体中。
/************************************** * using_continue.c * * * * C语言中用于循环体的continue语句 * **************************************/ #include <stdio.h> int main() { int n = 0; int sum = 0; while (n < 10) { int i = 0; scanf("%d", &i); if (i == 0) continue; sum += i; n++; } printf("以上十个非零数的和为:%d\n", sum); return 0; }
goto
语句。
goto语句不仅可以用在循环体中,还可以用在程序的任何位置。与
continue和
break不同,它可以跳转到同一个函数中任何有标记的语句处。
goto依赖于定义在语句开头的标识符,其形式为:
标识符 : 语句。
goto语句的形式为:
goto 标识符;
goto易于造成程序混乱,代码难以阅读,并且其他跳转语句、
return和
exit语句能够满足大多数需要
goto语句的情况。除非万不得已,尽量不要使用。
/************************************** * using_goto_in_loop.c * * * * C语言循环语句的循环体中使用goto语句* **************************************/ #include <stdio.h> int main() { int i = 0; while (i < 10) { switch(i) { case 0: case 1: case 2: case 3: printf("%d 小于 4\n", i); break; default: goto bigThan4; } i++; } bigThan4: printf("i开始不小于4\n"); return 0; }
参考文献
K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社相关文章推荐
- C语言的逗号运算符
- C++线下测试回顾
- 《C++编程思想》 第十一章 运算符重载 (原书代码+习题+解答)
- C++虚继承内存对象模型探讨
- C++中智能指针的工作原理和简单实现
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- 7种智能指针总结
- 15、C语言和设计模式(访问者模式)
- C++实现基于单线程单客户模型的echo程序
- 14、 C语言和设计模式(状态模式)
- c语言的基础复习
- c/c++语言中sort函数的使用方法
- C语言数组与指针(重要)
- 13、C语言和设计模式(命令模式)
- 12、C语言和设计模式(解释器模式)
- 11、C语言和设计模式(备忘录模式)
- C++对象模型--总结
- 浅谈C/C++的浮点数在内存中的存储方式
- C语言的基础复习——scanf使用注意
- c语言中 switch case 和 if else执行效率的比较