38

问答题 38 /49

请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。用c语言编写(不能用数字转换成字符串)。

参考答案

#include<stdio.h>
#include<math.h>
//函数havesamenum确认num是否满足条件
int havesamenum(int num)
{
    int i = 0, j;
    char a[10] = {0};

    while (num > 0)
    {
        j = num % 10;
        a[j] += 1;
        num = num / 10;
    }
    while (a[i] <= 1 && i < 10)
        i++;
    if (i < 10)
        return 1;
    else
        return 0;
}
void main(void)
{
    int i, j, m;

    m = (int)sqrt(99999);
    for (i = 1; i < m; i++)
    {
        j = i * i;
        if (1 == havesamenum(j))
            printf("%6d\t", j);
    }
}