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

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

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

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

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

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

第七章循环结构循环结构介绍 c语言一共三种循环结构,用于反复执行某一组指令直到达到某种条件为止。 循环可以分为两类:当型循环(for,while)和直到型循环(dowhile) while语句 while语句用来实现“当型”循环结构。其一般形式如下: while(表达式)语句 当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。 例6.2求1+2+3…+100的值 voidmain() { inti,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }需要注意: (1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。如果不加花括弧,则while语句的范围只到while后面第一个分号处。例如,本例中while语句中如无花括弧,则while语句范围只到“sum=sum+i;”。 (2)在循环体中应有使循环趋向于结束的语句。例如,在本例中循环结束的条件是“i>100”,因此在循环体中应该有使i增值以最终导致i>100的语句,今用“i++;”语句来达到此目的。如果无此语句,则i的值始终不改变,循环永不结束。 dowhile语句 dowhile语句的特点是先执行循环体,然后判断循环条件是否成立。其一般形式为 do 循环体语句 while(表达式); 它是这样执行的:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。例:用dowhile语句求1+2+3+……+100 程序如下: main(){ inti,sum=0; i=1; do {sum=sum+i; i++; } while(i<=100); printf("%d",sum); } 例6.4while和do-while循环的比较。 (1)main()(2)main() {intsum=0,i;{intsum=0,i; scanf(“%d”,&i);scanf("%d",&i); while(i<=10)do {sum=sum+i;{sum=sum+i; i++;i++; }}while(i<=10) printf(“sum=%d”,sum);printf(“sum=%d”,sum); }} 运行情况如下:运行情况如下: 11 sum=55sum=55 再运行一次:再运行一次: 1111 sum=0sum=11; 可以看到:当输入i的值小于或等于10时,二者得到结果相同。而当i>10时,二者结果就不同了。这是因为此时对while循环来说,一次也不执行循环体(表达式“i<=10”为假),而对dowhile循环语句来说则要执行一次循环体。可以得到结论:当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同。否则,二者结果不相同(指二者具有相同的循环体的情况)。 Do-while循环是先执行循环体,后判断表达式的“当型”循环(因为当条件满足时才执行循环体)。for语句 C语言中的for语句使用最为灵活,不仅可以用于循环次数 已经确定的情况,而且可以用于循环次数不确定而只给出 循环结束条件的情况,它完全可以代替while语句。 for语句的一般形式为 for(表达式1;表达式2;表达式3)语句 它的执行过程如下: (1)先求解表达式1。 (2)求解表达式2,若其值为真(值为非0),则执行for语句 中指定的内嵌语句,然后执行下面第(3)步。若为假(值为0), 则结束循环,转到第(5)步。 (3)求解表达式3。 (4)转回上面第(2)步骤继续执行。 (5)循环结束,执行for语句下面的一个语句。 for语句最简单的应用形式也就是最易理解的如下形式: for(循环变量赋初值;循环条件;循环变量增值)语句 例如: for(i=1;i<=100;i++)sum=sum+i; 可以看到它相当于以下语句:i=1; while(i<=100) {sum=sum+i; i++; } 显然,用for语句简单、方便。对于以上for语句的一般形式也可以改写为while循环的形式: 表达式1; while(表达式2) {语句 表达式3; } 说明: (1)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如for(;i<=100;i++)sum=sum+i;执行时,跳过“求解表达式1”这一步,其他不变。 (2)如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。例如: for(i=1;;i++)sum=sum+i; 表达式1是一个赋值表达