c编程:判断10000以内的正整数哪些是回文数字。

来源:互联网 发布:迅雷赚钱宝秒杀软件 编辑:程序博客网 时间:2024/06/06 01:21

如果有一个正整数从左、右来读都是一样的,则称为回文式数(简称回数);比如101,32123,
999都是回数。求10000以内的所有回数。

 

第一种方式看它的逆序数字是否和原来的数字相等

判断的思路就是,通过循环依次把m的个位,十位,百位...上的数取出来,与sum*10相加。这样得到的数sum就是m颠倒之后的数,如果两者相等,那就是回文数。

while(a){     sum=sum*10+a%10;     a=a/10;}


程序如下:

//如果有一个正整数从左、右来读都是一样的,则称为回文式数(简称回数);比如101,32123,//999都是回数。求10000以内的所有回数#include<stdio.h>int main(){int i;//循环变量int count=0;//循环计数int sum;int a;for(i=1;i<10000;++i){a=i;sum=0;while(a){sum=sum*10+a%10;a=a/10;}if(sum==i){printf("%8d",i);count++;if(count%5==0)printf("\n");}}printf("\n");return 0;}


第二种方式:判断第一位和最后一位,第二位和倒数第二位。。。

#include<stdio.h>int main(){for(int i=1;i<10000;i++)//循环10000以内的数字{char str[6];//字符数组存储数字的各位数(逆序存储的)int temp=i;int t=0;int flag=1;while(temp){str[t]=temp%10;//求个位上的数字并保存在数组str中temp/=10;//去掉个位上的数字t++;}for(int j=0;j<t;j++){if(str[j]!=str[t-j-1])//判断第一位和最后一位,第二和倒数第二位...{flag=0;break;}}if(flag)printf("%d\t",i);}printf("\n");}


 

0 0