计算机编程chp4_循环结构

上传人:wt****50 文档编号:49544566 上传时间:2018-07-30 格式:PPT 页数:40 大小:785.50KB
返回 下载 相关 举报
计算机编程chp4_循环结构_第1页
第1页 / 共40页
计算机编程chp4_循环结构_第2页
第2页 / 共40页
计算机编程chp4_循环结构_第3页
第3页 / 共40页
计算机编程chp4_循环结构_第4页
第4页 / 共40页
计算机编程chp4_循环结构_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《计算机编程chp4_循环结构》由会员分享,可在线阅读,更多相关《计算机编程chp4_循环结构(40页珍藏版)》请在金锄头文库上搜索。

1、第四章 循环 结构本章教学要求本章教学要求n理解C语言循环程序的概念与基本原理, 熟悉循环的功能。n掌握循环结构程序设计的基本方法。n正确区分while、do-while语句的异同。n掌握break和continue语句在循环中的使 用方法。n通过多重循环程序设计,更加深入地掌 握结构化程序设计方法,进一步加深“CDIO理 念”在计算机编程中的应用。教学内容教学内容n用格里高利公式求的近似值 (while语 句)n统计一个整数的位数 (do-while语句)n判断素数 (break 和 continue 语句)n求1!+2!+.+100! (循环嵌套)n循环结构程序设计n本章小结用格里高利公式

2、求用格里高利公式求的近似值的近似值例4-1:使用格里高利公式求的近似 值,要求精确到最后一项的绝对值小于104 。n程序解析 nwhile语句 n输入一批学生的成绩,统计平均分#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

3、 = denominator +2; pi = pi * 4; printf ( “pi = %fn”, pi);return 0; 程序解析求程序解析求的近似值的近似值pi = 3.141613 item=0.0 ?fabs(item) Int main(void) int num; double grade, total; num = 0; total = 0; printf(“Enter grades: n“); scanf(“%lf“, /* 输入第1个数*/ while (grade = 0) /* 输入负数,循环结束 */total = total + grade; num+; s

4、canf (“%lf”, if(num != 0)printf(“Grade average is %.2fn“, total/num); elseprintf(“ 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 is 0统计一个整数的位数统计一个整数的位数从键盘读入一个整数,统计该数的 位数。n程序解析ndo - while语句 n循环语句的选择int main(void)

5、 int count, number; count = 0; printf(“Enter a number: “); scanf (“%d“, if (number m/2) printf(“yesn“) else printf(“non”);int main(void) int i, m; printf(“Enter a number: “); scanf (“%d“, for (i = 2; i m/2 ) printf(“%d is a prime number! n“, m); elseprintf(“No!n“); 例例4-44-4:源程序判断素数:源程序判断素数Enter a nu

6、mber: 9NoEnter a number: 1111 is a prime number!for (i = 2; i m/2 ) printf(“Yes“); else printf(“No!n“); 当循环有多个出口时: 表示循环条件 区分结束条件for(i = 2; i double fact (int n); int main(void) int i;double sum;sum = 0;for(i = 1; i int main(void) int i, j; double item, sum; /* item 存放阶乘 */ sum = 0;for(i = 1; i int m

7、ain(void) int i, mark, max, n; printf(“Enter n: “); scanf (“%d“, printf(“Enter %d marks: “, n);scanf (“%d“, /* 读入第 一个成绩 */max = mark; /* 假设第一个成绩是最 高分 */for (i = 1; i int main(void) int mark, max; printf(“Enter marks:“); scanf (“%d“, /* 读入第一个成 绩 */max = mark; /* 假设第一个成绩最 高分 */while (mark = 0)if(max i

8、nt main(void) int mark, max; max = -1; /* 给max赋一个 小初值 */printf(“Enter marks: “); do scanf (“%d“, if (max = 0); printf(“Max = %dn“, max); 例例4-7 4-7 输入一批学生的成绩,求最高分输入一批学生的成绩,求最高分( (do-while)do-while)Enter marks: 67 88 73 54 82 -1Max = 88Enter marks: -1思考?例例4-84-8 将一个正整数逆序输出将一个正整数逆序输出 确定:循环条件和循环体(循环不 变式

9、)12345 5 4 3 2 112345 % 10 = 5 12345 / 10 = 12341234 % 10 = 4 1234 / 10 = 123123 % 10 = 3 123 / 10 = 1212 % 10 = 2 12 / 10 = 11 % 10 = 1 1 / 10 = 0 结束循环不变式 x%10 x=x/10 循环结束条件 x=0scanf( “%d”, while (x != 0)digit = x %10;x = x/10 ;printf( “%d “, digit); 用do-while 实现?例例4-9 4-9 求求500500以内的全部素数,每行输出以内的全部

10、素数,每行输出1010个个for (m = 2; m n) printf(“yesn“) else printf(“non”);for (m = 2; m n) printf(“%d“, m)例例4-9 4-9 源程序源程序#include #include int main(void) int count, i, m, n; count = 0; for (m = 2; m n) /* 如果m是素数 */printf(“%6d“, m); count+; if (count %10 = 0) printf(“n”); 例例4-104-10:求:求FibonacciFibonacci序列:序列

11、:1 1, ,1 1, ,2 2, ,3 3, ,5 5, ,8 8,13, ,13, 1, 1, 2, 3, 5, 8, 13, x1 x2 xx1 x2 xx1 = x2 = 1;x = x1 + x2; x1 = x2; x2 = x; x1 = 1; x2 = 1; printf (“%6d%6d“, x1, x2 ); /* 输出头两 项 */ for (i = 1; i = 8; i+) /* 循环输出 后8项 */x = x1 + x2; /* 计算新项 */printf(“%6d“, x); x1 = x2; /* 更新x1和 x2 */x2 = x; 例例4-114-11:古

12、典算术问题搬砖头:古典算术问题搬砖头某地需要搬运砖块,已知男人一人搬3块, 女人一人搬2块,小孩两人搬一块。 问用45人正好搬45块砖,有多少种搬法?for (men = 0; men = 45; men+)for (women = 0; women = 45; women+)for (child = 0; child = 45; child+)if (men+women+child=45) 例例4-11 4-11 源程序源程序(2)(2)for (men = 0; men = 15; men+) for (women = 0; women = 22; women+)child = 45 wo

13、men men; if (men * 3 + women * 2 + child * 0.5 = 45)printf(“men=%d women=%d child=%dn“, men, women, child); for (men = 0; men = 45; men+)for (women = 0; women = 45; women+)for (child = 0; child = 45; child+)if (men+women+child=45) 比较循环次数循环程序设计习题循环程序设计习题习题4-9 输入一个整数,从高位开始逐个数 字输出。12345 /10000 = 112345

14、 %10000 =2345 2345 /1000 = 2 2345%1000 =345 345 /100 = 3345%100 =45 45 /10 = 4 45%10 =5 5/1= 55%1=5(1) 如何得到10000找输入数据对应的幂pow:pow=1; temp = x;while (x != 0) pow = pow * 10;x =x /10; (2) 每次循环pow缩小1/10: pow = pow /10; (3) pow=0 结束课后思考课后思考n什么是循环? 为什么要使用循环? 如何 实现循环?n实现循环时,如何确定循环条件和循环 体?n怎样使用while 和do-while语句实现次 数不确定的循环?nwhile 和do-while语句有什么不同?n如何使用break语句处理多循环条件?n如何实现多重循环?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 文化创意

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号