预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共73页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言程序设计教程(第2版)第5章循环结构循环就是重复地执行某些语句。 程序中的循环次数是有限的,由循环条件决定可以确定循环次数。 C语言提供了3种循环结构语句: ①for语句 ②while语句 ③do_while语句for语句是一种计数循环。循环次数由循环变量来控制。for语句的一般形式:for语句的常用形式为: for(<初始表达式>;<条件表达式>;<循环表达式>) { <循环体语句> } for语句的3个重要的组成部分: 1.初始表达式——初始化循环控制变量。 2.条件表达式——测试循环条件。 3.循环表达式——更新循环控制变量的值。 for语句的语法功能: 1.计算<初始表达式>的值。该表达式是对循环控制变量进行初始化。 2.判断<条件表达式>的值。该表达式就是循环条件,若该表达式的值为“假”,则退出循环,执行循环结构外的语句;若该表达式的值为“真”,则执行<循环体语句>。 3.计算<循环表达式>的值。该表达式更新循环控制变量的值。 4.转第2步。 for语句的流程图: 注意: ①若<循环体语句>中有多条语句,则构成复合语句,被包含在一对花括号中。 ②若<循环体语句>只有一条,可以不使用花括号。 例1:编写程序,求几何级数之和: 分析: 该数学表达式为求1+2+3+…+100之和。 设:sum为级数的和(初值为零); i为循环变量; 将i从1按步长为1增加到100,循环计算: sum=sum+i; 求得该级数的和。 for语句所具有的特性: 1.<初始表达式>可以省略,但须保留分号(;),同时在for之前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;;i++) sum=sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。例: main() {inti=0; for(;i<10;i++) putchar(‘a’+i); }3.<循环表达式>亦可省略,但在循环语句体中必须有语句来修改循环变量,以使条件表达式的值在某一时刻为假,使程序能正常结束循环。 例如: for(sum=0,i=1;i<=100;) { sum=sum+i; i++; } 4.3个表达式均省略,即for(;;),为无限循环,程序中要尽量避免这种情况的发生。例: main() {inti,sum=0; for(i=1;i<=100;) {sum+=i; i++; } printf("%d",sum); }例: main() {inti,sum=0; i=1; for(;i<=100;) {sum+=i; i++; } printf("%d",sum); }例: main() {inti,sum=0; i=1; for(;;) {sum+=i; i++; if(i>100)break; } printf("%d",sum); }5.条件表达式可以是关系表达式、数值表达式。只要表达式的值不等于零,就执行循环体语句。 如: for(i=0;(c=getchar())!='\n';i+=c); 6.初始表达式、循环表达式可以是逗号表达式,用来完成逗号表达式中各表达式的功能。 例如: for(sum=0,i=1;i<=100;i++,i++) 相当于: sum=0; for(i=1;i<=100;i=i+2) 7.for循环也可以嵌套,执行时是先执行最里层的循环,再执行其外一层的循环。8.for语句中表达式1可以是用来设置循环变量初值的赋值表达式,也可以是与循环变量无关的其它表达式。如: 注意以上两者在用法上的区别 9.表达式1、表达式3可以是一个简单的表达式,也可以是逗号表达式.10.表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体. for语句中的循环体省略的情形例2:编写程序,从键盘输入两个不等于零的正整数a、b(a<b),求它们之间的几何级数的和,数学表达式为: 分析: ①所求级数和的初值和终值由键盘任意输入; ②题目要求初值a<b,并且a>0,b>0; ③如果a>b,或者输入的值为负数,则程序提示输入错误,不进行任何计算,直接退出程序。程序流程图如右: 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算; 如果a>b,则计算。 请设计算法并编写程序验证。例3:编写一个可以为小学生提供加法、减法和乘法的二元算术运算练习的程序,计算100以内的两个数的和、两个数的差和两个数得的积,每次测试10个题目,依次由学生输入答案,并由计算机判断输