每当用户键入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;
}


在这个问题上需要您的帮助。

最佳答案

由于choicechar(不是字符串),因此:

scanf("%s",&choice);


应该

scanf(" %c",&choice);


注意%c之前的空格-这对于从输入缓冲区刷新所有空白字符很有用,例如来自先前输入的换行符。

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

10-08 08:18
查看更多