即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

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

编程语言 qq_28616789 18℃ 0评论

1.编写如下两个函数:


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


b) 编写 main 函数,声明 results 数组,调用 fun 函数将所有满足条件的 六 位数存入results 数组,并输出到屏幕。










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







以下是我的代码:

#include 
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;
}

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

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情