编写如下两个函数:
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;
}