Der Zahlenvergleich in C führt zu einem falschen Ergebnis

Redsoxlost

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.

Paul Hankin

Die reverseFunktion lässt ihr Argument auf Null zeigen. Das Argument muss kein Zeiger sein, und die Übergabe eines nWerts 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.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Der Datetime-Vergleich führt zu einem falschen Ergebnis

Der Versuch, einen Wert von der Funktion TODAY () zu subtrahieren, führt zu einem falschen Ergebnis

Python: Der Aufruf von list () für das Generatorobjekt führt zu einem falschen Ergebnis

Der Android Keystore, der verschlüsselte Daten entschlüsselt, führt zu einem falschen Ergebnis

Das Hinzufügen des: vor der Variablen führt zu einem falschen Ergebnis

Wählen Sie, wo der Wert Null ist. Dies führt zu einem falschen Ergebnis

Das Instrumentieren der Java-String-Objektgröße führt zu einem falschen Ergebnis

Der Vergleich von 2 gleichen Dezimalzahlen führt jedoch zu einem falschen Ergebnis

Die Integration der stückweisen Funktion führt zu einem falschen Ergebnis

Der Vergleich von Zahlen führt in Python zu einem falschen Ergebnis

SQL Server CTE, der mit "Gruppieren nach" verwendet wird, führt zu einem falschen Ergebnis

Der Aufruf von MultiByteToWideChar () im 64-Bit-Büro führt zu einem falschen Ergebnis

Das Hinzufügen der Uhrzeit zum Kalenderdatum unter Linux führt zu einem falschen Ergebnis

c #: Das Hinzufügen von zwei großen Ganzzahlen führt zu einem falschen Ergebnis

Parse double auf String, was zu einem falschen Ergebnis führt

Warum führt diese Berechnung zu einem falschen Ergebnis?

Auf String teilen, was zu einem falschen Ergebnis führt

Warum führt das folgende Schleifenabrollen zu einem falschen Ergebnis?

Warum führt diese Hashtabelle zu einem falschen Ergebnis?

Die Ingres-Multiplikation führt zu einem falschen Ergebnis

Warum Tensorflow gleich ist, führt zu einem falschen Ergebnis

np.cast in numpy führt zu einem falschen Ergebnis

Die negative Auswahl der Pandas für die Zeichenfolge in der Liste führt zu einem falschen Ergebnis

Das Dekodieren von Base64 in C # führt manchmal zu einem falschen Ergebnis mit einem zusätzlichen Füllzeichen

Der für Win32 kompilierte Win64-SSE-Code führt zu einem falschen Ergebnis des Leistungsindikators

Das Klicken auf die Schaltfläche in der UITableview-Zelle führt während der Suche zu einem falschen Ergebnis

Eine Java-Datumszeichenfolge im Format "07-apr-2016" führt bei der Konvertierung in sqldate zu einem falschen Ergebnis

Die Summe der Ganzzahlen zwischen „a“ und „b“ führt bei großen Eingaben zu einem falschen Ergebnis

Ich portiere eine einfache RNG-Funktion von C nach Go, was zu einem falschen Ergebnis führt