C语言学习复盘整理笔记(五)

C语言学习笔记

本系列笔记是学习复盘慕课上浙江大学 翁恺老师《程序设计入门-C语言》课程的笔记和一些自己的总结。(文章的部分截图来自课程视频截图)

课程链接:https://www.icourse163.org/learn/ZJU-199001?tid=1206771253#/learn/content

第五周:循环控制  用例子程序来说明

5.1循环控制

5.1.1 循环控制

素数:只能被1和自己整除的数是素数

 

EG1: 判断一个数是不是素数?

方法1 用循环,判断整个数能不能整除2~n中的数  (例子程序

缺点:当第一次发现可以整除时  就可以出循环了 例如 6 6/2 不必在做 6/3

如何解决:使用break

最后输出的时候判断是不是素数:

  1. 可以加一个变量 isPrime 来分开输出的情况
  2. 可以直接使用in的比较值来分开输出的情况

 

Breakcontinue分别用在什么情况下:

  1. break是这个循环与多少轮都不做了 跳出这个循环
  2. continue 跳过循环这一轮剩下的语句 但仍然进入下一轮的循环语句执行中

5.2多重循环

5.2.1 多重循环

EG2: 如何写程序输出100以内的素数?

我们已经有了程序来判断一个数是否是素数,在5.1节已经做到。

程序需要做的区别?

需要判断的数字不是通过scanf读入的,需要构造循环,需要判断100以内所有数,而不是指定的一个数。

 

  1. 判断我们构建的循环体里的每一个x是不是素数
  2. 将判断的一整段代码放入循环体中去判断

嵌套的循环:

  1. 在这个例子中,循环是两层,循环的里面还是循环。
  2. Forforforwhile,随便哪一种都可以做嵌套循环

做嵌套循环时需要注意的一点是:外面的循环变量是i,里面是x,两层嵌套的变量必须是不一样的

 

变形:  

EG3:输出前50个素数?

For循环的使用条件:次数确知,范围确知(2,100

本例子中需要计数cntwhile循环

For循环转变while循环:

for循环变为while循环时,初始值需要在循环体外事先设定好;x++的这一步应该放入循环体里面去。

 

方法二:也可以用for循环,改变其判断条件

While循环转变for循环:

Whilefor,初始条件在for括号设置,去掉whle循环体内部的x++;改变for的判断条件。

 

5.2.2 离开多重循环

EG:如何用1角,2角和5角的硬币凑出10元以下的金额呢?只需要得到一种。

三重for循环

用一个break,不能跳出多重循环。

如果我们在每一层循环都加入break;则其它层的循环都意味着不论什么情况下,我们都将跳出这层循环。这种做法显然是错误的。

 

 

如何才能达到目的?

方法一:接力break使用旗帜,exit这个是传统教科书的手段

方法二;goto

注意;if里面的语句是等于1的时候才执行;等于0的时候不执行

 

5.3循环应用

5.3.1 求和

尤其注意,即使设置了sum是一个浮点数,我们得到1/n仍然需要用1.0/n;因为两个整数相除得到的是整数。

变形:

使用sign这个符号,  sign=1/-1

 

5.3.2 求最大公约数

EG 输入两个数ab,输出它们的最大公约数

      输入:12 18  输出:6

方法一:循环求解,先得到两个数中的较小值min,及得到for的两个端点。

方法二:辗转相除法

以上部分是原理

 

5.3.3 整数分解

EG:正序分解整数

方法一:整数求逆,取余输出。先逆序,再逆序的这种方法只只用于末尾没有0的数字

700 不能输出 0 0 7

方法二:计算整数的数位;除取余

 

发布了6 篇原创文章 · 获赞 0 · 访问量 443

猜你喜欢

转载自blog.csdn.net/xiaobaityq/article/details/104103140
今日推荐