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

在线预览结束,喜欢就下载吧,查找使用更方便

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

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

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

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

第四章程序基本结构 4.6循环结构的程序设计 循环结构又称作重复结构。重复是计算机解题的一个重要特征,计算机运算速度快,最善于进行重复型的工作。在程序设计时,许多问题的求解也都归结为重复执行某一动作或计算。 例如输入全班学生的成绩;求若干数之和;迭代求根等。因此循环结构在程序设计中十分重要。 有两种循环结构:“当”型和“直到”型。C语言中提供3种语句:while,do-while,for语句来实现循环结构。 4.6.1while语句 while语句用于实现“当”型循环结构。 1、一般形式: while(表达式) 循环语句; 其中:表达式为控制循环是否继续执行的条件,循环语句为需要重复执行的部分,称为循环体。 非0 0 表达式 循环语句 2、执行过程:先计算表达式的值,若表达式的值为真(非0)时,则执行循环体,并不断重复直到表达式的值为假(0)时,停止执行循环体,转向循环体外的第一条语句。 执行过程如图所示。 while语句执行过程 while语句特点:先判断,后执行。 例4-41:用while语句求:1+2+3+……+100的值。 main() {inti,sum;/*i为循环变量,sum为累加和变量*/ i=1;sum=0;/*循环变量i赋初值1*/ while(i<=100) /*i的终值为100*/ {sum+=i; i++;/*i加1*/ } printf(“1+2+3+…+100=%d\n”,sum); } 运行结果为:1+2+3+…+100=5050 循环程序的几个要点: (1)定义循环变量。 (2)确定循环变量的初值、终值、增量(步长)。 (3)每执行一次循环体,循环控制变量要按增量变化一次,使循环变量的值趋向终值,即循环为有限次数循环。 如上例中,变量i为循环控制变量,i的初值为1,步长为1,循环结束的条件为i>100,循环次数为100次。 4.6.2do—while语句 do-while语句用来实现“直到”型循环结构。 1.一般形式: do 循环语句; while(表达式); 其中表达式、循环语句含义同while语句。 非0 0 表达式 循环语句 2、执行过程:先执行循环语句一次,再判别表达式的值,若表达式的值为真,则继续循环,否则终止循环。执行过程如图所示。 do-while语句执行过程 其特点:先执行,后判断。 例4-42:用do-while语句求:n!=1*2*3*…*(n-1)*n。 main() {inti,n;longs;/*i为循环变量,s为累乘变量*/ s=1;i=1;/*循环变量i赋初值1*/ scanf(“%d”,&n); do {s*=i; i++;/*i加1*/ } while(i<=n);/*i的终值为n*/ printf(“%d!=%ld\n”,n,s); } 4.6.3for语句 for语句几乎是所有高级语言都提供的循环控制结构。但C语言中的for语句使用最为灵活,它不仅可以用于循环次数确定的情况,而且可以用于循环次数不能确定而只能给出循环条件的情况,因而完全可以代替while语句和do-while语句。 1、一般形式: for(表达式1;表达式2;表达式3) 循环语句 其中: (1)表达式1一般为赋值表达式,用于在进入循环之前给循环变量赋初值。 (2)表达式2一般为关系表达式或逻辑表达式,用于执行循环条件的判定,它与while、do-while循环中的表达式作用完全相同。 (3)表达式3一般为赋值表达式或自增、自减表达式,用于修改循环变量的值。 2、执行过程: (1)、先计算表达式1的值; (2)、再计算表达式2的值,若其值为真(非0),则执行循环语句(即循环体)一次,然后执行第3步。若其值为假(0),则结束循环,转到第5步。 (3)、计算表达式3的值(一般为对循环变量进行改变)。 (4)、转回第2步继续执行。 (5)、执行for语句下面的语句。 0 非0 退出循环 表达式2 计算表达式1 计算表达式3 循环语句 for语句的执行流程如图所示。 for语句的执行流程图 例4-43:用for语句求:1+2+3+……+100的值。 main() { inti,sum=0; for(i=1;i<=100;i++) sum+=i; printf(“sum=%d\n”,sum); } 说明:for循环的三个表达式可以省略一个,省略两个,甚至省略三个,但分号间隔不能少。如上例中程序段: sum=0; for(i=1;i<=100;i++) sum=sum+i; 可以有以下几种等价表达方式: 表达方式1(省略表达式1): i=1;sum=0; for(;i<=100;i++) sum=sum+i; 表达方式2(省略表达式3): sum=0; for(i=1;i