2014-04-01 92 views
-1

我已經創建了這個程序將華氏轉換爲攝氏溫度,反之亦然,現在我想將這個if語句轉換爲switch語句,有人可以幫我完成這個任務。更改C語言中switch語句的代碼?

int main(void) { 

char condition; // Declare a variable. 
float celsius, fahrenheit, temp; 

printf("Enter Temp in either Celsius or Fahrenheit: \n"); scanf("%f", &temp); //Ask user to enter Temp. 

printf("What type of conversion you want? (hint: 'C/c' for Celsius or 'F/f' for Fahrenheit) \n"); scanf(" %c", &condition); 
if (condition == 'f' || condition == 'F') { 

    fahrenheit = (temp * 1.8) + 32; //Calculates temp in Fahrenheit. 

    printf("The temp in Fahrenheit is: %.2f", fahrenheit); //Displays result. 

} else if (condition == 'c' || condition == 'C') { 

    celsius = (temp - 32)/1.8; //Calculate temp in Celsius. 

    printf("The temp in Celsius is: %.2f", celsius); //Displays result. 
    } 
} 
+4

幫助你,可能。爲你做,不。告訴我們你已經嘗試了什麼,並解釋它是如何工作的。 –

回答

0
switch(condition){ 
    case 'f': 
    case 'F': 
     fahrenheit = (temp * 1.8) + 32; 
     printf("The temp in Fahrenheit is: %.2f", fahrenheit); 
     break; 

    case 'c': 
    case 'C': 
     celsius = (temp - 32)/1.8; 
     printf("The temp in Celsius is: %.2f", celsius);  
     break;  
} 
+3

不需要重複相同的代碼兩次到案例 –

+0

因爲a)你正在爲他做他的工作和b)你有冗餘的代碼。 –

+1

由於@JonathonReinhart說了什麼,我想看一個動畫獨角獸。 – clcto

1
switch(condition){ 
case 'f':case'F': 
    //block 
    break; 
case 'c':case'C': 
    //block 
    break; 
default: 
    //error 
} 
+2

從來沒有見過這種格式的多個案件處理相同的... - 你用完新線? ;-) – alk

+0

然而,至少在評論中提及1+,「默認」分支表示「異常」。 – alk

0

像這樣的工作

switch(condition) 
{ 
    case 'c': 
    case 'C': 
     fahrenheit = (temp * 1.8) + 32; //Calculates temp in Fahrenheit. 
     printf("The temp in Fahrenheit is: %.2f", fahrenheit); //Displays result. 
     break; 
    case 'f': 
    case 'F': 
     celsius = (temp - 32)/1.8; //Calculate temp in Celsius. 
     printf("The temp in Celsius is: %.2f", celsius); //Displays result. 
} 
0

試試這個:

switch(condition) 
{ 
    case 'f': 
    case 'F': 
       fahrenheit = (temp * 1.8) + 32; //Calculates temp in Fahrenheit. 
       printf("The temp in Fahrenheit is: %.2f", fahrenheit); //Displays result. 
       break; 
    case 'c': 
    case 'C': 
       celsius = (temp - 32)/1.8; //Calculate temp in Celsius. 
       printf("The temp in Celsius is: %.2f", celsius); //Displays result. 
       break; 
    default: break; 
} 

背後的邏輯:控制流繼續進行,直到break statemen t被檢測到。所以即使condition='f','F'的情況下也會執行然後中斷。在cC的情況下也是如此。