7744问题

来源:互联网 发布:淘宝买家两钻有什么用 编辑:程序博客网 时间:2024/05/30 04:40

这个程序是求一个四位数aabb是否为完全平方数,

完全平方数就是可以开平方的数(如:1,4,9,16,25等等)

虽然不是很难,但是里面有个很有趣的地方,

就是在判断aabb是否为完全平方数的时候,

一般我们会用:

if (m * m == n);

但事实上我们要用:

if (floor (m + 0.5) == m);

其中floor(double x)是用来取整的,

因为在浮点型的运算中可能会出错,虽然不一定,但是经常会,

如果在运算中本来正确答案是88,结果他算出88.001,程序也不会通过,

下面就是正确的代码:

#include <stdio.h>#include <math.h>#include <iostream>using namespace std;int main(){int a, b, n;double m;for (a = 1; a <= 9; a ++){for (b = 1; b < 9; b ++){n = a * 1100 + b * 11;m = sqrt(n);if (floor(m + 0.5) == m)   //浮点数的运算可能存在误差,不一定存在,但经常会有,所以用“if(m*m == 0)“可能导致误差 {cout << m << endl;cout << n << endl;} }}system ("pause");return 0;}


原创粉丝点击