天天看点

算法学习之循环结构程序设计

for循环

打印1,2,3,...,n每个占一行。

算法学习之循环结构程序设计
算法学习之循环结构程序设计

分支结合循环,威力很强大

输出所有形如aabb的四位完全平方数。

分析:先全部列出来,然后开根,看是否为整数。其中a可以从1到9,

b可以从0到9。如何组成aabb呢?

a*1100+b*11即可。

伪代码可以开拓思路。

下面来实现它

算法学习之循环结构程序设计
算法学习之循环结构程序设计

另一个思路是枚举平方根x,从而避免开平方操作。

算法学习之循环结构程序设计
算法学习之循环结构程序设计

这个效率貌似不如第一个高!执行的时间比较久,如果没有终止操作,不知道要执行多久呢!

这个大概就是算法的复杂度吧!一定要有意识提高代码的效率!

3n+1问题

猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一般。经过若干次这样的变换,

一定会使n变为1。例如3->10->5->16->8->4->2->1。

输入n,输出变换的次数。n<=10的9次方。

样例输入:3

样例输出:7

分析:程序完成工作依然是重复性劳动,循环的次数是不确定的,而且n不是递增的循环。可以考虑用

while条件式的循环来实现。

算法学习之循环结构程序设计
算法学习之循环结构程序设计

for与while的关系

"

for(初始化;条件;调整){

    循环体

}

等价于

初始化

while(条件)

{

  循环体;

  调整;

阶乘之和

输入n,计算S = 1!+2!+3!+...+n!的末6位(不含前导0)。n<=10的6次方。

样例输入:10

样例输出:37913(其实总和为4037913)

分析:如何实现阶乘呢?用一次循环呗。

算法学习之循环结构程序设计
算法学习之循环结构程序设计

每步取模,加一个“计时器”,可以计算出时间复杂度。

输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数。

样例输入:2 8 3 5 1 7 3 6

样例输出:1 8 4.375

算法学习之循环结构程序设计
算法学习之循环结构程序设计

下面将其改造成读文件,写文件的形式

算法学习之循环结构程序设计
算法学习之循环结构程序设计

读取当前文件夹下的in.txt

并将结果输出到out.txt中

输出2,4,6,8...2n

方法1

算法学习之循环结构程序设计
算法学习之循环结构程序设计

方法2

算法学习之循环结构程序设计
算法学习之循环结构程序设计

浮点陷阱

算法学习之循环结构程序设计
算法学习之循环结构程序设计

C++中的输入输出

方式1

算法学习之循环结构程序设计
算法学习之循环结构程序设计

方式2(用iostream)

算法学习之循环结构程序设计
算法学习之循环结构程序设计

C++中读取文件

算法学习之循环结构程序设计

继续阅读