第四章循环结构4.1用格里高利公式求π的近似值(while语句)4.2 统计一个整数的位数(do-while语句)4.3判断素数(break 和 continue 语句)4.4求1!+2!+..+100!(循环嵌套)4.5循环结构程序设计
第 四 章 循环结构 4.1 用格里高利公式求π的近似值 (while语句) 4.2 统计一个整数的位数 (do-while语句) 4.3 判断素数 (break 和 continue 语句) 4.4 求1!+2!+.+100! (循环嵌套) 4.5 循环结构程序设计
本章要点■什么是循环?为什么要使用循环?如何实现循环?■实现循环时,如何确定循环条件和循环体?怎样使用while和do-while语句实现次数不确定的循环?■while和do-while语句有什么不同?■如何使用break语句处理多循环条件?■如何实现多重循环?
本章要点 ◼ 什么是循环? 为什么要使用循环? 如何实现循环? ◼ 实现循环时,如何确定循环条件和循环体? ◼ 怎样使用while 和do-while语句实现次数不确定的 循环? ◼ while 和do-while语句有什么不同? ◼ 如何使用break语句处理多循环条件? ◼ 如何实现多重循环?
4.1用格里高利公式求π的近似值例4-1使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10-4。元43574.1.1程序解析4.1.2while语句
4.1 用格里高利公式求π的近似值 例4-1使用格里高利公式求π的近似值,要 求精确到最后一项的绝对值小于10–4 。 4.1.1 程序解析 4.1.2 while语句 1 1 1 1 4 3 5 7 = − + − +
4.1.1程序解析一求π的近似值#includepi=3.141613int main(void)int denominator, flag;item=0.0 ?double item, pi;flag = 1; denominator = 1 ; item = 1.0; pi = 0;while(fabs(item)>=0.0001)fabs(item) < 0.0001item = flag * 1.0 / denominator;pi =pi + item;flag = -flag;denominator = denominator +2;7pi =pi * 4;printf (“pi =%fin", pi);ireturn O;1
#include int main(void) { 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); return 0; } 4.1.1 程序解析-求π的近似值 pi = 3.141613 item=0.0 ? fabs(item) < 0.0001
4.1.2while语句条语句while (条件)循环体语句;表达式1假鹿循环条件表达式表达式2真工真循环体语句+循环体语句+循环体表达式3while下一条语句for的下一条语句图4-2for语句的执行流程+
4.1.2 while 语句 while (条件) 循环体语句; 真 假 while下一条语句 表达式 循环体语句 循环条件 循环体 一条语句
while语句说明while语句和for语句都是在循环前先判断条件把for语句改写成while语句for(表达式1;表达式2;表达式3)循环体语句表达式1;while(表达式2)for的循环体语句;表达式3;1
while 语句和for语句 都是在循环前先判断条件 while 语句说明 表达式1; while (表达式2) { for的循环体语句; 表达式3; } 把for语句改写成while语句 for(表达式1; 表达式2; 表达式3) 循环体语句
while和for的比较for (i= 1; i<= 10; i++)sum=sum+i;i= 1;循环变量赋初值循环条件while (i<= 10)sum=sum+ i循环体i++;循环变量的改变7
while 和 for 的比较 for (i = 1; i <= 10; i++) sum = sum + i; i = 1; 循环变量赋初值 while (i <= 10){ 循环条件 sum = sum + i; i++; 循环变量的改变 } 循环体
例4-2从键盘输入一批学生的成绩,计算平均成绩,并统计不及格学生的人数。分析:口求累加和口确定循环条件不知道输入数据的个数,无法事先确定循环次数用一个特殊的数据作为正常输入数据的结束标志,比如选用一个负数作为结束标志。口循环的三种常见的控制方式(计数控制的循环、条件控制的循环、标记控制的循环)
例4-2 从键盘输入一批学生的成绩,计算平均 成绩,并统计不及格学生的人数。 分析: 求累加和 确定循环条件 ◼ 不知道输入数据的个数,无法事先确定循环次数 ◼ 用一个特殊的数据作为正常输入数据的结束标志, 比如选用一个负数作为结束标志。 循环的三种常见的控制方式(计数控制的循环、 条件控制的循环、标记控制的循环)
#includeInt main(void)Enter grades: 67 88 73 54 82 -1 intnum;doublegrade, total;Grade average is 72.80num = 0; total = 0;Numberof failures is 1printf("Enter grades: In");scanf("%lf", &grade);/*输入第1个数*/*输入负数,循环结束*while(grade>=0)(total = total + grade;num++;if(grade<60) count++;scanf ("%lf", &grade);1if(num != 0) {printf("Grade average is %.2fin", total/num);printf("Number offailuresis%din",count);1elseprintf(" Grade average is Oln");return 0;1D
#include Int main(void) { int num; doublegrade, total; num = 0; total = 0; printf(“Enter grades: \n"); scanf("%lf", &grade); /* 输入第1个数*/ while (grade >= 0) { /* 输入负数,循环结束 */ total = total + grade; num++; if(grade<60) count++; scanf (“%lf”, &grade); } if(num != 0) { printf(“Grade average is %.2f\n", total/num); printf("Number of failures is %d\n", count); } else printf(" Grade average is 0\n"); return 0; } Enter grades: 67 88 73 54 82 -1 Grade average is 72.80 Number of failures is 1