找出所有满足如下条件的六位数:它是一个完全平方数(即为某个整数的平方);该数同时也是回文数(即该数等于它的逆序数)。(C++上机考试题2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28616789/article/details/72910066

编写如下两个函数:
a) 编写函数 int fun(long *x) ,找出所有满足如下条件的六位数:它是一个完全平方数(即为某个整数的平方);该数同时也是回文数(即该数等于它的逆序数)。例如, 698896 是 836的平方,且是回文数,因此 698896 是满足条件的六位数。将所有上述存入 是满足条件的六位数。将所有上述存入 是满足条件的六位数。将所有满足上述条件的六位数存入x指向的数组中,函返回 指向的数组中,函返回 指向的数组中,函返回 指向的数组中,函返回 指向的数组中,函返回 x指向数组中整数的个数。
b) 编写 main 函数,声明 results 数组,调用 fun 函数将所有满足条件的 六 位数存入results 数组,并输出到屏幕。





这道题我在考试过程中本来一开始就写出来了,结果半天都没出来结果,最后才发现,判断是否为一个整数的平方时,我从1000快开始了,也就意味着 从7位数开始,所以没有出现任何结果。后来改为100到1000就成功运行并对了。当然,从317到1000也是很好的。


以下是我的代码:

#include<iostream> 
using namespace std;
int main() {
    int n = 0;
    int fun(long *);
    long result[100000], *p;
    p = result;
    fun(p);
    cout << fun(p) << endl;
    while (result[n] != '\0') {
        cout << result[n] << endl;
        n++;
    }
    return 0;
}
int fun(long *x) {
    int k = 0, j,geshu=0;
    int a, b, c, d, e, f;
    long m;
    for (long i = 100000; i < 999999; i++) {
        a = i / 100000;
        b = (i % 100000) / 10000;
        c = (i % 10000) / 1000;
        d = (i % 1000) / 100;
        e = (i % 100) / 10;
        f = (i % 10);
        m = (100000 * f + 10000 * e + 1000 * d + 100 * c + 10 * b + a);
        if (i == m)
            for(int j=100;j<1000;j++)
               if(i==j*j){ 
                *x = i;
                x++;
                geshu++;
            }
        }
    return geshu;
}
阅读更多
换一批

没有更多推荐了,返回首页