2016-08-15 2 views
-2

Я создал программу использования оператора switch, чтобы сделать простой калькулятор. Если я сначала беру целочисленный вывод &, тогда вывод оператора, значение b всегда отображается '0'. (код указан здесь) Однако, если я сначала беру вывод оператора, программа работает просто отлично. Что может быть причиной этого? Благодарю.Использование оператора switch для простого калькулятора

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; 

}

ответ

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

это не правильно. sign - char, так что он может хранить только 1 символ, но вы пытаетесь прочитать строку, для которой потребуется более 1 символа, чтобы она перекрывала память.

Вместо использования

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

Это основной вопрос. Вы должны иметь в виду, что символ может содержать один символ с клавиатуры. С другой стороны, когда вы вводите переменную ввода или вывода символов, для этой цели вы должны использовать% c. С другой стороны, мы знаем, что строка построена с несколькими комбинациями символов. Строковая переменная объявляется с помощью char

переменная [размер];

И для ввода или вывода строки вам необходимо использовать% s. Поскольку вы не использовали «string» здесь, вам нужно заменить% s% c, и это должно решить вашу проблему!

Смежные вопросы