c语言200位以内的正整数求和,C语言4ppt课件.ppt

计算机程序设计 C语言 第4章循环程序设计 1 for语句 2 while语句 3 do while语句 4 循环结构程序设计方法 4 1for语句 什么是循环控制结构 解决计算机重复执行某些语句的问题 被重复执行的语句块 称为循环体 includeintmain inti for i 0 i 4 i printf n return0 4 1for语句 1 for语句for 表达式1 表达式2 表达式3 循环体语句执行步骤 求表达式1 求表达式2 若值为真 则继续下一步 为假则结束循环 执行循环体语句 求表达式3 转到第2步 4 1for语句 includeintmain inti for i 0 i 4 i printf n return0 表达式1 表达式2 表达式3 循环体 表达式1只执行一次 一般是对循环变量赋初值 表达式2是判断循环是否执行的条件 表达式3是对循环变量的改变 i为循环变量 控制循环的次数 4 1for语句 例4 2 计算 分析 方法1 利用等差数列求和sum 100 1 100 2 0方法2 利用循环结构进行累加sum sum i i从1 100 表达式1 i 1 表达式2 i 100 表达式3 i 循环体语句 sum sum i 4 1for语句 例 输出100以内的奇数 includeintmain intn for n 1 n 100 n n 2 printf 4d n return0 2 逗号表达式表达式1 表达式2 表达式3 表达式n逗号表达式的运算过程 依次从左至右计算各个表达式 并且将最后一个表达式的运算结果作为整个表达式的结果 4 1for语句 4 1for语句 includeintmain intn for n 1 n 100 n n 2 printf 4d n return0 for n 1 n 100 n n 4 1for语句 includeintmain inti sum sum 0 for i 1 i 100 i sum sum i printf sum d sum return0 for sum 0 i 1 i 100 i 4 1for语句 3 for语句的其他形式for语句中的三个表达式可以省略 如 for 表达式2 表达式3 for 表达式1 表达式2 for 表达式2 for 4 1for语句 for sum 0 i 1 i 100 i sum sum i sum 0 i 1 for i 100 i sum sum i for sum 0 i 1 i 100 sum sum i i 表达式1省略 表达式3省略 表达式1 3均省略 sum 0 i 1 for i 100 sum sum i i 表达式1 2 3均省略 sum 0 i 1 for sum sum i i if i 100 break 4 1for语句 例4 3 对1 n以内的所有奇数进行求和 n由输入所获得 例 求例 求例 求 4 1for语句 例4 4 输入一个正整数n hsm计算分析 关键是找到累加的通项表达式 4 1for语句 用变量item表示 item 1 0 i sum sum item i i 2 1 while语句while 表达式 循环体语句 4 2while语句 while语句和for语句的比较 4 2while语句 4 2while语句 includeintmain inti sum sum 0 for i 1 i 100 i sum sum i printf sum d sum return0 includeintmain inti sum sum 0 i 1 while i 100 sum sum i i printf sum d sum return0 4 2while语句 例4 8 求 的近似值精度要求 最后一项的绝对值小于10 6 分析 1 通项公式 item flag 1 0 i i i 2 2 flag为符号 奇数项为正 偶数项为负 flag flag 3 i的初值为1 i 1 flag的初值1 flag 1 sum的初值为0 sum 0 4 2while语句 include includeintmain intflag i doubleitem sum flag 1 i 1 sum 0 0 item flag 1 0 i while fabs item 1e 6 sum item flag flag i 2 item flag 1 0 i printf pi f sum 4 return0 当不能确定循环次数时 可以使用while循环结构 4 2while语句 相似的问题还有 1 利用公式求 的近似值 2 求e的近似值 4 3do while语句 1 do while语句do 循环体语句 while 表达式 与while的差异在于判断在后 至少执行语句一次 例 输入一个非负整数 计算它是几位数 includeintmain intx n 0 scanf d 如果改为用while语句 该如何修改 4 3do while语句 4 3do while语句 三种循环结构语句的比较 1 循环次数明确的 一般用for语句 2 循环次数不明确的 一般用while语句 3 循环至少要执行一次 用do while语句 循环结构的三个要素 1 循环变量的初始化及变化 或能使循环终止的变化 2 循环控制条件 3 循环体 2 break语句 流程控制语句 break 强制结束循环 4 3do while语句 includeintmain inti sum sum 0 i 1 for sum sum i i if i 100 break printf sum d sum return0 3 continue语句 流程控制语句 continue 强制结束本次循环 继续下次循环 4 3do while语句 includeintmain inti for i 1 i 100 i if i 2 continue printf 4d i return0 输出什么 4 4基本程序设计技术 1 循环输入一批数据特点 从输入设备 键盘 输入一批数据 一般可分为两种情况 输入数据数量是固定的以一个特殊的数据作为输入结束的标志 例如输入一串字符 以换行符 n 作为结束 4 4基本程序设计技术 例 includeintmain inti longsum 0 inta for i 1 i 100 i scanf d 4 4基本程序设计技术 例 输入一批实数 求出最大值和最小值 分析 最大值和最小值的求法 为最大值初始化为一个可能的极小值 fmax 为最小值初始化为一个可能的极小值 fmin a 若a fmax 则令fmax a 若a fmin 则令fmin a 4 4基本程序设计技术 输入情况1 选择一个特殊的数据作为输入结束的标志 假设本题中的实数均为大于0的实数 则可以选择负数作为输入结束的标志 includeintmain floata fmax 0 fmin 1e 6 scanf f 4 4基本程序设计技术 输入情况2 选择不符合输入类型要求的数据作为输入结束的标志 利用scanf 函数的返回值特性scanf 函数的返回值为从输入设备正确接收数据的个数 如 scanf f a 若输入的实数符合要求 则返回1 scanf d d d 若输入的整数符合要求 则返回3 includeintmain floata fmax 0 fmin 1e 6 while scanf f 4 4基本程序设计技术 4 4基本程序设计技术 例 输入一行字符 统计其中空格和数字的个数 分析 输入一行字符以换行符作为输入结束标志 利用计数变量统计空格和数字的个数 判断字符是空格的表达式 ch 判断字符是数字的表达式 ch 0 ch 9 字符输入 ch getchar 4 4基本程序设计技术 includeintmain charch intdcount 0 ccount 0 while ch getchar n if ch 0 4 4基本程序设计技术 2 求最大公约数问题分析 方法1 寻找能同时被m和n整除的最大整数k k的初值为2 每当k能同时被m和n整除时 记下当前k 存入变量maxk 继续下一个k 直到k大于m和n中任一个 则循环结束 返回maxk 当k大于m或n 则循环结束 特殊情况若m或n为0 则最大公约数为另一个整数 若m n均为0 则函数返回0 若m n出现负数的情况 则要取绝对值进行计算 if m 0 m m if n 0 n n if m 0 4 4基本程序设计技术 1 方法2 令k从某大数开始递减 找到的第一个公约数就是最大公约数 k初值可取m和n中小的一个 结束条件 k值达到1或找到了公约数 1总是公约数 4 4基本程序设计技术 elsefor k m n n m k 1 k if m k 0 找到能同时整除的k就结束循环 4 4基本程序设计技术 方法3 欧几里德算法 迭代方法 步骤 1 若m0 则令m n n r 重复第 2 步 if m n temp m m n n temp for r m n r 0 r m n m n n r 4 4基本程序设计技术 3 求素数问题 穷举法 分析 素数n的特点是除了1以外不能被任何整数整除 即没有真因子 可以利用穷举的方法 如果找到能被n整除的整数 则n不是素数 反之 为素数 穷举的范围 2 n2 n 22 n的平方根 4 4基本程序设计技术 include includeintmain inti n scanf d 循环结束 i的值有两种情况 循环正常终止和强制退出 4 4基本程序设计技术 若要输出500以内所有的素数 并且每行输出5个 分析 对500以内的每个整数进行测试 如果是素数 则输出 输出格式控制 每行输出5个 可以用一个计数变量 每输出5个素数 就输出一个换行符 if count 5 0 printf n include includeintmain inti n count 0 for n 2 nsqrt n printf 4d n count if count 5 0 printf n return0 hsm 4 4基本程序设计技术 双重嵌套循环 注意break仅跳出本层循环 4 4基本程序设计技术 穷举问题 就是对各种可能的情况进行测试 从中找出符合的解 例如 1 输出200以内能被7整除的数 2 用一张元票换1分 2分和5分的硬币 问有哪几种换法 3 求1000以内的水仙花数 各位数字的立方和等于它本身 4 验证哥德巴赫猜想 任何一个大于6的偶数均可以表示为两个素数之和 4 4基本程序设计技术 4 迭代和递推问题迭代问题就是反复用新值替代原来的旧值 递推是通过一个变量的值推出另一个变量的值 Fibonacci数列的递推计算1 1 2 3 5 8 1 F1和F2是12 知道连续两个Fibonacci数 就可算出下一个递推计算方式 F3 F1 F2 继续计算下一项 可以使用迭代公式 F1 F2 F2 F3 4 4基本程序设计技术 问题1 输出Fabonacci数列的第n项 includeintmain longf1 1 f2 1 f3 i n scanf ld 4 4基本程序设计技术 问题2 输出Fabonacci数列的前n项 每行6项 includeintmain longf1 1 f2 1 f3 i n scanf ld 4 4基本程序设计技术 a1 求正整数各位数字的递推计算3295 3295可利用 和 运算实现 3295 10 5329 10 932 10 23 10 3 3295 10 329 10 32 10 4 4基本程序设计技术 一天一只小猴子摘下一堆桃子 当即吃了一半 还觉得不过瘾 又多吃了一个 第二天接着吃了前一天剩下的一半 再又多吃了一个 以后每天如此 到第10天只剩下一个桃子 问小猴一共摘了多少个桃子 第10天第9天第8天第7天 1个桃子 一半 1个 剩下的 nn n 1 2n n 1 2 4 4基本程序设计技术 一个球从100米高度自由落体 反弹后回到原来高度的一半 到第8次落地时 反弹多少高度 行程共有多少米 h s h h 2 h h 2 h 2 h 2 小结 1 三种基本循环结构 for while do while 2 输入一批数据的方法3 数列的求和问题4 穷举法 最大公约数 素数 5 迭代与递推 Fabonicci数列 thankyou 此课件下载可自行编辑修改 供参考 感谢您的支持 我们努力做得更好

展开阅读全文

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值