Я написал программу для проверки номера Palindrome.Сравнение номеров в C дает неверный результат
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int n,i;
printf("Please enter a number: ");
scanf("%d", &n);
/* Function Prototypes */
int reverse(int *p);
i=reverse(&n);
printf("Number returned %d",i);
if (i == n)
{
printf("The number is a palindrome");
}
else
{
printf("The number is NOT a palindrome");
}
}
int reverse(int *p)
{
int rev=0;
while(*p !=0)
{
rev=rev*10;
rev=rev+ *p%10;
*p=*p/10;
}
return (rev);
}
Но он всегда показывает «Число не является палиндром», независимо от числа, не является палиндром или нет.
Пара незначительных улучшений: (1) проверьте, что 'scanf()' возвращено 1; (2) неплохо напечатать входное значение, а также выходное значение -'printf («Число% d - это палиндром (обратный:% d) \ n", n, i); 'и' printf («Число% d не является палиндром, потому что в качестве примера оно обращается в сторону \ n", n, i). Эховые входы, в частности, помогают обнаружить, что входной номер был уничтожен исходной версией 'reverse()' (той, что в вопросе). –
@JonathanLeffler спасибо, я включил ваши предложения в код. –
Благодарим за внесение изменений. Я не могу дать второе голосование - извините. –