
第5章循环结构程序设计
5 循 环 结构程序设计 第 章

为什么需要循环控制scanf("%f,%f%f.%f.%f"&score1,&score2,&score3,&score4,&score5)要向计算机输入全班50个学生的成绩1/输入一个学生5门课的成绩(重复50次相同的输入操作)解决aver=(score1+score2+score3+score4+score5)/5;方法求该学生平均成续分别统计全班50个学生的平均成绩:printf("aver=%7.2f",aver):(重复50次相同的计算操作1/输出该学生平均成绩重复写49个同样的程序段i=1:小设整型专量初值为1while(i<=50)//当i的值小于或等于50时执行花括号内的语句scanf(%f.%f%f.%f.%f&scorel.&score2.&score3,&score4,&score5)aver=(score1+score2+score3+score4+score5)/5;printf("aver=%7.2faver);i++;/每执行完一次循环使的值加1
为什么需要循环控制 i=1; //设整型变量i初值为1 while(i<=50) //当i的值小于或等于50时执行花括号内的语句 { scanf("%f,%f,%f,%f,%f",&score1,&score2,&score3,&score4,&score5); aver=(score1+score2+score3+score4+score5)/5; printf("aver=%7.2f",aver); i++; //每执行完一次循环使i的值加1 } 重复写49个同样的程序段 scanf(″%f,%f,%f,%f,%f″,&score1,&score2,&score3,&score4,&score5); //输入一个学生5门课的成绩 aver=(score1+score2+score3+score4+score5)/5; //求该学生平均成绩 printf(″aver=%7.2f″,aver); //输出该学生平均成绩 • 要向计算机输入全班50个学生的成绩; (重复50次相同的输入操作) • 分别统计全班50个学生的平均成绩; (重复50次相同的计算操作) 解决 方法

用while语句实现循环N表达式while(表达式)语句语句while语句可简单地记为:只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句。语句就是循环体。循环体可以是一个简单的语句,可以是复合语句(用花括号括起来的若干语句)。执行循环体的次数是由循环条件控制的,这个循环条件就是上面一般注意while循环的特点是形式中的表达式,它也称为循环条件表达式。当此表达式的值为先判断条件表达式,真”(以非0值表示)时,就执行循环体语句;为假”(以0表示)时,后执行循环体语句。就不执行循环体语句
用while语句实现循环 while(表达式) 语句 while语句可简单地记为: 只要当循环条件表达式为真(即给定的条件成 立),就执行循环体语句。 “语句 ”就是循环体。循环体可以是一个简单的语句,可以是复合语 句(用花括号括起来的若干语句)。 执行循环体的次数是由循环条件控制的,这个循环条件就是上面一般 形式中的 “表达式 ”,它也称为循环条件表达式。当此表达式的值为 “真 ” (以非0值表示)时,就执行循环体语句;为 “假 ” (以0表示)时, 就不执行循环体语句。 注意 while循环的特点是 先判断条件表达式, 后执行循环体语句。 表达式 语句 Y N

while语句实现循环sum=0【例5.1】求1+2+3+..+100,即100m=1i=1#include假int main()i≤100L真inti=1,sum=0//定义变量的初值为1sum的初值为0while(i100,条件表达式i<=100的值为假,不执行循环体sum=sum+i1/循环体开始i=i+11//第1次累加后,sum的值为1sum=sum+i;i++;1/加完后,的值加1,为下次累加做准备11/循环体结束printf(sum=%d\n",sum)://输出1+2+3+100的累加和C:AWINDOWS)system32/cmd.exe-Xreturn O;um=5050请按任意键继续(1)循环体如果包含一个以上的语句,应该用花括号括起来,作为复合语句出现。(2)不要忽略给i和sum赋初值:否则它们的值是不可预测的,结果显然不正确。语句。如果无此语句,则的值始终不改变,3)在循环体中应有使循环趋向于结束的语句。如本例中的计+;”循环永远不结束
while语句实现循环 【例5.1】求1+2+3+.+100,即σ𝑛=1 100 𝑛 #include int main() { int i=1,sum=0; //定义变量i的初值为1,sum的初值为0 while(i100,条件表达式i<=100的值为假,不执行循环体 { //循环体开始 sum=sum+i; //第1次累加后,sum的值为1 i++; //加完后,i的值加1,为下次累加做准备 } //循环体结束 printf("sum=%d\n",sum); //输出1+2+3.+100的累加和 return 0; } i≤100 sum=sum+i i=i+1 真 假 sum=0 i=1 (1) 循环体如果包含一个以上的语句,应该用花括号括起来,作为复合语句出现。 (2) 不要忽略给i和sum赋初值,否则它们的值是不可预测的,结果显然不正确。 (3) 在循环体中应有使循环趋向于结束的语句。如本例中的“i++;”语句。如果无此语句,则i的值始终不改变,循环永远不结束

用do.while语句实现循环注意dodowhile语句的特语句点是,先无条件地while(表达式);执行循环体,然后判断循环条件是否成立。语句V表达式N
用do⋯while语句实现循环 do 语句 while(表达式); 注意 do.while语句的特 点是,先无条件地 执行循环体,然后 判断循环条件是否 成立。 表达式 语句 Y N

用do..while语句实现循环sum=0i=1【例5.2】用do...while语句求1+2+3+..+100,即1002n=in#includesum=sum+iint main()i=i+1inti=1,sum=0真doi≤100t假sum=sum+i;i++;while(i<=100):printf("sum=%d\n",sum):C:/WINDOWS)system32)cmd.exe口return O;意键继续在一般情况下,用while语句和用dowhile语句处理同一问题时,若二者的循环体部分是一样的,那么结果也一样。但是如果while后面的表达式一开始就为假(O值)时,两种循环的结果是不同的
用do⋯while语句实现循环 【例5.2】用do.while语句求1+2+3+.+100,即σ𝑛=1 100 𝑛 #include int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; } 在一般情况下,用while语句和用do.while语句处理同一问题时,若二者的循环体部分是一样的,那么结果也一样。 但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。 i≤100 sum=sum+i i=i+1 真 假 sum=0 i=1

用do.while语句实现循环【例5.3】while和do...while循环的比较#include#include口XCAWINDOWSIsystem32/cmd.exeintmain()int main()please enteri,i=lm=55青按任意键继续int i,sum=0;inti,sum=0:printf("pleaseenteriji=?"):printf("pleaseenteriji=?"):口XC:\WINDOWSIsystem32)cmd.exescanf("%d",&i):scanf("%d"&i)leaseente1=?1dowhile(i<=10)按任意键继续C+sum=sum+i:sum=sum+i:i++:口Xi++:sC:WINDOWSsystem32/cmd.exe1while(i<=10):printf("sum=%d)n",sum):按任意键继续printf("sum=%d)n",sum):return 0;return O;XC:\WINDOWS)system32/cmd.exe=1仟意键继线
用do⋯while语句实现循环 【例5.3】while和do.while循环的比较。 #include int main() { int i,sum=0; printf("please enter i,i=?"); scanf("%d",&i); while(i int main() { int i,sum=0; printf("please enter i,i=?"); scanf("%d",&i); do { sum=sum+i; i++; }while(i<=10); printf("sum=%d\n",sum); return 0; }

用for语句实现循环Nfor(表达式1:表达式2;表达式3)表达式语句L语句表达式1:设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值。表达式2:是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。注意while循环的特点是先判断条件表达式,表达式3:作为循环的调整,例如使循环变量增值,它是在执行完循环后执行循环体语句。体后才进行的
用for语句实现循环 for(表达式1;表达式2;表达式3) 语句 表达式1: 设置初始条件,只执行一次。可以为零个、一个或多个变量 设置初值。 表达式2: 是循环条件表达式,用来判定是否继续循环。在每次执行循 环体前先执行此表达式,决定是否继续执行循环。 表达式3: 作为循环的调整,例如使循环变量增值,它是在执行完循环 体后才进行的。 注意 while循环的特点是 先判断条件表达式, 后执行循环体语句。 表达式 语句 Y N

用for语句实现循环for(表达式1:表达式2:表达式3)for(循环变量赋值;表达式2:表达式3)语句语句for语句更为灵活,不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。表达式1:设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值。表达式2:是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。表达式3:作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的
用for语句实现循环 for(表达式1;表达式2;表达式3) 语句 for语句更为灵活,不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只 给出循环结束条件的情况,它完全可以代替while语句。 表达式1: 设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值。 表达式2: 是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式, 决定是否继续执行循环。 表达式3: 作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的。 for(循环变量赋值;表达式2;表达式3) 语句

表达式1;while表达式2用for语句实现循环1求解表达式1语句for(表达式1:表达式2:表达式3三表达式3语句1假表达式2for语句的执行过程如下:真(1)求解表达式1。语句(2)求解表达式2,若此条件表达式的值为真(非0),则执行for语句中的循环体,然后执行第(3)步。若为假(0),则结束循环,转到第(5)步。求解表达式3(3)求解表达式3。(4)转回步骤(2)继续执行。注意:在执行完循环体后,循环变量的值超过”循环终值,循环结束。for语句的(5)循环结束,执行for语句下面的一个语句。下一语句
用for语句实现循环 for(表达式1;表达式2;表达式3) 语句 for语句的执行过程如下: (1) 求解表达式1。 (2) 求解表达式2,若此条件表达式的值为真(非0),则执行for语句中 的循环体,然后执行第(3)步。若为假(0),则结束循环,转到第(5)步。 (3) 求解表达式3。 (4) 转回步骤(2)继续执行。 注意: 在执行完循环体后,循环变量的值 “超过 ”循环终值,循环结 束。 (5) 循环结束,执行for语句下面的一个语句。 求解表达式1 表达式2 语句 求解表达式3 真 假 for语句的 下一语句 表达式1; while 表达式2 { 语句 表达式3 } ≡