Switch语句在C中不起作用

Sal*_*han -1 c switch-statement

每当用户键入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;
}
Run Code Online (Sandbox Code Playgroud)

在这个问题上需要你的帮助.

Pau*_*l R 6

既然choicechar(不是字符串)那么:

scanf("%s",&choice);
Run Code Online (Sandbox Code Playgroud)

应该

scanf(" %c",&choice);
Run Code Online (Sandbox Code Playgroud)

注意前面的空格%c- 这对于从输入缓冲区中刷新任何空格字符很有用,例如来自前一个输入的换行符.

另请注意,如果您已启用编译器警告(例如gcc -Wall ...),则编译器会立即向您指出此错误.