while语句说明 求1≈10 while语句和for语句 的累加和 都是在循环前先判断条件 while和for的比较 for(表达式1;表达式2;表达式3) for(i=1;i<=10;i++) 循环体语句 sum sum i; 表达式1; i=1; while(表达式2) while (i<=10) f { 循环体语句; sumsum +i; 表达式3; i++;
while 语句和for语句 都是在循环前先判断条件 while 和 for 的比较 while 语句说明 表达式1; while (表达式2) { 循环体语句; 表达式3; } for(表达式1; 表达式2; 表达式3) 循环体语句 for (i = 1; i <= 10; i++) sum = sum + i; i = 1; while (i <= 10) { sum = sum + i; i++; } 求1~10 的累加和
程序解析一求π的近似值 例4-1 #include<stdio.h> π 11 #include <math.h> =1- void main() 4 3 7 int denominator,flag; double item,pi; flag =1;denominator=1 item =1.0;pi =0; while(fabs (item)>=0.0001) f 精确到最后一项的 item flag 1.0/denominator; 绝对值小于104, pi=pi+item; 即litem|≤10-4,达 flag -flag; 到精度要求,循环 denominator denominator +2; 结束 pi=pi *4; printf(“pi=%fn”,pi); fabs(item)<0.0001 3 精度要求给出了循环结束条件
程序解析-求π的近似值 例4-1 #include<stdio.h> #include <math.h> void main( ) { int denominator, flag; double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while (fabs (item) >= 0.0001) { item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; } pi = pi * 4; printf ( “pi = %f\n”, pi); } 1 1 1 1 4 3 5 7 = − + − + 精确到最后一项的 绝对值小于10–4 , 即|item|≤ 10–4 , 达 到精度要求,循环 结束 fabs(item) < 0.0001 精度要求给出了循环结束条件
π 11 =1- 一一一十 程序解析一求π的近似值 4 357 #include<stdio.h> #include <stdio.h> #include <math.h> #include <math.h> void main() void main() int denominator,flag; int s; double item,pi; float n,t,pi; flag =1;denominator=1 item =1 t=1;s=0;n=1.0;m=1 while(fabs (item)>=0.0001) while((fabs(t))>=1e-6) item flag 1.0/denominator; {S=S+t街 pi=pi item; n=n+2; flag -flag; m=-m; denominator denominator +2; } t=m/n; pi=pi 4; printf(“pi=%fn”,pi); pi=s*4; printf("pi=%fn",pi);
1 1 1 1 4 3 5 7 = − + − + 程序解析-求π的近似值 #include<stdio.h> #include <math.h> void main( ) { int denominator, flag; double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while(fabs (item) >= 0.0001) { item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; } pi = pi * 4; printf ( “pi = %f\n”, pi); } item=0.0 ? #include <stdio.h> #include <math.h> void main() { int s; float n,t,pi; t=1; s=0; n=1.0; m=1; while((fabs(t))>=1e-6) { s=s+t; n=n+2; m=-m; t=m/n; } pi=s*4; printf("pi=%f\n",pi); }
4.1.3统计输入的一批学生的平均成绩 例4-2从键盘输入一批学生的成绩,计算平均分 分析: 口求累加和 口确定循环条件 ■不知道输入数据的个数,无法事先确定循环次数 用一个特殊的数据作为正常输入数据的结束标志, 比如选用一个负数作为结束标志
例4-2 从键盘输入一批学生的成绩,计算平均分 分析: 求累加和 确定循环条件 ◼ 不知道输入数据的个数,无法事先确定循环次数 ◼ 用一个特殊的数据作为正常输入数据的结束标志, 比如选用一个负数作为结束标志。 4.1.3 统计输入的一批学生的平均成绩
例4-2从键盘输入一批学生的成绩,立 四"G:1C语言课程\2010c. #include <stdio.h> Enter grades: -19869877855 void main() Grade average is 0 int num; Press any key to continue double grade,total; num 0;total =0; printf("Enter grades:In"); scanf(“%lf”,&grade);体输入第1个数* while(grade >=0) 输入负数,循环结束* { c四“G:1C语言课程12010Ck... total total grade; Enter grades: num++; 8987655367-1 Grade average is 72.20 scanf ("%lf",&grade); Press any key to continue if(num !0) printf("Grade average is %.2fn",total/num); else printf("Grade average is O\n"); 3
例4-2 从键盘输入一批学生的成绩,计算平均分 #include <stdio.h> void main() { int num; double grade, total; num = 0; total = 0; printf(“Enter grades: \n"); scanf(“%lf”, &grade); /* 输入第1个数*/ while (grade >= 0) /* 输入负数,循环结束 */ { total = total + grade; num++; scanf (“%lf”, &grade); } if(num != 0) printf(“Grade average is %.2f\n", total/num); else printf(" Grade average is 0\n"); }