关于C语言对称数问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:40:32
Description

编程序输入一个给定的数n后,输出所有不超过n的,其平方由左右对称的数字组成的数.如输入30,输出1,2,3,11,22,26,因为它们的平方是1,4,9,121,484。

Input

一个数字(1<=n<=65535)

Output

所有不超过n的,其平方由左右对称的数字组成的数,输出的每个数占一行

Sample Input

30
Sample Output

1
2
3
11
22
26

这题有谁能帮忙做一下,谢了,

我告诉你方法吧,我就不做了
定义一个数用来保存n的平方
然后通过以下方式:
假如是384,那么384/100,取得百位数
384%100/10 取得十位数
384%100%10取得个位数
再拿百位和个位比较,
位数是奇数的就这样比

如果位数是偶数的比如4455,就比较两下

//---------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>

int chk(unsigned long int n)
{
char s[30];
int i;
sprintf(s,"%ld",n);
for (i = 0; i<strlen(s)/2; ++i) {
if (s[i]!=s[strlen(s)-i-1]) {
return 0;
}
}
return 1;
}
int main(void)
{
unsigned long int i,n;
scanf("%lu",&n);
for (i=1; i<=n; ++i) {
if (chk(i*i)) {
printf("%ld\n",i);
}
}
return 0;
}
//---------------------------------------------------------------------------