第四部分循环结构教学课件.ppt
《第四部分循环结构教学课件.ppt》由会员分享,可在线阅读,更多相关《第四部分循环结构教学课件.ppt(40页珍藏版)》请在三一文库上搜索。
1、第 四 章 循环结构,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语句处理多循环条件? 如何实现多重循环?,4.1 用格里高利公式求的近似值,例4-1使用格里高利公式
2、求的近似值,要求精确到最后一项的绝对值小于104。 4.1.1 程序解析 4.1.2 while语句,#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; pri
3、ntf ( “pi = %fn”, pi); return 0; ,4.1.1 程序解析求的近似值,pi = 3.141613,item=0.0 ?,fabs(item) 0.0001,4.1.2 while 语句,while (条件) 循环体语句;,循环条件,循环体,一条语句,while 语句和for语句 都是在循环前先判断条件,while 语句说明,表达式1; while (表达式2) for的循环体语句; 表达式3; ,把for语句改写成while语句 for(表达式1; 表达式2; 表达式3) 循环体语句,while 和 for 的比较,for (i = 1; i = 10; i+)
4、sum = sum + i;,i = 1; 循环变量赋初值 while (i = 10) 循环条件 sum = sum + i; i+; 循环变量的改变 ,循环体,例4-2 从键盘输入一批学生的成绩,计算平均成绩,并统计不及格学生的人数。 分析: 求累加和 确定循环条件 不知道输入数据的个数,无法事先确定循环次数 用一个特殊的数据作为正常输入数据的结束标志,比如选用一个负数作为结束标志。 循环的三种常见的控制方式(计数控制的循环、条件控制的循环、标记控制的循环),#include Int main(void) int num; double grade, total; num = 0; tot
5、al = 0; printf(“Enter grades: n“); scanf(“%lf“, ,Enter grades: 67 88 73 54 82 -1 Grade average is 72.80 Number of failures is 1,4.2 统计一个整数的位数,例4-3 从键盘读入一个整数,统计该数的位数。 4.2.1 程序解析 4.2.2 do - while语句,int main(void) int count, number; count = 0; printf(“Enter a number: “); scanf (“%d“, ,4.2.1 程序解析统计一个整数的
6、位数,Enter a number: 12534 It contains 5 digits.,Enter a number: -99 It contains 2 digits.,Enter a number: 0 It contains 1 digits.,while (number != 0) number = number / 10; count +; ,4.2.2 do - while 语句,do 循环体语句 while (表达式),先循环,后判断,真,假,表达式,循环体语句,do-while的下一条语句,while 是先判别条件,再决定是否循环; do-while 是先至少循环一次,然
7、后再根据循环的结果决定是否继续循环。,while 和 do-while 的比较,4.3 判断素数,例4-4 输入一个正整数m,判断它是否为素数。 4.3.1 程序解析 4.3.2 break语句 和continue语句,4.3.1 程序解析判断素数,算法:除了1和m,不能被其它数整除。 设 i 取值 2, m-1 如果m不能被该区间上的任何一个数整除,即对每个i,m%i 都不为0,则m是素数 只要找到一个i,使m%i为0,则m肯定不是素数 m %2 %3 %4 %5 %(m-1) 不是素数 | =0 =0 是素数 & !=0 !=0 m不可能被大于 m/2 的数整除 i 取值 2, m-1 、
8、 2, m/2 、 2, ,for(i = 2; i m/2) printf(“yesn“) else printf(“non”);,int main(void) int i, m; printf(“Enter a number: “); scanf (“%d“, ,例4-4源程序判断素数,Enter a number: 9 No,Enter a number: 11 11 is a prime number!,for (i = 2; i = m/2; i+) if (m % i = 0) printf(“No!n“); else printf(“%d is a prime number! n
9、“, m);,循环条件? 循环的结束条件?,4.3.2 break 语句,while(exp) 语句1 if (expb) break; 语句2 ,for (i = 2; i m/2 ) printf(“Yes“); else printf(“No!n“);,当循环有多个出口时: 表示循环条件 区分结束条件,for(i = 2; i = m/2; i+) if(m%i = 0) printf(“No!n“); break; printf(“Yes“);,continue 语句,while(exp) 语句1 if (expb) continue; 语句2 ,跳过continue后面的语句,继续下
10、一次循环,break 和 continue,#include “stdio.h“ int main(void) char c; int i; for (i = 0; i 10; i+) c = getchar(); if (c = n) break; putchar(c); ,abc efgh 123 ,abc,abcefgh1,continue;,break 和 continue,例如 以下程序段输出100200之间所有能被3整除的数。 for(i = 100;i = 200;i+) if( i % 3 != 0 ) continue; printf(“%d ”,i); ,for(i = 1
11、00;i = 200;i+) if(i % 3 = 0) printf(“%d ”,i);,例4-5 简单的猜数游戏。最多允许猜5次。,# include int main(void) int mynumber = 38; /* 计算机指定被猜的数 */ int count = 0,yournumber; for(count = 1;count mynumber ) printf(“Sorry! your number is bigger than my number! n“); else printf(“Sorry! your number is smaller than my number
12、! n“); printf(“Game is over!n“); return 0; ,4.4 求1! + 2! + . + 100!,for (i = 1; i = 100; i+) item = i ! sum = sum + item; 4.4.1 程序解析 调用函数 fact(i) 计算 i 的阶乘 4.4.2 嵌套循环 用循环计算 i 的阶乘,#include double fact (int n); int main(void) int i; double sum; sum = 0; for(i = 1; i = 100; i+ ) sum = sum + fact (i); pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 部分 循环 结构 教学 课件
链接地址:https://www.31doc.com/p-3136062.html