week 1

5.2.1 循环控制

判断素数

break vs continue

break:跳出循环

Continue:跳过循环剩下的语句进入下一轮

场景巧计:一排同学唱歌,第一个唱的很好听,坐下;第二个唱的一般,唱到一半领导说“continue”,则这个同学后面的就不用唱了,第三个同站起来唱,唱到一半太难听领导忍无可忍说“break”,第三个同学结束,后面的同学没机会再唱了

程序2

5.2.2 嵌套的循环

循环里面还是循环

列出0-100的素数:(for循环里面套for循环)

⚠️注意:两个循环中变量要不一样

输出前五十个素数:

Cnt:充当计数器的作用

5.2.3从嵌套的循环中跳出

题型:凑硬币

如何用一角、两角、五角的硬币凑出十元以下的金额

若只想要输出一种方法,则要跳出循环

But break和continue只能对一层循环做,没办法跳出三层循环
方法一:接力break

为什么不能直接打三个break而要加上判断语句?

加上exit和判断语句是为了避免无论以什么结果跳出第一轮循环(有可能中间的判断条件成立提前跳出循环,也有可能一直不成立跳出循环),第二轮第三轮循环也都break跳出循环了。

方法2:goto

out:是自己在程序中标记的标号(标号也可以是别的)

goto out:表示goto (跳到)所指的地方(out)去

⭕️建议只在跳出多重循环的情况下用goto语句

5.3.1 前n项求和

⭕️要把1改成浮点数否则计算出来结果为0(浮点数和整数放一块运算时,C会将整数转换成浮点数再进行浮点数运算)

变式:

法一:

法二:

5.3.2整数分解

先复习一下倒序分解:

如何正序分解?

像这样先把x逆序后再逆序分解? But……试试x=700

答案是7而不是7 0 0,所以该方法只适用于后面没有0 的整数,需要换一种方法:

8-23行的计算可得出我们想要的结果,如何用代码实现?

当x=70000时,依然输出错误,如何修改?

由于70000/10000=7 ,70000%10000=0 ,判断条件为x>0,所以只执行了一轮就结束了,而我们希望继续运行下去,所以可以将条件改为mask>0

如何让mask不是一个固定的数?

完整程序:

⭕️int t = x 是因为直接用x做运算会使x最后的值改变,所以用t做运算而不让x直接做运算

5.3.3 求最大公约数

方法一:枚举

方法二:辗转相除法

变量列表

写成代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值