第2章 循环结构程序设计

2.1 for循环

1.建议尽量缩短变量的定义范围。例如,在for循环的初始化部分定义循环变量。

例题2-1 aabb

    输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)。

  • 浮点数计算存在误差,四舍五入的做法floor(x+0.5)
  • 思路反转,枚举平方根,再判断是否符合aabb

2.2 while循环和do-while循环

例题2-2 3n+1问题

    猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1。例如,3->10->5->16->8->4->2->1。

    输入n,输出变换的次数。n<=109

    样例输入:

    3

    样例输出:

    7

  • 当需要统计某种事物的个数时,可以用一个变量来充当计数器。
  • 在观察无法找出错误时,可以用“输出中间结果”的方法查错。
  • int,32位,范围是-2147483648~2147483647。
  • 通过输出中间变量法,得出乘法溢出,长整型可定义为long long n=n2;

例题2-3 近似计算

  • if(term<1e-6) break;

2.3 循环的代价

例题2-4 阶乘之和

乘法溢出

速度太慢,可使用计时函数clock()测量,解决办法是采取每步取模

2.4 算法竞赛中的输入输出框架

例题2-5 数据统计

  • scanf函数返回值,是成功输入的变量个数
  • 输入结束,先按Enter键,再按Ctrl+Z键,最后再按Enter键,即可结束输入。
  • 变量在使用之前赋值,max=min=x

例题2-6 数据统计II

2.5 注解与习题

习题2-1  水仙花数(daffodil)

习题2-2  韩信点兵(hanxin)

习题2-3  倒三角形(triangle)

习题2-4  子序列的和(subsequence)

习题2-5  分数化小数(decimal)

习题2-6  排列(permutation)

  • 题目1
  • 题目2

 

posted @ 2017-11-21 18:27  RunningYY  阅读(143)  评论(0编辑  收藏  举报