2017-01-02 12 views
-1
#include <stdio.h> 

int x,y;  
y = 999; 

int main() 
{ 
    printf("\nEnter a whole number: "); 
    scanf("%d ", &x); 

    y = ((x >= 1) && (x <= 20)) ? x : y; 

    printf("%d ", y); 

    return 0; 
} 

Ich kann dieses Programm nicht dazu bringen, das zu tun, was ich will. Ich bitte einen Benutzer, eine ganze Zahl einzugeben. Wenn diese Zahl zwischen 1-20 liegt, möchte ich, dass sie diese Nummer wieder ausspuckt. Wenn nicht, möchte ich den Wert für "y" ausspucken. Ich möchte keine "Wenn" -Aussage verwenden.Dieses "Conditional Operator" -Programm kann nicht funktionieren

+0

Was ist der Fehler, den Sie erhalten? Es ist nicht gut, eine Variable auf beiden Seiten einer Zuweisung zu verwenden. – codeforester

+0

Was ist das Problem genau? –

+0

Wenn das Programm läuft, wird Folgendes ausgegeben: "Geben Sie eine ganze Zahl ein:". Wenn ich die Nummer eingebe, springt der Cursor einfach zur nächsten Zeile und blinkt. Nichts wird produziert. –

Antwort

1

Es gibt ein Leerzeichen im scanf, aufgrund dessen Sie ein Problem haben. Bitte entfernen Sie den Speicherplatz und versuchen Sie, den Code auszuführen. Danke :)

#include <stdio.h> 
int x, y; 
y = 999; 
int main() 
{ 
printf("\nEnter a whole number: "); 
scanf("%d", &x); 
y = ((x >= 1) && (x <= 20)) ? x : y; 
printf("The value is %d ", y); 
return 0; 
} 
0

Ich führte den obigen Code aus und ich erhielt den folgenden Fehler: /temp/file.cpp:4:1: Fehler: 'y' nennt keinen Typ y = 999;
^ Compilation

Fehlgeschlagen

Die unten Änderung das Problem angegangen: int x, y = 999;

+0

Dies sollte ein Kommentar sein –

2

Sie benötigen

scanf("%d ", &x); 

zu

scanf("%d", &x); // remove trailing whitespace 
     ^^ 

ändern, weil der Eingang eine genaue Übereinstimmung für das Format-String geliefert werden muss.

Andernfalls müssen Sie zur Übereinstimmung mit der abschließenden Newline (Whitespace) explizit eine Whitespace und eine Abschlussbedingung angeben. (Beispiel: drücken Sie Geben Sie ein, geben Sie dann ein beliebiges anderes Leerzeichen ein und drücken Sie ENTER erneut).

+0

Drücken Sie zweimal Enter wird immer noch nicht Eingabe beenden - Leerzeichen im Formatzeichenfolge bedeutet * mit einer beliebigen Menge von Leerzeichen * übereinstimmen, so dass die Eingabe fortgesetzt wird, bis nicht-Leerzeichen empfangen wird –

Verwandte Themen