每当用户输入 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 ...
),那么编译器会立即向您指出此错误。
关于c - Switch 语句在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371026/