2016-08-15 5 views
-2

Ich habe ein Programm zur Verwendung von 'switch' Anweisung erstellt, um einen einfachen Rechner zu machen. Wenn ich zuerst den ganzzahligen Ausgang & dann den Operatorausgang nehme, wird der Wert von b immer '0' angezeigt. (Der Code ist hier angegeben) Wenn ich jedoch zuerst die Operatorausgabe nehme, funktioniert das Programm einwandfrei. Was könnte der Grund dafür sein? Vielen Dank.Verwenden von Switch-Anweisung, um einen einfachen Taschenrechner zu erstellen

int a; 
int b; 
char sign; 

printf("Enter two required integers: "); 
scanf("%d", &a); 
scanf("%d", &b); 

printf("Enter the operator(+ or - or * or /): "); 
scanf(" %s", &sign); 


switch(sign){ 

    case '+': printf("The summation of %d and %d is %d", a,b, a+b); 
       break; 

    case '-': printf("The subtraction of %d and %d is %d", a,b, a-b); 
       break; 

    case '*': printf("The product of %d and %d is %d", a,b, a*b); 
       break; 

    case '/': printf("The division of %d and %d is %d", a,b, a/b); 
       break; 

    default: printf("Enter the right operator noob!"); 
} 

return 0; 

}

Antwort

5
scanf(" %s", &sign); 

dies ist nicht korrekt. sign ist char so kann es nur 1 Zeichen speichern, aber Sie versuchen, eine Zeichenfolge zu lesen, die mehr als 1 Zeichen benötigen würde, so dass der Speicher überschrieben würde.

Eher

scanf(" %c", &sign); 
0

Dies ist eine grundlegende Frage verwenden. Sie sollten daran denken, dass ein Zeichen ein einzelnes Zeichen von der Tastatur enthalten kann. Auf der anderen Seite sollten Sie bei der Eingabe oder Ausgabe von Zeichenvariablen% c für diesen Zweck verwenden. Auf der anderen Seite wissen wir, eine Zeichenfolge ist mit mehreren Zeichenkombination gebaut. String-Variable wird mit Char deklariert

Variable [Größe];

Und für die Eingabe oder Ausgabe von Zeichenfolgen müssen Sie% s verwenden. Da Sie hier keine 'Zeichenfolge' verwendet haben, müssen Sie % s durch% c ersetzen und das sollte Ihr Problem lösen!

Verwandte Themen