Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and beginning April 20th, 2021 (Eastern Time) the Yahoo Answers website will be in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

switch的問題

#include<stdio.h>

float addition(void);

float subtraction(void);

float multiplication(void);

float division(void);

int main(void)

{

int num=0;

while(num<=0)

{

num ;

printf("請輸入要進行哪個運算:<1> <2>- <3>* <4>/ <5>離開 \n");

scanf("%d",&num);

switch (num)

{

case 1 :

addition();

continue;

case 2 :

subtraction();

continue;

case 3 :

multiplication();

continue;

case 4 :

division();

continue;

case 5 :

printf("~~~~~~~掰掰~~~~~~~~");

break;

}

}

getchar();

getchar();

return 0;

}

//------------------------------------------------------------

float addition(void)

{

float a,b,c;

printf("請輸入兩個數:");

scanf("%f %f",&a,&b);

c=a b;

printf("%f %f = %f",a,b,c);

getchar();

getchar();

return 0;

}

float subtraction(void)

{

float a,b,c;

printf("請輸入兩個數:");

scanf("%f %f",&a,&b);

c=a-b;

printf("%f - %f = %f",a,b,c);

getchar();

getchar();

return 0;

}

float multiplication(void)

{

float a,b,c;

printf("請輸入兩個數:");

scanf("%f %f",&a,&b);

c=a*b;

printf("%f * %f = %f",a,b,c);

getchar();

getchar();

return 0;

}

float division(void)

{

float a,b,c;

printf("請輸入兩個數:");

scanf("%f %f",&a,&b);

c=a/b;

printf("%f / %f = %f",a,b,c);

getchar();

getchar();

return 0;

}

以上

我想讓他可以一直問問題,除非輸入5

譬如我輸入1→答案出來→又再問一次問題→再輸入一個數字

直到輸入五為止,要不然會持續下去

難道是我的continue用法用錯了嗎?

2 Answers

Rating
  • Mark
    Lv 5
    2 decades ago
    Favorite Answer

    continue指令一般是用在迴圈裏面, 要跳過後面指令的執行, 直接開始下個迴圈

    比如說

    for (;;)

    {

    ............

    if (.....) continue;

    .............

    }

    但 switch()並不是一個迴圈, 只會執行一次, 本身並沒有執行下一次迴圈的需要

    在switch()裏面不需要用到continue這個指令

    我想是你對 switch的用法還不是很了解而造成一些誤解

    switch都是使用在有多種情況下各做不同的事

    一般用法如下

    switch (...)

    {

    case 情況 1 : 程式碼 1; break;

    case 情況 2 : 程式碼 2;

    case 情況 3 : 程式碼 3; break;

    default: 預設程式碼; // default通常是放在最後面, 所以不用加break

    }

    在switch()裏面的break指令, 是要跳出switch() { ... }

    而不是跳出switch()外面的迴圈

    在我上面寫的switch範例, 在情況 2 時沒有加break;

    當程式碼 2 執行完後, 會繼續程式碼 3

    如果在程式碼 2 後面加break, 則執行完程式碼 2 後就會跳離 switch()

    所以在你的程式中 case 5的 break 只會跳出switch () {... }

    並不是跳出迴圈

    依你的情況, 程式的寫法可以寫成以下的型式

    for (num = 0; num!= 5;)

    {

    printf("請輸入要進行哪個運算:<1> '+' <2>'-' <3>'*' <4>'/' <5>離開 \n");

    scanf("%d",&num);

    switch (num)

    {

    case 1 : addition(); break;

    case 2 : subtraction(); break;

    case 3 : multiplication();break;

    case 4 : division(); break;

    case 5 : printf("~~~~~~~掰掰~~~~~~~~"); break;

    default : printf("您輸入的數字超過範圍!\n");

    }

    }

  • ?
    Lv 7
    2 decades ago

    continue 不是這樣用的。你還是應該用 break 再每一個 selection 後面。另外,在最後,單獨用 if 來判斷是否輸入值是 5, 如果是的話,就用 break 離開迴圈。這樣會比較好處理。

Still have questions? Get your answers by asking now.