打印所有开关语句

时间:2015-02-18 02:32:50

标签: c switch-statement

我知道如何在C中打印,但我只是想知道是否有一种快速方法可以同时执行所有的case语句,所以我不必再次printf所有的菜单选项。我希望用户在从菜单中选择一个选项之前先看菜单。

int main(int argc, char* argv[])
{
int menu;   
printf("Enter option : \n" );
scanf(" %c", &menu);


switch(menu)
{
        case '1':
            printf("1. Where do you live \n");
        break;

        case '2':
            printf("2. How old are you \n");
         break;

        case '3':
            printf("3. What is your name \n");
            break;

    case '4':
            printf("4. Where do you live \n");
            break;



}
return 0;
};

2 个答案:

答案 0 :(得分:3)

有办法做到这一点。这是相当丑陋的,但你可以使用故意堕落来执行你的所有案例陈述,只要你强迫它在你的第一个案件开始。

if (print_all)
{
  menu = '1';
}

switch(menu)
{
        case '1':
            printf("1. Where do you live \n");

        if (!print_all)
          break;

        case '2':
            printf("2. How old are you \n");

        if (!print_all)
          break;

        case '3':
            printf("3. What is your name \n");

        if (!print_all)
          break;

        case '4':
            printf("4. Where do you live \n");

        if (!print_all)
          break;
}

您可能还想查看Duff的设备,它以更加特殊的方式使用开关。

答案 1 :(得分:2)

如果不对switch进行(主要)修改,则无法执行printf的所有情况。

但是在你的情况下,我认为你不需要。将所有菜单printf移到“输入选项”printf上方,以便在出现提示之前显示菜单。您根本不希望在switch语句中使用switch! {{1}}将用于处理用户的响应。