#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语言关于回文数的程序,找到了,不太懂等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)