#include<stdio.h>
//对称相等,步数 ,逆转
#include<string.h>
int hw(char s[]){//判断回文数的函数
int l=strlen(s);
for(int i=0;i<l;i++){
if(s[i]==s[l-i-1]){
continue;
}
else{
return 0;
}
}
return 1;
}
int main()
{
char s[1001];
scanf("%s",&s);
int hw(char s[]);
int count=0;
int len,jinwei=0;
//逆转数组
char temp;
while(count<=10){
len=strlen(s);
char reverse_s[len],sum[100001];
for(int i=0;i<len;i++){//逆转 到另一个数组
reverse_s[i]=s[len-i-1];
}
//从后向前逐位加和 sum是倒着的
int j=0,t;
for(int i=len-1;i>=0;i--){
temp=(s[i]-'0' + reverse_s[i]-'0')+jinwei;
if(temp>=10)//表示有进位
{
sum[j]=temp%10+'0';
j++;
jinwei=1;
}
else{//没有进位
sum[j]=temp+'0';
jinwei=0;
j++;
}
}
if(jinwei!=0)//最后仍有进位 则进为1
sum[j++]=jinwei+'0';
sum[j]='\0';//尾部
//将sum逆转
int len_sum=strlen(sum);
int k;
for(k=0;k<len_sum;k++){
t=sum[k];
sum[k]=sum[len-k-1];
sum[len-k-1]=t;
}
sum[len_sum-1]='\0';//尾
printf("%s + %s = %s\n",s,reverse_s,sum);
if(hw(sum)==1&&count<=10)//是回文数
{
printf("%s is a palindromic number.\n",sum);
break;
}
else{
for(int i=0;i<len_sum;i++){
s[i]=sum[i];//又从s开始
}
}
count++;
}
if(count>=10){
printf("Not found in 10 iterations.\n");
}
return 0;
}
在devc++上运行无法得到正确答案:
请问这是为什么,我的逻辑哪里有问题吗