c - 使用带有数字大小写和字符大小写的开关

标签 c char switch-statement case

我想创建一个 switch 循环。

如果输入是从15。它会打印一个数字。否则它将打印“这不是数字”。如果输入是'e'switch 循环应该结束。

我可以输入数字部分,但我不知道如何用 'e' 进行输入。它只是不会读取。这是我的代码:

int main() {
int i,a = 0;
printf("Write something:");
scanf("%d", &i);
    do{
    switch (i)
    {
    case 1:
        printf("1");
        break;
    case 2:
        printf("2");
        break;
    case 3:
        printf("3");
        break;
    case 4:
        printf("4");
        break;
    case 5:
        printf("5");
        break;
    case 'e':
        a=1;
        break;
    default:
        printf("This is not a number”); 
        break;
    }
}while (a==0);}

我的问题是我无法输入 'e' 或任何字符。因为如果我这样做,我将创建一个悖论循环,或者根本不起作用。我哪里错了?

最佳答案

只需将整数视为这样的字符即可;

顺便说一句,您可能希望每次通过 while 循环读取一个新字符,否则您将永远陷入打印困境。下面的默认情况允许我们打破循环。

int main() {
    char i,a = 0;
    printf("Write something:");
    scanf("%c", &i);
    do{
        switch (i)
        {
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
            printf("%c",i);
            break;
        case 'e':
            a=1;
            break;
        default:
            printf("This is not a number"); 
            break;
        }
    }while (a==0);
}

关于c - 使用带有数字大小写和字符大小写的开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678930/

相关文章:

在 IAR ARM V8 编译器中更改 DWARF elf 格式

c - MinGW 安装哪个版本的 gcc?

c++ - 将 char 添加到字符串会导致 C++ 崩溃

c - C语言中用一个字符替换字符串中的多个字符

Java switch 语句 <identifier> 问题

带有数组或字符串的 Javascript 开关盒

C switch 语句的汇编 - 它是如何工作的?

c - 将逗号之间的字符串分隔成c中的数组

c - 对于 double 值,如何不接收不是 scanf 中数字的字符。

c - 指针 C 的值