Ich habe ein Programm geschrieben, um nach der Palindrom-Nummer zu suchen.
#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);
}
Aber es zeigt immer "Zahl ist kein Palindrom", unabhängig davon, ob Zahl kein Palindrom ist oder nicht.
Die reverse
Funktion lässt ihr Argument auf Null zeigen. Das Argument muss kein Zeiger sein, und die Übergabe eines n
Werts löst das Problem.
Hier ist fester Code, etwas neu formatiert und mit Fehlerprüfung hinzugefügt.
#include <stdio.h>
int reverse(int p) {
int rev = 0;
while (p != 0) {
rev = rev * 10;
rev = rev + p%10;
p = p/10;
}
return rev;
}
int main(void) {
int n, i;
printf("Please enter a number: ");
if (scanf("%d", &n) != 1) {
printf("failed to read number.\n");
return 1;
}
i = reverse(n);
if (i == n) {
printf("%d is a palindrome: reversing it gives %d\n", n, i);
} else {
printf("%d isn't a palindrome: reversing it gives %d\n", n, i);
}
return 0;
}
Es ist eine wichtige Fähigkeit, Programme debuggen zu können. Hier ist ein guter Link für einige Anfängertechniken: http://ericlippert.com/2014/03/05/how-to-debug-small-programs/
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen