chap04_循环结构-精品文档资料整理.ppt
《chap04_循环结构-精品文档资料整理.ppt》由会员分享,可在线阅读,更多相关《chap04_循环结构-精品文档资料整理.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 四四 章章 循环结构循环结构4.1 用格里高利公式求用格里高利公式求的近似值的近似值 (while语句语句)4.2 统计一个整数的位数统计一个整数的位数 (do-while语句语句)4.3 判断素数判断素数 (break 和和 continue 语句语句)4.4 求求1!+2!+.+100! (循环嵌套循环嵌套)4.5 循环结构程序设计循环结构程序设计本章要点本章要点n什么是循环什么是循环? 为什么要使用循环为什么要使用循环? 如何实现循环如何实现循环?n实现循环时,如何确定循环条件和循环体实现循环时,如何确定循环条件和循环体?n怎样使用怎样使用while 和和do-while语句实现次
2、数不确定的语句实现次数不确定的循环循环?nwhile 和和do-while语句有什么不同语句有什么不同?n如何使用如何使用break语句处理多循环条件语句处理多循环条件?n如何实现多重循环如何实现多重循环?4.1 用格里高利公式求用格里高利公式求的近似值的近似值使用格里高利公式求使用格里高利公式求的近似值,要求精的近似值,要求精确到最后一项的绝对值小于确到最后一项的绝对值小于104。4.1.1 程序解析程序解析4.1.2 while语句语句 4.1.3 输入一批学生的成绩,统计平均分输入一批学生的成绩,统计平均分11114357#include #include int main(void)
3、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 = %fn”, pi); return 0;4.1.1 程序解析求程序解析求的近似值的近似值pi = 3.141613 item=
4、0.0 ?fabs(item) 0.00014.1.2 while 语句语句while (条件条件) 循环体语句循环体语句; 真真假假while下一条语句下一条语句表达式表达式循环体语句循环体语句循环条件循环条件循环体循环体一条语句一条语句while 语句和语句和for语句语句都是在循环前先判断条件都是在循环前先判断条件while 语句说明语句说明表达式表达式1;while (表达式表达式2) for的循环体语句的循环体语句; 表达式表达式3;把把for语句改写成语句改写成while语句语句for(表达式表达式1; 表达式表达式2; 表达式表达式3) 循环体语句循环体语句while 和和 fo
5、r 的比较的比较for (i = 1; i = 10; i+) sum = sum + i; i = 1; 循环变量赋初值循环变量赋初值while (i = 10) 循环条件循环条件 sum = sum + i; i+; 循环变量的改变循环变量的改变循环体循环体例例4-2 从键盘输入一批学生的成绩,计算平均从键盘输入一批学生的成绩,计算平均分。分。分析:分析:求累加和求累加和确定循环条件确定循环条件n不知道输入数据的个数,无法事先确定循环次数不知道输入数据的个数,无法事先确定循环次数n用一个用一个特殊的数据特殊的数据作为正常输入数据的结束标志,作为正常输入数据的结束标志,比如选用一个负数作为结
6、束标志比如选用一个负数作为结束标志。4.1.3 统计输入的一批学生的平均成绩统计输入的一批学生的平均成绩#include Int main(void) 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
7、(“Grade average is %.2fn, total/num);else printf( Grade average is 0n); return 0;Enter grades: 67 88 73 54 82 -1Grade average is 72.80Enter grades: -1 67 88 73 54 82Grade average mark is4.2 统计一个整数的位数统计一个整数的位数从键盘读入一个整数,统计该数的位数。从键盘读入一个整数,统计该数的位数。4.2.1 程序解析程序解析4.2.2 do - while语句语句 4.2.3 循环语句的选择循环语句的选择i
8、nt main(void) int count, number; count = 0;printf(“Enter a number: );scanf (%d, &number) ;if (number 0) number = -number; do number = number / 10; count +; while (number != 0);printf(It contains %d digits.n, count); return 0;4.2.1 程序解析统计一个整数的位数程序解析统计一个整数的位数Enter a number: 12534It contains 5 digits.E
9、nter a number: -99It contains 2 digits.Enter a number: 0It contains 1 digits.while (number != 0) number = number / 10; count +;4.2.2 do - while 语句语句do 循环体语句循环体语句 while (表达式表达式)先循环先循环后判断后判断真真假假表达表达式式循环体语句循环体语句do-while的下一条语句的下一条语句n while 是先判别条件,再决定是否循环;是先判别条件,再决定是否循环;n do-while 是先至少循环一次,然后再根据是先至少循环一次,
10、然后再根据循环的结果决定是否继续循环。循环的结果决定是否继续循环。while 和和 do-while 的比较的比较真真假假表达式表达式循环体语句循环体语句do-while的下一条语句的下一条语句真真假假while的下一条语句的下一条语句表达式表达式循环体语句循环体语句4.2.3 循环语句的选择循环语句的选择if(循环次数已知)循环次数已知) 使用使用for语句语句else /* 循环次数未知循环次数未知 */if (循环条件在进入循环时明确循环条件在进入循环时明确)使用使用while语句语句else /* 循环条件需要在循环体中明确循环条件需要在循环体中明确 */使用使用do-while语句语
11、句4.3 判断素数判断素数输入一个正整数输入一个正整数m,判断它是否为素数。判断它是否为素数。4.3.1 程序解析程序解析4.3.2 break语句语句 和和continue语句语句4.3.1 程序解析判断素数程序解析判断素数算法:除了算法:除了1和和m,不能被其它数整除。,不能被其它数整除。设设 i 取值取值 2, m-1 n如果如果m不能被该区间上的任何一个数整除,即对不能被该区间上的任何一个数整除,即对每个每个i,m%i 都不为都不为0,则,则m是素数是素数n只要找到一个只要找到一个i,使使m%i为为0,则,则m肯定不是素数肯定不是素数m %2 %3 %4 %5 %(m-1)不是素数不是
12、素数 | =0 =0是素数是素数 & !=0 !=0 m不可能被大于不可能被大于 m/2 的数整除的数整除 i 取值取值 2, m-1 、 2, m/2 、 2, mfor(i = 2; i m/2) printf(yesn)else printf(non”);int main(void) int i, m;printf(“Enter a number: );scanf (%d, &m);for (i = 2; i m/2 ) printf(%d is a prime number! n, m); else printf(No!n); 例例4-4源程序判断素数源程序判断素数Enter a nu
13、mber: 9NoEnter a number: 1111 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, m); 循环条件循环条件?循环的结束条件循环的结束条件?break 语句语句while(exp) 语句语句1 if (expb) break; 语句语句2真真假假 exp 语句语句1假假 expb 语语 句句2循环体循环体真真for (i = 2; i m/2 ) printf(Yes); else printf(No!
14、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真真假假 exp 语句语句1假假e x pb 语语 句句2循环体循环体真真跳过跳过continue后面的语句,继续下一次循环后面的语句,继续下一次循环break 和和 continue#include stdio.hint main(void) ch
15、ar c; int i; for (i = 0; i 10; i+) c = getchar(); if (c = n) break; putchar(c); abc efgh 123 abcabcefgh1continue;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
16、 main(void) int i; double sum; sum = 0; for(i = 1; i = 100; i+ ) sum = sum + fact (i); printf(1! + 2! + 3! + + 100! = %en, sum); return 0;double fact (int n) int i; double result = 1; for (i = 1; i = n; i+) result = result * i ; return result ; 4.4.1 程序解析程序解析 求求1! + 2! + . + 100!4.4.2 嵌套循环嵌套循环for (i
17、 = 1; i = 100; i+) item = i ! sum = sum + item;for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; 例例4-6 源程序源程序#include int main(void) int i, j;double item, sum; /* item 存放阶乘存放阶乘 */sum = 0; for(i = 1; i = 100; i+) item = 1; /* 每次求阶乘都从每次求阶乘都从1开始开始 */ for (j = 1
18、; j = i; j+) /* 内层循环算出内层循环算出 item = i! */ item = item * j; sum = sum + item; printf(1! + 2! + 3! + + 100! = %en, sum);内层循环的初始化内层循环的初始化for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; 求求1! + 2! + . + 100!item = 1;for(i = 1; i = 100; i+) for (j = 1; j = i; j+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- chap04_ 循环 结构 精品 文档 资料 整理
限制150内