这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int n;
unsigned long series[100], beck[100];
int j=0, num=0,temp=0,notflin=0;
printf("Please enter the length_of the series :\n");
printf("Please enter the series :\n");
scanf("%u",&n);
for(unsigned int f=0; f<n; f++)
{ series[f]=0;
scanf("%lu",&series[f]);
}
printf("check");
printf("%u",n);
for(unsigned int i=(n-1); i>=0 ; i--)
{
num=0;
num=series[i];
temp=0;
if (num)
{
while((double) num/10!=0)
{
temp*=10;
temp+=(num%10);
num/=10;
}
}
beck[j]=0;
beck[j]=temp;
j++;
}
unsigned int s=0,d=0;
while(1)
{
unsigned long num1=0, number=0;
number=(series[n-1-d]%10);
num1=(beck[n-1-s]%10);
if (number!=num1)
{
notflin=1;
break;
}
series[n-1-d]/=10;
beck[n-1-s]/=10;
if(beck[n-1-s]==0)
s++;
if(series[n-1-d]==0)
d++;
if (d==(n-1)||s==(n-1))
break;
}
printf(notflin==0? "Yes\n":"No\n");
return 0;
}
我尝试将输入输入unsigned long beck[]
,这样最后一个索引中的数字将成为unsigned long series[]
中的第一个,然后进行比较索引中的数字。
当我尝试运行代码时,它卡住了。有什么问题?
最佳答案
您可以使用以下代码来判断一个数字是否为回文。如果数字是回文,该方法返回 0,否则返回 -1 -
public int isPalindrome(int number) {
int temp = number;
int reverseNumber = 0;
int rem = 0;
while (temp != 0) {
int rem = temp % 10;
reverseNumber = reverseNumber * 10 + rem;
temp = temp / 10;
}
// if 'number' and reverse of number is equal means
if (number == reverse) {
return 0;
}
return -1;
}
关于c - 如何判断一个数是不是回文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30414827/