c语言编辑程序问题1

寻找300以内(大于0)的所有的对称回文数并输出。回文数是指某数与其反序数相等,如5. 131、 1551、 345676543.
对称回文数指某数与其平方都是回文数。例如,n=11时,, 112=121; n=111时,
1112=12321.
① 编写函数int palindrome(long n),判断n是否回文数,如是返回1,否则返回0。
② 在main西数中遍历300以内的数,寻找对称回文数并输出。

望采纳

#include<stdio.h>
int palindrome(long n) {
    int sizes[50] = {0};
    int len = 0;
    while(n > 0) {
        sizes[len++] = n%10;
        n = n / 10;
    }
    int i = 0;
    int j = len - 1;
    while(i < j) {
        if (sizes[i] != sizes[j]) {
            return 0;
        }
        i++;
        j--;
    }
    return 1;
}
int main (){
    for(long x = 1; x <= 300; x++) {
        if (palindrome(x)) {
            printf(" %ld ", x);
        }
    }
}

#include <stdio.h>

int palindrome(long n) {
    long temp = n, rev = 0;
    while (temp != 0) {
        rev = rev * 10 + temp % 10;
        temp /= 10;
    }
    if (rev == n) {
        return 1;
    }
    return 0;
}

int main() {
    for (long i = 1; i <= 300; i++) {
        long square = i * i;
        if (palindrome(i) && palindrome(square)) {
            printf("%ld\n", i);
        }
    }
    return 0;
}
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7608831
  • 除此之外, 这篇博客: 【汇编程序】实现输出10000以内所有回文数(Palindrome number)中的 C语言代码实现如下: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <stdio.h>
    int main()
    {
    	int count = 0;
    	for (int i = 0; i < 10000; i++)
    	{
    		int tmp = i;
    		int result = 0;
    		while (tmp != 0)
    		{
    			result = result * 10 + tmp % 10;
    			tmp = tmp / 10;
    		}
    		if (result == i)
    		{
    			printf("%d\t", result);
    			count++;
    			if (count % 10 == 0)
    				printf("\n");
    		}
    	}
    	return 0;
    }