C语言求回文数

C语言求回文数,第1张

#include <stdioh>

#include <stdlibh>

#include <stringh>

main()

{

int i,len,flag,cnt=1,num,numrev,addnum;

char str[20]={0},strRev[20]={0},hui[20]={0};

gets(str);   //输入数字 以字符串方式接收

num=atoi(str);  //转为数字

strcpy(strRev,strrev(str));  //将接收的字符串逆序 

numrev=atoi(strRev);        //转换成逆序的数字

while (1)

{

addnum = num+numrev;   //两个数字相加

printf("STEP%d:%d+%d=%d\n",cnt,num,numrev,addnum); //输出

itoa(addnum,hui,10); //将相加后的数字 转为字符串

len=strlen(hui);   //求长度

flag=0;            //标识是否是回文

for (i=0;i<len;i++)      //判断是否回文

{

if (hui[i]!=hui[len-i-1])

{

flag=1;      //如果不是回文 继续  

break;

}

}

if (!flag )             //根据上面标识符判断是否回文

{

printf("%d %d\n",cnt,addnum);  // 是户

break;

}else if (cnt++>=30)    //判断是否大于等于30次

{

printf("0\n");

break;

}

num =addnum;            //将和 作为下次运算的第一个数字

strcpy(strRev,strrev(itoa(num,str,10)));//根据第一个数逆序出第二个数

numrev=atoi(strRev); //字符串转数字

}

}

main()

{

int x,n,i,j,a[20],c;

long sum;

scanf("%d",&n);

for (x=1;x<=n;x++)

{ sum=xx;

for(i=1;i<20;i++)

a[i]=0;

for (i=1;i<20;i++)

{a[i]=sum%10;

sum=sum/10;

if (sum==0) break;

}

if (i%2==0) {c=0; for (j=1;j<=i/2;j++) {if(a[j]!=a[i+1-j]) c=1;}

if (c==0){printf("%d %d\n",x,xx);}}

else {c=0; for (j=1;j<=(i-1)/2;j++) {if (a[j]!=a[i+1-j]) c=1;}

if (c==0){printf("%d %d\n",x,xx);}}

}

}

你这代码的运行结果是:

aexe

11      101     111

这明显有问题啊,11~999,怎么可能就这三个,下面是我写的回文数的程序,供你参考下吧

#include <stdioh>

#define N 1000  //定义符号常量

//判断是否为回文数的函数

int isHuiwenNumber(int n)

{

int sum,tmp;

tmp=n;

sum=0;

while(n)  //从低位到高位分解n的每位的数字,然后依次相加

{

sum=sum10+n%10;

n/=10;

}

if(tmp == sum) //如果重新每位求和的值等于原值,则该数为完数,返回1,否则返回0

return 1;

else

return 0;

}

int main()

{

int i,count;

for(i=11,count=0;i<N;i++)

{

if(isHuiwenNumber(i))  //调用函数,如果条件为真,执行if语句体

{

printf("%-6d",i);   //输出回文数

count++;

if(count % 20 == 0) //每行输出20个后便换行

printf("\n");

}

}

return 0;

}

#include<stdioh>

int main()

{

int i,n,m,count=0;

printf("所有的回文数字如下:\n");

for(i=1;i<=1000;i++)

{

n=i;

m=0;

while(n)

{

m=m10+n%10;

n/=10;

}

if(m==i)

{

printf("%d ",m);

count++;

}

}

printf("\n共%d个\n",count);

getchar();

return 0;

}

以上就是关于C语言求回文数全部的内容,包括:C语言求回文数、C语言编程回文数、c语言关于回文数的程序,找到了,不太懂等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9425614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存