C I';我试着用一个简单的开关盒,但它不工作?

C I';我试着用一个简单的开关盒,但它不工作?,c,C,我希望它为每个案例分配一个字符串值,并且能够打印,如果需要,是否需要指针?为什么 int main() { int a; char d; printf("Input a Number\n"); scanf("%d",&a); switch(a) { case 1: d='One'; case 2: d='Two'; case 3: d='Three'; }

我希望它为每个案例分配一个字符串值,并且能够打印,如果需要,是否需要指针?为什么

int main()
{
    int a;
    char d;
    printf("Input a Number\n");
    scanf("%d",&a);

    switch(a)
    {
    case 1:
        d='One';
    case 2:
        d='Two';
    case 3:
        d='Three';
    }

    printf("You entered %s",d);
    return 0;
}
我预计产出:

input a number
1

you entered one

您的代码有几个问题:

  • 缺少
    #包括
  • 将“”之间的“字符串”分配给字符
  • 缺少
    break
    语句。如果没有
    中断
    ,程序的流程只会继续到下一个
    案例
  • 不是真的错,但风格很差:应该用有意义的名称命名变量
  • 更正代码:

    #include <stdio.h>
    
    int main()
    {
        int number;
        const char *numbername;  // const is not mandatory
        printf("Input a Number\n");
        scanf("%d", &number);
    
        switch (number)
        {
        case 1:
            numbername = "One";
            break;
        case 2:
            numbername = "Two";
            break;
        case 3:
            numbername = "Three";
            break;
        }
    
        printf("You entered %s", numbername);
        return 0;
    }
    
    #包括
    int main()
    {
    整数;
    常量char*numbername;//常量不是必需的
    printf(“输入一个数字”);
    scanf(“%d”和编号);
    开关(编号)
    {
    案例1:
    numbername=“一”;
    打破
    案例2:
    numbername=“二”;
    打破
    案例3:
    numbername=“三”;
    打破
    }
    printf(“您输入了%s”,numbername);
    返回0;
    }
    
    请注意,C中没有“字符串”类型。请阅读初学者C课本中有关字符串的章节


    暂时忘记
    const
    关键字,这是一个更高级的主题。

    您遇到的问题不是case语句:您的问题是字符串文本被双引号(
    )包围,而不是撇号(
    ),因为它们是为字符文本保留的

    奇怪的是,您在下面的
    printf()
    调用中使用了双引号


    注意:程序应该对此表示不满,因此您没有得到一个可执行程序。请不要只说这不起作用,因为这里发布的每个问题都与不起作用的问题有关。

    缺少休息时间。但在提问时,您还需要解释发生了什么,例如,“它总是打印‘三’”“。而且,你正试图将许多字符塞进一个字符中。教程可能是一个更好的起点。请在此处查找正确的语法: