2016-03-06 297 views
1

我有一个功能,其中用户将被提示选择三个选项之一。在switch语句中打破for循环

1.对于插入 2.对于删除 0.for退出

我有一个无限for循环将不断要求用户做一些事情。但是,如果用户选择0,我想要无限循环break.But但我无法弄清楚如何打破循环内的开关case.How我可以设法做到这一点?谢谢!

for(;;){ 
     printf("please enter :\n"); 
     printf("1 for INSERT\n"); 
     printf("2 for DELETE\n"); 
     printf("0 for quit\n"); 

     printf("what's your value ?\n"); 
     scanf("%d",&operation); 
     switch(operation){ 
      case 1: 
       printf("you choose to INSERT. Please inter a value to insert\n"); 
       scanf("%d",&value); 
       insertAtBeginning(value); 
       break; 
      case 2: 
       printf("you choose to DELETE\n"); 

       deleteFromBeginning(); 
       break; 
      case 0: 
        break; 
     } 
} 
+0

只需要三个选项,不妨使用'if/else if/else'链;交换机没有任何收益,并阻止“break”工作。当然,'goto'到'for'循环下面的标签也是一个选项。 – ShadowRanger

回答

1

也许ü可以尝试,而(选择!= 0),而不是无限的循环

2

而是一个无限for循环的,你可以使用一个while循环和检查operation的值,而不是离开了0案例:

operation = -1;    // initialize 
while (operation != 0) {  // check operation instead 
    printf("please enter :\n"); 
    printf(" 1 for INSERT\n"); 
    printf("2 for DELETE\n"); 
    printf("0 for quit\n"); 

    printf("what's your value ?\n"); 
    scanf("%d",&operation); 
    switch(operation){ 
     case 1: 
      printf("you choose to INSERT. Please inter a value to insert\n"); 
      scanf("%d",&value); 
      insertAtBeginning(value); 
      break; 
     case 2: 
      printf("you choose to DELETE\n"); 

      deleteFromBeginning(); 
      break; 
    } 
} 
1

使用一个标志来决定何时中断。

bool end = false; 

for(;!end;) { 
    switch(operation) { 
     case 0: 
      end = true; 
      break; 
    } 
} 
+0

它给我错误 –

+0

它给你什么错误? – CrimsonKnights

0

您可以通过将一个条件,如果你的条件达到0,并把休息。 if(your-condition == 0) break; 在switch语句中break的含义并不意味着从for循环中退出,它只是从switch case中退出。