1、whi1e语句-P93 格式: >执行流程: while while(表达式) 循环体语句; 表达式 特点:先判断表达式,再确定是否执行循环体。 循环体 注意: ①表达式的括号()不能省; ②表达式可以是任意类型的表达式; ③表达式的值是循环的控制条件; ④如果循环体是多条语句-一必须使用复合语句; ⑤循环体内可以包含任何合法C语句
1、while语句—P93 while (表达式) 循环体语句; Ø 执行流程: T 表达式 注意: ① 表达式的括号()不能省; ② 表达式可以是任意类型的表达式; ③ 表达式的值是循环的控制条件; ④ 如果循环体是多条语句-必须使用复合语句; ⑤ 循环体内可以包含任何合法C语句。 特点:先判断表达式,再确定是否执行循环体。 格式:
begin 例如:求1+2+3+.+100 sum=0;i=1; N ① inti=1,sum=0;1∥循环变量i的初始化 1≤100 ② while(i<=100)/循环条件的设置 F ③ { sum=sum+i; ④ sum=sum+i; i=i+1; ⑤ t+; /循环控制变量的改变 ⑧ 输出sum ⑦ printf ("sum %d",sum); end 循环条件 初值 真 真 真 真 真 真 真 假 循环次数 1 2 3 4 。 99 100 101 sum e 1 3 6 10 5058 1 1 2 3 4 5 106 101
① int i=1 , sum = 0; //循环变量 i 的初始化 ② while (i<=100) //循环条件的设置 ③ { ④ sum=sum+i; ⑤ i++; //循环控制变量的改变 ⑥ } ⑦ printf ("sum = %d" , sum); 例如:求 1 + 2 + 3 + . + 100
2、如何终止while循环.-改变循环条件 例如:1+2+3+4+5 代码1: 死循环! ① int i=1,s=0, <int i=1,s=0; ② while (i<= while (i <5); ③ s=s+i; ③ s=s+i; ④ ++i街 ④ ++i ⑤ printf("s=%d",s); ⑤ printf("s=%d",s); 代码3: 代码4: ① int i=1,s=0; ① int i=5,s=0; ② while (i <5) ② while (i>=1) ③ {s=s+i;++i} ③ {s=s+i;-i} ④ printf("s=%d",s); ④printf("s=%d",s) 结论:要正确设计循环体。在循环体中,必须让循环变量朝着正 确的方向变化,循环才能正常结束
2、如何终止 while循环 -改变循环条件 例如:1+2+3+4+5 结论:要正确设计循环体。在循环体中,必须让循环变量朝着正 确的方向变化,循环才能正常结束。 代码2: ① int i = 1,s = 0; ② while (i <= 5); ③ s = s + i; ④ ++i; ⑤ printf("s=%d" ,s); 代码3: ① int i = 1,s = 0; ② while (i <= 5) ③ { s = s + i; ++i;} ④ printf("s=%d" ,s); 代码1: ① int i = 1,s = 0; ② while (i <= 5) ③ s = s + i; ④ ++i; ⑤ printf("s=%d" ,s); 代码4: ① int i = 5,s = 0; ② while (i >=1) ③ { s = s + i; -i;} ④ printf("s=%d" ,s); 死循环! √ √ × ×
3、while循环应用举例 例1:输入一批整数,以0结束,求最大、和、平均。 #include <stdio.h> 算法分析:整数的个数不确定、找最 ① ② int main() 大一打擂台 ③ int x,max,n=0; 1)$=0,n=0: ④ double s=0; 2)输入第一个数X ⑤ scanf("%d",&x;∥输入第一个数 3)若x1=0 ⑧ while(xl=O】 ① if (n==0)max=x; ⑦ 【t(n==0)max=x;∥给max赋初值 ② else ⑧ else if (x>max)max=x; ③ if (max<x)max=x;} ⑨ S=S+X;n++; ④ ⑩ s=s+x;n++; scanf("%d",&x);/输入下一个数 ⑤ 输入下一个数x,转到3)》 ① @ printf("%d %lf %lfn",max,s,s/n); 4)输出max、s、s/n ⑧ return 0; ④
3、while循环应用举例 例1:输入一批整数,以0结束,求最大、和、平均。 ① #include <stdio.h> ② int main() ③ { int x,max,n=0; ④ double s=0; ⑤ scanf("%d",&x); //输入第一个数 ⑥ while (x!=0) ⑦ { if (n==0) max=x; //给max赋初值 ⑧ else if (x>max) max=x; ⑨ s=s+x; n++; ⑩ scanf("%d",&x); //输入下一个数 ⑪ } ⑫ printf("%d %lf %lf\n",max,s,s/n); ⑬ return 0; ⑭ } 算法分析:整数的个数不确定、找最 大—打擂台 1)s=0 , n=0; 2)输入第一个数 x 3)若 x!=0 ① if (n==0) max=x; ② else ③ { if (max<x) max=x;} ④ s=s+x; n++; ⑤ 输入 下一个数 x,转到3) 4)输出max 、s、s/n
3、while循环应用举例 例2:输入一个正整数,反序输出各位数(输入:12345,输出54321) 算法: 1)定义x是long int,m是int 2)输入X 3)若x>0则:m=X%10,输出m;x=x/10; 转到3)继续。 程序: ① #include <stdio.h> ② int main() ③ long int x; int m; ④ scanf("%ld",&x); ⑤ while (x>0) ⑥ m=x%10; W取个位 ⑦ printf("%d",m;/输出个位 ⑧ x=x/10; lx去掉个位 ⑨ } ⑩ return 0; ①
3、while循环应用举例 例2: 输入一个正整数 , 反序输出 各位数(输入: 12345, 输出5 4 3 2 1 ) 算法: 1)定义 x是long int ,m 是int 2)输入x 3)若x>0 则: m= x % 10, 输出 m;x=x/10; 转到 3)继续。 程序: ① #include <stdio.h> ② int main() ③ { long int x; int m; ④ scanf("%ld" ,&x); ⑤ while (x>0) ⑥ { m=x%10; // 取个位 ⑦ printf("%d " ,m); //输出个位 ⑧ x=x/10; //x 去掉个位 ⑨ } ⑩ return 0; ⑪ }