每当用户键入2个整数并从+,-,*,/中选择任何内容时,程序都会运行switch语句。问题是switch语句使第一个整数0并基于该值给出结果。
假设2个整数分别是4和8。用户选择+。程序给出的结果是这样的0 + 8 = 8。其他选项也是如此。
这是代码:
#include <stdio.h>
int main() {
int x,y;
char choice;
printf("Enter the first Integer:\n");
scanf("%d",&x);
printf("Enter the second Integer:\n");
scanf("%d",&y);
printf("Choose the action you want to perform\n")
scanf("%s",&choice);
switch(choice) {
case '+':
printf("\n%d + %d = %d",x,y,x+y);
break;
case '-':
printf("\n%d - %d = %d",x,y,x-y);
break;
case '*':
printf("\n%d * %d = %d",x,y,x*y);
break;
case '/':
if(y==0) {
printf("Undefined value\n");
} else {
printf("\n%d / %d = %d",x,y,x/y);
}
break;
default:
printf("\n Enter something valid\n");
break;
}
return 0;
}
在这个问题上需要您的帮助。
最佳答案
由于choice
是char
(不是字符串),因此:
scanf("%s",&choice);
应该
scanf(" %c",&choice);
注意
%c
之前的空格-这对于从输入缓冲区刷新所有空白字符很有用,例如来自先前输入的换行符。还请注意,如果您启用了编译器警告(例如
gcc -Wall ...
),则编译器会立即向您指出此错误。