Das Problem, das ich lösen muss, ist wie folgt: -Schreiben Sie eine Funktion mit dem Namen "is_digit", die ein Zeichen als Eingabe akzeptiert und einen ganzzahligen Wert zurückgibt 1, wenn die Parametereingabe eine ASCII-Ziffer zwischen 0 und 9 ist. Andernfalls muss die Funktion den Wert 0 zurückgeben.C macht eine Funktion Gibt 1 zurück, wenn Benutzereingabe 0-9 ist ASCII
- Rufen Sie in der Hauptfunktion is_digit auf und übergeben Sie ein Argument basierend auf Benutzereingaben. Die Hauptfunktion muss dann das Ergebnis vom Aufruf von is_digit ausgeben.
Dies ist, was ich bisher
#include <stdio.h>
char is_digit(int x)
{
if (x > '48' && x < '57') //The ascII range between 0-9 (i think...)
{
return 1;
}
else
//Whatever the user input is it always runs the else
{
return 0;
//Is this what the question means by "function must return a value of 0"
}
}
int main()
{
char x;
printf("input: ");
scanf("%c", &x);
is_digit(x);
}
Warum ist mein Programm nicht Rückkehr 1, wenn meine Benutzereingabe 0-9 ist ??
Aktualisierte Version mit Kommentaren berücksichtigt:
#include <stdio.h>
char is_digit(char x)
{
if (x >= 48 && x <= 57)
{
printf("1");
return 1;
}
else
{
printf("0");
return 0;
}
}
int main()
{
char x;
printf("input: ");
scanf("%c", &x);
is_digit(x);
}
Der Test 'if (x> '48' && x <'57')' ist falsch. Entfernen Sie die einfachen Anführungszeichen und verwenden Sie '> =' anstelle von '>' (auch '<=' anstelle von '<') – Aziz
Sie vergleichen ein int mit einem Zeichen (in etwa: ein Zeichen mit zwei Elementen; nicht sicher wie gültig das ist). Bitte benutzen und * lesen * Ihre Compiler Warnungen. – Evert
Whoops, repariert meine if-Aussage, am meisten geschätzt! Aber meine Funktion kommt immer noch nicht zurück 1 ..... –