2016-03-06 298 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中退出。