c语言求打印100000以内的所有回文数

如题所述

/**
**程序算法思路:判断一个数是否为回文数,可以用一个函数模块来实现,然后用for循环对100000以内的数逐个进行判断并输出回文数。
回文数:判断一个数是不是回文数的方法,回文数就是原数与其倒置后的数相等。
*/
#include <stdio.h>
#define N 100000  //定义符号常量
//判断是否为回文数的函数
int isHuiwenNumber(int n)
{
    int sum,tmp;
    tmp=n;
    sum=0;
    while(n)  //从低位到高位分解n的每位的数字,然后依次相加
    {
        sum=sum*10+n%10;
        n/=10;
    }
    if(tmp == sum) //如果重新每位求和的值等于原值,则该数为完数,返回1,否则返回0
        return 1;
    else
        return 0;
}
int main()
{
    int i,count;
    for(i=0,count=0;i<N;i++)
    {
        if(isHuiwenNumber(i))  //调用函数,如果条件为真,执行if语句体
        {
            printf("%-6d",i);   //输出回文数
            count++;
            if(count % 10 == 0) //每行输出10个后便换行
                printf("\n");
        }
    }
    printf("\n");
    return 0;
}

由于运行结果内容太多,故部分运行结果截图如下:

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-02-21

/**
**程序算法思路:判断一个数是否为回文数,可以用一个函数模块来实现,然后用for循环对100000以内的数逐个进行判断并输出回文数。
回文数:判断一个数是不是回文数的方法,回文数就是原数与其倒置后的数相等。
*/
#include <stdio.h>
#define N 100000  //定义符号常量
//判断是否为回文数的函数
int isHuiwenNumber(int n)
{
    int sum,tmp;
    tmp=n;
    sum=0;
    while(n)  //从低位到高位分解n的每位的数字,然后依次相加
    {
        sum=sum*10+n%10;
        n/=10;
    }
    if(tmp == sum) //如果重新每位求和的值等于原值,则该数为完数,返回1,否则返回0
        return 1;
    else
        return 0;
}
int main()
{
    int i,count;
    for(i=0,count=0;i<N;i++)
    {
        if(isHuiwenNumber(i))  //调用函数,如果条件为真,执行if语句体
        {
            printf("%-6d",i);   //输出回文数
            count++;
            if(count % 10 == 0) //每行输出10个后便换行
                printf("\n");
        }
    }
    printf("\n");
    return 0;
}
由于运行结果内容太多,故部分运行结果截图如下:

第2个回答  2015-05-31
#include <stdio.h>
int huiwen(long x)
{
long y=0,xx=x;
while(xx!=0){
y=y*10+xx%10;
xx/=10;
}
if (x==y) return 1;
else return 0;
}

int main(){
long i;
int count=0;
for(i=0;i<=100000;i++)
if (huiwen(i)) {
count++;
printf("%7ld",i);
if (count % 10==0) printf("\n");
}
printf("\n");

}

本回答被网友采纳
第3个回答  2015-05-31
#include <stdio.h>
unsigned long reverse(unsigned long n);
int main(void) 
{
unsigned long i;
for(i=0;i<100000;++i)
{
if(i==reverse(i))
{
printf("%lu\n",i);
}
}
return 0;
}
unsigned long reverse(unsigned long n)
{
unsigned long t;
for(t=0;n;n/=10)
{
t=t*10+n%10;
}
return t;
}

相似回答