C语言复习 第四章

上传人:资****亨 文档编号:130145537 上传时间:2020-04-25 格式:PPT 页数:43 大小:203KB
返回 下载 相关 举报
C语言复习 第四章_第1页
第1页 / 共43页
C语言复习 第四章_第2页
第2页 / 共43页
C语言复习 第四章_第3页
第3页 / 共43页
C语言复习 第四章_第4页
第4页 / 共43页
C语言复习 第四章_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《C语言复习 第四章》由会员分享,可在线阅读,更多相关《C语言复习 第四章(43页珍藏版)》请在金锄头文库上搜索。

1、 C语言程序设计 第4章循环结构程序设计 例题 输入一个正整数n 把它分解成1及其质因子相乘的形式 如 19 1 1936 1 2 2 3 31024 1 2 2 2 2 2 2 2 2 2 2分析 本题即找出所有能整除n的数 可以尝试分别用2到n的整数去除n 如某时刻的值为i 能除尽n则取出此时的数i 再把n除以i的商作为新的n 但要注意下次尝试的时候还应该用此时的i去除n 因为如2是8的一个因子 同时也是8 2 4的一个因子 如n不能被i整除则用i 1去除n看能否整除 如此反复直到i的值为n为止 程序如下 main longi n printf Inputn scanf ld if n i

2、 0 printf ld i n i i 例 古典问题 有一对兔子 从出生后第3个月起每个月都生一对兔子 小兔子长到第三个月后每个月又生一对兔子 假如兔子都不死 问每个月的兔子总对数为多少 40个月后 分析 兔子对数的规律为数列1 1 2 3 5 8 13 21 即从第三个数开始其值都为前两个数之和 main longm1 1 m2 1 inti for i 0 i 20 i if i 2 0 目的每输出2组数后加一个回车符 printf n printf 12ld 12ld m1 m2 getch m1 m1 m2 m2 m1 m2 例 题目 输入两个正整数m和n 求其最大公约数和最小公倍数

3、 最大公约数算法也称 辗转相除法 又称欧几里得算法 其算法如下 1 a b a b 令r为所得余数 0 r b 若r 0 算法结束 b即为答案 2 互换 置a b b r 并返回第一步 main intm 0 n 0 r t a b scanf d d 实现大数在前小数在后 实现辗转相除算法 if a b t a a b b t r a b while r a b b r r a b printf d 例 从键盘任意输入一个正数n 判断其是不是素数 因子只有1及其本身 其值大于1的自然数 includemain intn i k clrscr printf Inputn n 2 scanf d

4、 k sqrt n for i 2 i1 printf disaprimenumber n elseprintf disnotaprimenumber n getch continue语句 例 分析如下程序 给出程序执行结果 main inti for i 0 i 10 i if i 2 0 continue printf d i getch 例 随机输入多个字符 直到输入回车结束 统计键入空格字符的次数 includemain intcount 0 charch printf Inputchars do while printf Thenumberofspacesis d n count g

5、etch ch getchar if ch continue count ch n 1 以下程序段运行后变量a的值为 inti 1 a 0 for i 3 i continue a i A 6B 3C 0D 5 课堂小测试 2 以下程序段运行后变量n的值为 inti 1 n 1 for i 3 i continue n n i A 4B 3C 2D 1 课堂小测试 3 以下程序的运行结果是 voidmain ints 0 i 0 while i 8 i if i 2 0 continue s i printf d n s A 36B 7C 16D 12 课堂小测试 4 以下程序的运行结果是 v

6、oidmain intsum 0 item 0 while item 5 item if item 2 continue sum item printf d n sum A 10B 13C 15D 1 课堂小测试 4 5循环结构的嵌套 一个循环体内又包含另一个完整的循环结构称为循环的嵌套 内嵌的循环中还可以嵌套循环 这就是多层循环 三种循环 while循环 do while循环和for循环 可以互相嵌套 正常情况下 应先执行内层的循环体操作 然后是外层循环 例如 对于双重循环 内层循环被执行的次数应为 内层次数 外层次数 4 5循环结构的嵌套 4 5循环结构的嵌套 4 5循环结构的嵌套 4 5

7、循环结构的嵌套 求该程序的运行结果s是多少 循环多少次 main inti j s 0 for i 1 i 3 i for j 1 j 2 j s s i j printf d s 例 编程实现在屏幕上输出九九乘法口诀 1 1 11 2 22 2 41 3 32 3 63 3 91 4 42 4 83 4 124 4 161 5 52 5 103 5 154 5 205 5 251 6 62 6 123 6 184 6 245 6 306 6 361 7 72 7 143 7 214 7 285 7 356 7 427 7 491 8 82 8 163 8 244 8 325 8 406 8

8、487 8 568 8 641 9 92 9 183 9 274 9 365 9 456 9 547 9 638 9 729 9 81 分析 分行与列考虑 可用i控制行 j控制列 共9行 且每行的等式的个数与所在行的序数相同 即第i行就有i列个等式 例 编程实现在屏幕上输出九九乘法口诀 main inti j for for printf d d d t j i i j printf n getch i 1 i 9 i j 1 j i j 例 输出1000内所有的素数 要求每行输出15个数main inti j k n 0 for i 2 i 1000 i k sqrt i for j 2 j

9、 k j if break if printf 5d i n if printf n getch n 15 0 j k 1 i j 0 例4 16 打印出如下图案 菱形 main inti j for i 0 i 3 i for printf for printf printf n for i 0 i 2 i for printf for printf printf n getch j 0 j 3 i j j 0 j 2 i 1 j j 0 j i 1 j j 0 j 5 2 i j 例4 23 求解百马百担问题 有100匹马 驮100担货 大马驮3担 中马驮2担 两匹小马驮1担 问大 中 小

10、马数可分别为多少 有多少种解决方案 main intlarge middle small for for small 2 100 3 large 2 middle if printf large 2dmiddle 2dsmall 2d n large middle small getch large 0 large 33 large middle 0 middle 50 middle large middle small 100 以下程序的运行结果是 voidmain inti j k 0 for i 3 i 1 i for j i j 3 j k i j printf d n k A 19B

11、 29C 6D 25 课堂小测试 以下程序段运行后 循环体中的 count 2 语句运行的次数为 inti j count 0 for i 1 i 4 i for j 1 j i j count 2 printf d count A 8次B 10次C 16次D 20次 课堂小测试 下列程序段运行后m的值为 inti j m 0 for i 1 i 3 i for j 2 j 4 j m m i j A 45B 30C 33D 27 课堂小测试 4 6goto语句 goto语句是一种跳转语句 可以用于程序的任何地方 goto语句的一般格式为 goto语句标号 其中语句标号就是一个合法的标识符 能

12、用goto语句的前提是在同一个函数中某个语句前存在标号 语句标号的作用在于标识出其后语句的位置 语句标号的使用方法是在合法标识符后面加上一个冒号 如 label i j 2 中的label1就是一个语句标号 这时可用goto语句来跳转到label处 方法如下 gotolabel 此时程序遇到goto语句之后会无条件的跳到label所标识的语句 i j 2 处开始执行 例 用goto语句实现1 2 3 100结果的输出main inti 0 s 0 label i s i if i 100 gotolabel printf 1 2 3 100 d s getch 例 分析如下程序总结goto语句

13、的作用 main inti 0 j while 1 while 1 while 1 while 1 printf test gotolabel label printf nexit getch 例4 20 有一分数序列 求出这个数列的前20项之和 main inti floata 2 0 b 1 0 t sum 0 for printf sum f sum getch sum a b t a a a b b t i 0 i 20 i 例4 21 求e 的值 main inti j doublee 1 0 k 1 for printf e 1 10f e getch k i e 1 0 k i

14、1 i 20 i 例4 22 输出所有三位数的 水仙花数 所谓 水仙花数 是指其各个位上的数字立方和等于该数本身 例如 153是一个 水仙花数 因为153 13 53 33 main inti x y z for i 100 i 999 i z i 10 y i 10 10 x i 100 if x x x y y y z z z i printf d i getch 2 求出满足以下条件的最大的n 12 22 32 n2 100 结果 n 6 main intn 0 s 0 while n printf n d n getch s 100 n s n n 3 中国古代数学家张丘建提出的 百鸡

15、问题 一只公鸡值五个钱 一只母鸡值三个钱 三个小鸡值一个钱 现在有100个钱 要买100只鸡 是否可以 若可以 给出一个解 要求三种鸡都有 请写出求解该问题的程序 main intcock hen chicken for for chicken 300 9 hen 15 cock if printf cock d hen d chicken d n cock hen chicken getch cock 0 cock 20 cock hen 1 hen 33 hen cock hen chicken 100 chicken 0 5 整元换零钱问题 把1元兑换成1分 2分 5分的硬币 共有多少种

16、不同换法 请编写求解此问题的程序main intone two five for for for if printf one d two d five d n one two five getch one 0 one 100 one two 0 two 50 two five 0 five 20 five one two 2 five 5 100 7 求s a aa aaa aaaa aa a的值 其中a是一个数字 例如 2 22 222 2222 22222 此时n 5 n和a的值由键盘输入 请编程实现以上求和 main intn a i longs 0 k 0 printf Inputa scanf d k 10 k a s k 8 编程据如下算求出M N的值 MN NM3627 main intm n k for for if printf m d n d n m n getch m 1 m 9 m n 1 n 9 n m 10 n n 10 m 3627 以下程序的功能是输出如下图形 main inti j clrscr for i 1 i 5 i for j 1 j i j

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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