
程序设计基础 第6章循环控制结构
程序设计基础 第6章 循环控制结构

循环结构 while循环 do-while循环 for循环 循环嵌套 break和continue 循环结构程序设计 回四章基本控制结构 李周承 2/16
第四章 基本控制结构 2/16 while循环 do-while循环 for循环 循环嵌套 break和continue 循环结构程序设计 循环结构 章目录

循环思维的建立 求1+2+3+.+100的值 i=1;sum=0; ◆设和用Sum表示,循环 100次,第i次循环将累 N 加到Sum; i<=100 ◆Sum初值为0; Y ◆初值为1,每循环一次 增如1,直到100。 sum+=i好 ■算法? i=i+1; 输出sum; 恩四章基本控制结构 3/16
第四章 基本控制结构 3/16 ◼ 求1+2+3+.+100的值 ◆ 设和用sum表示,循环 100次,第i次循环将i累 加到sum; ◆ sum初值为0; ◆ i初值为1,每循环一次 增加1,直到100。 ◼ 算法? 循环思维的建立 i=1;sum=0; i<=100 sum += i; i = i + 1; Y N 输出sum;

for语句实现 #include "stdio.h" int main() i=1;sum=0; { int i,sum=0; for(i=1;i<=100;i=i+1) N i<=100 { sum+=i; } Y printf("sum=%od",sum); sum +i; return O; i=i+ 1 思考:如何求阶乘? fact=1*2*3*4*.*100 输出sum; 恩四章基本拉制结构 4116
第四章 基本控制结构 4/16 for语句实现 i=1;sum=0; i<=100 sum += i; i = i + 1; Y N 输出sum; #include "stdio.h" int main( ) { int i, sum=0; for ( i = 1; i <= 100; i = i + 1) { sum += i; } printf("sum=%d",sum); return 0; } 思考:如何求阶乘? fact=1*2*3*4*.*100

for循环 for语句的一般形式为: 求解表达式1 for(表达式1;表达式2;表达式3) 语句; 假 表达式2 #include "stdio,h" 真 int main() 语句 double i,fact=1; for(i=1;i<=100;i=i+1) 求解表达式3 { fact*=i仍 fo语句的 printf("fact=%.Olf\n",fact); 下一语句 return O; example_for 程序举例 恩四章基本控制结构 5/16
第四章 基本控制结构 5/16 ◼ for语句的一般形式为: for (表达式1;表达式2;表达式3) { 语句; } for循环 #include "stdio.h" int main( ) { double i, fact=1; for ( i = 1; i <= 100; i = i + 1) { fact *= i; } printf(“fact=%.0lf\n", fact); return 0; } example_for 程序举例

迭代思想及程序实现 迭代就是一个不断地由变量的旧值按照一定的规 律推出变量新值的过程,迭代亦称为递推。 ■送代一般与三个因素有关,它们是:初始值、迭代 公式和送代结束条件(选代次数)。 ①送代初值:即从什么初值开始。 ②送代过程:即如何迭代,解决送代的公式 ③送代次数或条件:即到什么时候为止。 昌四章基本拉制结构 6/16
第四章 基本控制结构 6/16 ◼ 迭代就是一个不断地由变量的旧值按照一定的规 律推出变量新值的过程,迭代亦称为递推。 ◼ 迭代一般与三个因素有关,它们是:初始值、迭代 公式和迭代结束条件(迭代次数)。 ①迭代初值:即从什么初值开始。 ②迭代过程:即如何迭代,解决迭代的公式 ③迭代次数或条件:即到什么时候为止。 迭代思想及程序实现

迭代法程序举创 计算2+22+222+.+2222222= int main O { int s=0,t=2; for(i=1;i<=7;i++) { s=s+t; t=t*10+2; } printf(2+22+.+2222222=od\n",s): return 0; 恩四章基本控制结构 7/16
第四章 基本控制结构 7/16 计算2+22+222+.+2222222= int main () { int s=0,t=2; for (i = 1; i <=7; i++) { s=s+t; t=t*10+2; } printf(“2+22+.+2222222=%d\n”, s); return 0; } 迭代法程序举例

循环结构程序设计举倒 斐波那契(Fibonacci数列)问题。 1,1,2,3,5,8,13,.0 ■第1、2个数为1、1。 ■从第3项开始,每个数是其前面两个数之和。 ◆F1=1 (n=1) ◆F2=1 (n=2) ◆Fn=Fn-1+Fn-2(n23) ■分析:变量f1和f2表示前两项,变量3表示前两项的和。 ■ 递推法解: ◆设用f1,f2,f3表示相邻的三个裴波那奥数据项, ◆据题意递推的初始条件为:f1=f2=1; ·递推的公式为:f3=f1+f2。 ■f3=f1+f2;f1=f2;f2=f3; 反复使用该语句序列就能够求出所要求的斐波那奥数列。 回四章基本拉制结构 8/16
第四章 基本控制结构 8/16 斐波那契(Fibonacci数列)问题。 1,1,2,3,5,8,13,.。 ◼ 第1、2个数为1、1。 ◼ 从第3项开始,每个数是其前面两个数之和。 ◆ F1=1 (n=1) ◆ F2=1 (n=2) ◆ Fn=Fn-1+Fn-2 (n≥3) ◼ 分析:变量f1和f2表示前两项,变量f3表示前两项的和。 ◼ 递推法解: ◆ 设用f1,f2,f3表示相邻的三个裴波那契数据项, ◆ 据题意递推的初始条件为:f1=f2=1; ◆ 递推的公式为: f3 =f1+f2。 ◼ f3=f1+f2;f1=f2; f2=f3; 反复使用该语句序列就能够求出所要求的斐波那契数列。 循环结构程序设计举例

Fibonaccia数列程序在“迭代”中求解 求:输出该数列前20项,年行5个数据项。 #include <stdio.h F:\MY DBANK2012年秋课件PROGRAMMING12012秋计科1202-O3 PROGRAMMING int main() 2 3 13 21 34 55 144 233 377 610 2584 4181 int f1 1,f2 1 987 1597 6765 Press any key to continue inti访 printf("/0-10d/-10d",f1,f2); for(i=3;i<=20;i++) r f3=f1+f2; printf("%/0-10d"f3); if(i5==0)printf("\n") example4.21 f1=f2; f2=f3: 程序举例 注意数据范围 return O; 昌四幸塞本拉制结构 9/16
第四章 基本控制结构 9/16 要求:输出该数列前20项,每行5个数据项。 #include int main( ) { int f1 = 1,f2 = 1,f3; int i; printf(“%-10d%-10d",f1,f2); for (i=3; i<=20; i++) { f3 = f1 + f2; printf("%-10d",f3); if( i % 5 == 0 ) printf("\n"); f1 = f2; f2 = f3; } return 0; } Fibonacci数列 程序 在“迭代”中求解 example4.21 程序举例 注意数据范围

判断一个整数是否素数。 如果m仅能被1和m整除,则m是素数。 如果m能够被2到m-1间的任意一个数整除,则m不是素数。 flag=1; for(i=2;i<=m-1;i++) if(m%i==0) flag=0; if(flag) {printf“是素数!n");} else {printf(“不是素数!n")} ■引入标记变量阳g来标记除法过程中是否发生整除的状态。 昌四章基本拉制结构 10/16
第四章 基本控制结构 10/16 ◼ 如果m仅能被1和m整除,则m是素数。 ◼ 如果m能够被2到m-1间的任意一个数整除,则m不是素数。 flag=1; for(i=2;i<=m-1;i++) { if(m%i==0) { flag=0; } } if (flag) { printf(“是素数!\n”); } else { printf(“不是素数!\n”);} ◼ 引入标记变量flag来标记除法过程中是否发生整除的状态 。 判断一个整数是否素数