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

例: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)进行了大量的开方运算~

C语言每日小练(一)——7744问题,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。