c - Switch 语句在 C 中不起作用

标签 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;
}

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

最佳答案

由于choice是一个char(不是字符串),那么:

scanf("%s",&choice);

应该是

scanf(" %c",&choice);

注意 %c 之前的空格 - 这对于清除输入缓冲区中的任何空白字符很有用,例如来自先前输入的换行符。

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

关于c - Switch 语句在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371026/

相关文章:

c - getpwuid_r 和 getgrgid_r 很慢,如何缓存它们?

c - C中的Posix正则表达式匹配...全匹配异常?

c - 警报(级别 : Fatal, 描述:解码错误)- 转发代理

switch-statement - 打开一个字节

c++ - 在switch语句中调用函数时,似乎永无休止的循环的问题(即使函数不包含循环)

c++ - 在 "assert"(C++) 中使用 switch 语句

java - 切换问题,阵列打印

c - 释放二维动态数组时堆损坏

c - "int *path"和 "int path[]"之间有什么区别吗?

javascript - JavaScript有switch的表达形式吗?