您的位置:首页 > 编程语言 > C语言/C++

C语言每日小练(一)——7744问题

2014-04-08 16:52 387 查看
例:aabb

输出所有形如aabb的四位完全平方数(前两位数字相等、后两位数字相等)。

解:

法(1):(a)构造aabb形式的数;(b)判断是否为完全平方数。

代码:

#include<stdio.h>
#include<math.h>
int main()
{
int a, b, n;
double m;
for(a = 1; a <= 9; a++)
{
for(b = 0; b <= 9; b++)
{
n = 1100*a + 11*b;
m = sqrt(n);
if(floor(m+0.5) == m) printf("(1):%d\n", n);//判断两个浮点数是否相等,floor函数的作用是返回m的整数部分,加上0.5是为了减少误差影响。
}
}
return 0;
}

结果:



法(2):(a)以平方根x作为循环变量,构造完全平方数n;(b)判断是否为aabb形式的数。
#include<stdio.h>
int main()
{
int a, b, x, n;
for(x = 32; ; x++)
{
n = x * x;
if(n > 9999) break;
a = n / 100;
b = n % 100;
if(a/10 == a%10 && b/10 == b%10) printf("(2):%d\n", n);
}
return 0;
}

结果:



比较上面两个程序,得到的结果都为7744,但执行时间不同,显然(2)比(1)更快,程序(1)用时0.001s,而程序(2)则用时0.000s,原因就在于程序(1)进行了大量的开方运算~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息