第五章 循环结构程序设计

46
1

Upload: heath

Post on 23-Jan-2016

112 views

Category:

Documents


0 download

DESCRIPTION

第五章 循环结构程序设计. 第五章 循环结构程序设计. 第一节 循环的基本概念 第二节 while 语句 第三节 do -while 语句 第四节 for 语句 第五节 几种循环的比较 第六节 循环的嵌套 第七节 break 和 continue 语句 第八节 应用实例. 问题1:. §5.1 循环的概念. 一、循环问题. 什么是循环? 为什么要使用循环?. . 求1+2+3+ … +100的和。. 问题2: 求学生平均成绩。 ( 分数相加后除以课数 ). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第五章 循环结构程序设计

1

Page 2: 第五章 循环结构程序设计

共 46 页 第 2 页

第一节 循环的基本概念 第二节 while 语句 第三节 do -while 语句 第四节 for 语句 第五节 几种循环的比较 第六节 循环的嵌套 第七节 break 和 continue 语句 第八节 应用实例

Page 3: 第五章 循环结构程序设计

共 46 页 第 3 页

§5.1 循环的概念什么是循环?为什么要使用循环?

循环是有规律的重复操作。将复杂问题分解为简单的操作过程,程序只对简单过程描述,这些过程的多次重复就可完成对问题的求解。

循环是有规律的重复操作。将复杂问题分解为简单的操作过程,程序只对简单过程描述,这些过程的多次重复就可完成对问题的求解。

一、循环问题

100

1n

y n问题 1:问题 2:求学生平均成绩。 ( 分数相加后除以课数 )

求 1+2+3+…+100 的和。

问题 3:找出整数 [1~1000] 中能同时被 3 和 7 整除的数。

if--goto 循环 while 循环 for 循环 do while 循环

先判断后循环 (当型循环)

先循环后判断 (直到型循环)

Page 4: 第五章 循环结构程序设计

共 46 页 第 4 页

循环变量的初始值 循环进入条件 循环体 循环变量的增值

循环的基本要素

循环变量的初值满足条件则执行循环体重复执行的语句循环变量的改变 , 进一步测试条件

§5.1 循环的概念 ( 完 )

二、循环结构

循环体

N条件Y

入口

出口条件

N

Y

循环体

先循环后判断先判断后循环

Page 5: 第五章 循环结构程序设计

共 46 页 第 5 页

§ 5.2 无条件转向语句

二、标号语句格式:标号标识符:语句功能:指示语句在程序中的位置,作为转移语句的转移目标

一、 goto 语句(无条件转向语句)格式: goto 标号标识符功能:执行该语句时,将程序流程无条件地转向指定标号所在的语句继续执行。

标号由数字,字母,下划线组成标号由数字,字母,下划线组成goto loop;

loop: if(x<=y)

scanf(“%d,%d”,&x,&y); loop: if(x<=y) { t=x;x=y;y=t;}

goto loop;……

Page 6: 第五章 循环结构程序设计

共 46 页 第 6 页

main( ){ int k, sum=0; k=1; loop: if(k<=100){ sum=sum+k; k++; goto loop; }printf(“%d”,sum); }

说明: goto 可以从较深的多重循环中转移到外层,或从函数内,转移到函数外,不能从外到内

说明: goto 可以从较深的多重循环中转移到外层,或从函数内,转移到函数外,不能从外到内

§ 5.2 无条件转向语句

Page 7: 第五章 循环结构程序设计

共 46 页 第 7 页

while 循环1. 格式: while (表达式) 循环体2. 功能:先判断表达式的值,若为非零,重复执行循环体语句,再判断…直到表达式的值为零,退出循环体。

即:测试 --- 执行 -- 测试 -- 执行 --

§5.2 用 while 设计循环结构

while ( 条件 ) { 语句组 }

x

n

ns1

main ( ) { int s,n ; s=0 ; n=1;while(n<=100) { s=s+n ; n++; }printf(“%d\n”, s); }

100

Page 8: 第五章 循环结构程序设计

共 46 页 第 8 页

3. 说明 :( 1 )当循环体中语句多于一条时,用 { } ,否则,循环只对一个;起作用 .( 2 )循环体内部必须有实现对循环变量增值的语句,否则,易出现“死循环” .( 3 ) 条件表达式要有括号, 后面不加分号 .( 4 ) 注意条件的边界值 .

例题:求 1+2+3…+n<=10000的最大的 n 。

main( ){ int a,k; a=k=0; while(a<=10000) { ++k; a+=k; }printf(“1+2+3…..+%d=%d\n”,k-1,a-k);}

§5.2 用 while 设计循环结构 ( 续 )

Page 9: 第五章 循环结构程序设计

共 46 页 第 9 页

main( ){ int number=0;while(number<=1){ number++; printf(“%d\n”,number);} }

结果: 1 2

number 初值为 0, 条件为 number<=1

1.number 为 0, 满足条件 number 为 0, 然后自增为 1

输出 number 1

2.number 为 1, 满足条件 number 为 1, 然后自增为 2

输出 number 2

3.number 为 2, 不满足条件

§5.2 用 while 设计循环结构 ( 续 )

Page 10: 第五章 循环结构程序设计

共 46 页 第 10 页

main( ) { int number=0;

while(number++<=1)

printf(“*%d\n”,number);

printf(“**%d\n”,number); }

循环进行了多少次 ?输出的值 ?

结果 : *1 *2 **3

条件表达式执行次数1

2

3

条件表达式中变量的值0

1

2

执行哪个printf 语句@

@

#

@

#

输出的number的值1

2

3

§5.2 用 while 设计循环结构 ( 续 )

Page 11: 第五章 循环结构程序设计

共 46 页 第 11 页

§5.3 用 do-while 设计循环结构

do 语句 while ( 条件 ) ;

1. 格式: do 循环体 while (表达式) ;

2. 功能:先执行循环体 ,再判断表达式的值,若为非零,重复执行循环体语句,再判断…… .直到表达式的值为零,退出循环体

do -while 循环

即:执行 -- 测试 --- 执行 -- 测试 --

条件N

Y

循环体

x

n

ns1

Page 12: 第五章 循环结构程序设计

共 46 页 第 12 页

main() { int n=1,s=0,x; scanf("%d",&x); do {s=s+n; n++;} while (n<=x);printf("s=%d\n",s); }

§5.3 用 do-while 设计循环结构 (续 )

n<=x

s=s+n

Y

n++

开始

初始化 n,s

N

结束

输入 x

输出 s

Page 13: 第五章 循环结构程序设计

共 46 页 第 13 页

main(){int s=0,x; scanf("%d",&x); while (x<=10) {s=s+x; x++;} printf("s=%d\n",s);}

main() {int s=0,x; scanf("%d",&x); do {s=s+x; x++;} while(x<=10); printf("s=%d\n",s); }

输入: 12输出:s=12

循环至少执行一次 循环没有

被执行

输入: 12输出:s=0

3 、 while 与 do while 的比较

§5.3 用 do-while 设计循环结构 ( 完 )

Page 14: 第五章 循环结构程序设计

共 46 页 第 14 页

计算表达式 1 初值 ;计算表达式 2 并判断, 0 时跳出循环,非 0 时执行循环;当表达式 2 非 0 ,执行循环体语句,计算表达式 3 增量;自动转到第二步 ( 计算表达式 2)…... 继续执行。

for 语句 初值表达式 1 条件表达式 2 增量表达式 3

for ( 表达式 1; 表达式 2; 表达式 3) { 语句组 }

§5.4 用 for 语句设计循环结构

1. 格式 :

2. 功能 :

main( ) { int n, s;for(n=1 ; n<=100 ;n++) s=s+n;printf(“%d\n”,s); }

变量的增量

循环体

变量的初值

循环条件

Page 15: 第五章 循环结构程序设计

共 46 页 第 15 页

1. 表达式 1, 表达式 2 和表达式 3 均可缺省

for (;n<100;n++) 缺省 e1, n 应在循环之前赋初值 for (n=0;;n++) 缺省 e2, 造成死循环,不可使用!for (n=0;n<100;) 缺省 e3, n 增量应在循环体内进行for (; ;) 缺省 e1,e2,e3 死循环for (;n<100;) 缺省 e1,e3

for (;n<100;n++) 缺省 e1, n 应在循环之前赋初值 for (n=0;;n++) 缺省 e2, 造成死循环,不可使用!for (n=0;n<100;) 缺省 e3, n 增量应在循环体内进行for (; ;) 缺省 e1,e2,e3 死循环for (;n<100;) 缺省 e1,e3

分号始终不能缺省!3. 说明

不可用

§5.4 用 for 语句设计循环结构 ( 续 )

Page 16: 第五章 循环结构程序设计

共 46 页 第 16 页

for( 初值 ; 判断 ; 增量 ) 语句;for( 初值 ; 判断 ; 增量 ) { 复合语句 ;}for( 初值 ; 判断 ; 增量 ) ;

2. 表达式 1 和表达式 3 可是与初值、增量无关的逗号表达式

for (s=0,n=1;n<=100;s=s+n, printf(“ %d” ,s)) n++;for (s=0;n<100;s=s+n,n++) {printf(“ %d” ,s);}for (s=0,n=1;n<=100;s=s+n, printf(“ %d” ,s)) n++;for (s=0;n<100;s=s+n,n++) {printf(“ %d” ,s);}

求累加和n 的初值在

for 之前完成

增量在 for之外完成

for 语句的形式:

§5.4 用 for 语句设计循环结构 ( 续 )

Page 17: 第五章 循环结构程序设计

共 46 页 第 17 页

main() { int n=1,s=0,x; scanf("%d",&x);loop:if(n<=x) {s=s+n; n++; goto loop;} printf("s=%d\n",s); }

10s=55100s=5050255s=32640while(n<=x

)

}

for(;n<=x;)

}

if-gotoif-gotoWhile(n<=x)While(n<=x)for(;n<=x;)for(;n<=x;)

循环结束

§5.4 用 for 语句设计循环结构 ( 续 )

n<=x

s=s+n

n++

开始

初始化 n,s,x

N

结束

输入 x

Y输出 s

Page 18: 第五章 循环结构程序设计

共 46 页 第 18 页

main(){ int n,s; for(n=1;n<=10;n+=2) printf("n=%d\n",n);}

main(){ int n,s; for(n=1;n<=10;n+=2); printf("n=%d\n",n);}

以下程序的输出结果输出结果:n=11

输出结果:n=1n=3n=5n=7n=9

无循环体 循环体

;

特点:先判断后循环特点:先判断后循环

printf("n=%d\n",n);

§5.4 用 for 语句设计循环结构 ( 完)

Page 19: 第五章 循环结构程序设计

共 46 页 第 19 页

§5.5 几种循环的比较

1 、 C 中的三种循环语句 while( ) ,do-while( ), for( ) 都可由表达式控制重复执行一个循环体,都可以用来解决同一个问题,一般情况下,可以相互代替。

2 、三种循环各有特点:1 ) 当循环次数及条件在程序运行中才能确定时,选用while( ) 或 do-while( ) 语句两者区别: while( ) 顶部测试,可能一次也不执行 do-while( )底部测试,至少执行一次

Page 20: 第五章 循环结构程序设计

共 46 页 第 20 页

§5.5 几种循环的比较 ( 完 )

( 2 ) 如果初值,条件明显,循环次数已给出,选用 for( ) 语句,功能最强。

( 3 ) 出现“死循环”的几种情况 for( ; ; ) for( ….; 非零常数表达式;…… ) while( 非零常数表达式) do ..while( 非零常数表达式)

main() { int I=0,j=5;while(j<10){ j=I*2;printf(“%d”,j);} 结果为: ?

Page 21: 第五章 循环结构程序设计

共 46 页 第 21 页

§5.6 循环的嵌套

一、循环嵌套的概念

1 2 3 4 5 6 7 8 9---------------------------------12 43 6 94 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81

在循环体中,又包含有循环结构。

行循环中包含了列循环。将一元钱换成硬币 ,共有多少种换法 ?

将一元钱换成硬币 ,共有多少种换法 ?

Page 22: 第五章 循环结构程序设计

共 46 页 第 22 页

二、嵌套结构规则

外循环

内循环交叉循环

外循环

入口内循环出口

内循环出口

外循环出口

§5.6 循环的嵌套 ( 续 )

三、循环嵌套的运行过程

外层循环取一个值,内层循环取遍所有的值

Page 23: 第五章 循环结构程序设计

共 46 页 第 23 页

每只公鸡 5 个钱,每只母鸡 3 个钱,每 3 只小鸡 1 个钱,用 100 个钱,买 100 只鸡,问公鸡、母鸡和小鸡各买几只?

分析分析

定义变量 x,y,z , 表示公鸡、母鸡和小鸡的只数int x,y,z;

for(x=1;x<=20;x++)

for(y=1;y<=33;y++)

for(z=1;z<=300;z++)

{ ….}

程序运算多少次?

§5.6 循环的嵌套 ( 续 )

Page 24: 第五章 循环结构程序设计

共 46 页 第 24 页

§5.6 循环的嵌套(续)x 最多为 20 , y 最多为 33 ,当 x,y已确定时, z 的值为 100-x-y

main() { int x,y,z;

for(x=1;x<20;x++)

for(y=1;y<=33;y++)

{ z=100-x-y;

if(5*x+3*y+z/3==100)

printf(“%d,%d,%d\n”,x,y,z); } }

共六组解 :

x y z

3 20 77

4 18 78

7 13 80

8 11 81

11 6 83

12 4 84

所求的 z 不能被 3整除如何解决 ?

Page 25: 第五章 循环结构程序设计

共 46 页 第 25 页

main( ) { int a,b,c,k=0;

for(a=0;a<=100;a++)

for(b=0;b<=50;b++)

for(c=0;c<=20;c++)

{ if (a+2*b+5*c==100)

k++;

}

printf(“%d\n”,k); }

将一元钱换成一分,二分和五分的硬币,共有多少种换法?

定义变量 a,b,c

定义变量 k

§5.6 循环的嵌套 ( 续 )

Page 26: 第五章 循环结构程序设计

共 46 页 第 26 页

要求:从键盘输入m 值,输出m 行每行m 个 *号。 例:输入 m=4 ,输出的图形如下:思路:1. 输入 m;2. 重复打印m 行,每行打印m 个 *;

* * * ** * * ** * * ** * * *

* * * ** * * ** * * ** * * *

1. 输入 m ;2. for ( k=1; k<=m; k++) 打印一行中的 m 个 * ;

§5.6 循环的嵌套 ( 续 )

Page 27: 第五章 循环结构程序设计

共 46 页 第 27 页

§5.6 循环的嵌套(完)

细化:1. 输入 m ;2. for ( k=1; k<=m; k++) { 打印 m 个 * ; 换新行 ; }

1. 输入 m ;2. for ( k=1; k<=m; k++) { for ( j=1; j<=m; j++) printf (“*”) ; printf(“\n”) ; }

main ( ) { int k, m, j; scanf ( “%d”, &m); for( k=1; k<=m; k++) { for ( j=1; j<=m; j++) printf (“*”) ; printf(“\n”) ; } }

Page 28: 第五章 循环结构程序设计

共 46 页 第 28 页

§5.7 break 和 continue 语句

break 语句格式breakbreak ;;

break 语句的功能 1. 在 switch 语句中结束 case子句,使控制转到

switch 语句之外。 2. 在循环结构中 ,break 语句使流程转向该循环体

的外层继续运行。向外退出一层循环

break语句与 continue语句

Page 29: 第五章 循环结构程序设计

共 46 页 第 29 页

例题:求 100 以下的整数中为 13 的倍数的最大数 main( )

{ int i; for (i=100; i>=0; i--) { if((i%13)==0) break;} printf(“%d\n”,i); }

如何求 100 以下所有 13 的倍数

§5.7 break 和 continue 语句( 续 )

Page 30: 第五章 循环结构程序设计

共 46 页 第 30 页

continue 语句格式:continuecontinue ;;

continue 语句的功能:continue 语句仅能在循环语句中使用。它的作用不是结束循环,而是开始一次新的循

环。结束一次循环对于 for 语句,将控制转到执行增量和条件测

试部分。对于 while 和 do-while 语句,将控制转到

条件测试部分。

§5.7 break 和 continue 语句( 续 )

Page 31: 第五章 循环结构程序设计

共 46 页 第 31 页

main( ){ int x,y,z;for(x=1;x<=20;x++)for(y=1;y<=33-x;y++){ z=100-x-y;if(5*x+3*y+z/3==100) { if(z%3!=0) continue; printf(“%d,%d,%d\n”,x,y,z); } }}

将前面例题中 ,小鸡的数 z 中不能被 3 整除的解筛除 ?

§5.7 break 和 continue 语句( 续 )

Page 32: 第五章 循环结构程序设计

共 46 页 第 32 页break 的使用

main( ) { int i,j,a=0;

for(i=0;i<2;i++)

{ for(j=0;j<4;j++)

{ if(j%2) break;

a++;}

a++; #

}

printf(“a=%d\n”,a); }

a=4 a=5

a=6 a=7

1. i=0

j=0,if 为 0,a 从 0 到 1

j=1,if 为 1 退出 j 循环执行语句 # a 从 1 到 22. i=1

j=0,if 为 0,a 从 2 到 3

j=1,if 为 1 退出 j 循环执行语句 # a 从 3 到 4

§5.7 break 和 continue 语句( 续 )

Page 33: 第五章 循环结构程序设计

共 46 页 第 33 页

main( ) { int i,j,x=0;

for(i=0;i<2;i++)

{ x++;

for(j=0;j<=3;j++)

{ if(j%2) continue;

x++;}

x++; #

}

printf(“x=%d\n”,x); }

x=4 x=8

x=6 x=12

1. i=0, x 从 0 到 1

j=0,if 为 0 ,x 从 1 到 2

j=1,if 为 1

j=2,if 为 0,x 从 2 到 3

j=3,if 为 1

执行 语句 # x 为 42. i=1,x 从 4 到 5

内部循环 j=0,if 为 0, x 从 5 到 6

j=1,if 为 1

j=2,if 为 0 ,x 从 6 到 7

j=3,if 为 1

x 为 8

continue的使用

§5.7 break 和 continue 语句( 完 )

Page 34: 第五章 循环结构程序设计

共 46 页 第 34 页

§5.8 循环应用

例题例题 11

一个古典数学问题:有一对兔子,从出生后第 3 个月起每月都生一对兔子。小兔子长到第三个月后每月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少只及四十个月后所有兔子的总数 ?

设以不满 1 个月的为小兔子,满 1 个月不满 2 个月的为中兔子, 3 个月以上的为老兔子,列出各个月的兔子情况:

Page 35: 第五章 循环结构程序设计

共 46 页 第 35 页

§5.8 循环应用

第几个月 小兔子数 中兔子数 老兔子数 兔子总数 1 1 0

0 1

2 0 1 0 1

3 1 0 1 2

4 1 1 1 3

5 2 1 2 5

6 3 2 3 8求 Fibonacci数列的前 40个数?数列特点:第 1 , 2两个数为 1 ,1 。从第三个数开始,该数是其前面两个数之和。即:

F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2 (n>=3)

Page 36: 第五章 循环结构程序设计

共 46 页 第 36 页

2. 解题方法:

设计求每月兔子总数的通用程序。设计一个计数器 i表示当前月数,变量 f1,f2 分别表示前两月兔子总数并分别输出,当计数器 i值变为20 时,能得出前四十个月所有兔子数 (总数 )。

设计求每月兔子总数的通用程序。设计一个计数器 i表示当前月数,变量 f1,f2 分别表示前两月兔子总数并分别输出,当计数器 i值变为20 时,能得出前四十个月所有兔子数 (总数 )。

3. 程序与流程图

§5.8 循环应用( 续 )

Page 37: 第五章 循环结构程序设计

共 46 页 第 37 页

main( ) { long f1,f2; int i; f1=1; f2=1; for(i=1;i<=20;i++) { printf(“%12ld,%12ld”,f1,f2); if(i%2==0)printf(“\n”); f1=f1+f2; f2=f2+f1; } }

§5.8 循环应用 ( 续 )

开始

初始化 f1,f2

初始化 i

i<=20?

输出 f1 和 f2Y

f1=f1+f2

f2=f1+f2

N

结束

Page 38: 第五章 循环结构程序设计

共 46 页 第 38 页

§5.8 循环应用例题例题 C5-10

1. 问题分析译密码 (输入一行字符,要求输出其相应的密码。 )

规律 :将字母 A变成字母 E,(a 变成 e),即变成其后的第四个字母, W 变成 A,X变成B,Y变成 C,Z变成 D。非字母字符不变(如“ China!”变成“ Glmre!”)

为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。

Page 39: 第五章 循环结构程序设计

共 46 页 第 39 页

#include<stdio.h> main() {char c; while(c=getchar( )!=‘\n’) {if(c>=‘a’&&c<‘z’||c<=‘A’&&c<=‘Z’) { c=c+4; if(c>‘Z’&&c<=‘Z’+4||c>‘z’) c=c-26; } printf(“%c”,c); } }

§5.8 循环应用 ( 续 )开始

定义 c

c!=‘\n’?

Y

c=c+4

c=c-26

N

结束c 为字母?

Y

c>‘Z’&&c<‘Z’+4||C>‘z’

输出 c

Y

N

Y

N

小写字母都>‘Z’+4

Page 40: 第五章 循环结构程序设计

共 46 页 第 40 页

§5.8 循环应用 ( 续 )

例题:求两个数的最大公约数

辗转相除法已知两个数 M 和 N ,假定 M>N ,则求 M%N ,若余数 r

为 0 ,则 N 即为是所求,若余数 r 不为 0 ,用 N 除 r ,再求其余数……直到余数为 0 ,则除数就是最大公约数。

求 76 与 64 的最大公约数r=76%64 , r 的值为 12 r 不为 0

r=64%12 , r 的值为 4 r 不为 0

r=12%4 , r 的值为 0

76 与 64 的最大公约数为 4

Page 41: 第五章 循环结构程序设计

共 46 页 第 41 页

§5.8 循环应用( 续 )程序: main( ){ int x,y,t,r;scanf(“%d,%d”,&x,&y);if(x<y){ t=x; x=y; y=t; }while(x%y){ r=x%y; x=y; y=r;} printf(“%d\n” , y);}

输入 64 , 76

交换 x,y

条件是:余数不为 0

除数做被除数,余数做除数

Page 42: 第五章 循环结构程序设计

共 46 页 第 42 页

第五章 总结

一 有关循环的概念(满足条件重复执行一组语句)

二 循环结构的表达方法:四种语句( if-goto,while( ) ,do -while( ), for( ) )

三 边界条件的处理(自增,自减在循环条件中的使用)

四 循环嵌套和多重循环

五 break, continue 的作用和区别

Page 43: 第五章 循环结构程序设计

共 46 页 第 43 页

第五章 习题

1. 设有一下程序段:则执行后结果为( ) int x=0,s=0; while(!x !=0) s+=++x; printf(“%d”,s); A. 输出 0 B. 输出 1 C. 条件表达非法 D. 构成死

循环2. 下面程序段的运行结果是: ( ) x=y=0; while(x<15) y++, x+=++y; printf(“%d,%d”,y,x); A. 20, 7 B. 6, 12 C. 20, 8 D. 8, 20 3. 下面程序段的运行结果是( ) for(y=1;y<10;)y=((x=3*y,x+1),x-1);

printf(“x=%d,y=%d”,x,y);

A. x=27,y=27 B. x=12,y=13 C. x=15,y=14 D. x=y=27

Page 44: 第五章 循环结构程序设计

共 46 页 第 44 页

第五章 习题 4. 下面程序的运行结果是 ( ) main( ) { int I, b, k=0;

for( I=1; I<=5; I++)

{b=I%2; while(b-- >=0) k++; }

printf(“%d,%d”,k,b);}

A. 3, -1 B. 8, -1 C. 3, 0 D. 8, -2

5. 有 1020 个西瓜,第一天卖一半多两个,以后每天卖剩 下的一半多两个,问第几天后能卖完?请填空。 main( ) { int day=0,x1=1020,x2; while( ____) {x2=______; x1=x2; day++;} printf( “day=%d\n”,day); }

Page 45: 第五章 循环结构程序设计

共 46 页 第 45 页

第五章 习题6. 等差数列的第一项 a=2,公差 d=3, 下面程序的功能是在

前 n项和中,输出能被 4 整除的所有的和。请填空。 main( ) { int a=2, d=3, sum=0; do { sum+=a; a+=d; if(______) printf(“%d\n”,sum);} while(sum<=200); }

7. 下面程序的运行结果是 ___________ 。 main( ) { int i, x, y; i=x=y=0;

do { ++i; if (i%2==0) {x=x+i; i++;}

y=y+i++; } while(i<=7);

printf(“x=%d,y=%d\”,x,y); }

Page 46: 第五章 循环结构程序设计

共 46 页 第 46 页

第五章 习题

8. 下面程序的运行结果是 ___________ 。 main( ) { int i, j; for(i=0;i<=3;i++) { for(j=0;j<=5;j++) {if (i==0||j==0||i==3||j==5) printf(“*”); else printf(“ ”); } printf(“\n”); } }