您的位置:首页 > 编程语言 > C语言/C++

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

2017-06-08 09:18 716 查看

编写如下两个函数:

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
!= '\0') {
cout << result
<< 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐