C 循环开关?
C Looping a switch?
所以这是我的代码:
我的问题是我想用一个 while 循环来循环 switch 语句,这取决于得到的字符响应(在底部)。
我试过将整个 switch 语句放在一个 do while 循环中(失败了)。
无论如何,我是这门语言的新手,我想尝试编写一个复杂的程序。
#include <stdio.h>
#include <stdlib.h>
#define LINE "____________________"
#define TITLE "Tempature Converter"
#define NAME "Jose Meza II"
char scale, response;
float temp, celTemp, farTemp, kelTemp;
int main() {
printf("\n \t %s \n \t %s \n", LINE, TITLE );
printf("\t by %s \n \t %s \n\n", NAME, LINE );
printf("Enter C for Celsius, F for Fahrenheit, or K for Kelvin: ");
scanf("%c", &scale);
printf("Tempature value: ");
scanf("%f", &temp);
switch (scale)
{
case ('c'): /* convert to Fahrenheit and Kelvin */
{
farTemp = (temp * 9 / 5) + 32;
kelTemp = temp + 273.15;
printf("Fahrenheit = %.2f\n", farTemp);
printf("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'c' */
case ('f'): /* convert to Celsius and Kelvin */
{
celTemp = (temp - 32) * 5 / 9;
kelTemp = (temp - 32) * 5 / 9 + 273.15;
printf ("Celsius = %.2f\n", celTemp);
printf ("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'f' */
case ('k'): /* convert to Celsius and Fahrenheit */
{
celTemp = temp - 273.15;
farTemp = (temp - 273.15) * 9 /5 + 32;
printf("Celsius = %.2f\n", celTemp);
printf("Fahrenheit = %.2f\n\n", farTemp);
break;
} /* end case 'k' */
default: exit(0); /* no valid temperature scale was given, exit program */
} /* end switch */
printf("Enter in C to Continue, or S to stop: ");
scanf(" %c", &response);
return 0;
}
我能做什么?
我试过:
do
{
printf("Enter C for Celsius, F for Fahrenheit, or K for Kelvin: ");
scanf("%c", &scale);
printf("Tempature value: ");
scanf("%f", &temp);
switch (scale)
{
case ('c'): /* convert to Fahrenheit and Kelvin */
{
farTemp = (temp * 9 / 5) + 32;
kelTemp = temp + 273.15;
printf("Fahrenheit = %.2f\n", farTemp);
printf("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'c' */
case ('f'): /* convert to Celsius and Kelvin */
{
celTemp = (temp - 32) * 5 / 9;
kelTemp = (temp - 32) * 5 / 9 + 273.15;
printf ("Celsius = %.2f\n", celTemp);
printf ("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'f' */
case ('k'): /* convert to Celsius and Fahrenheit */
{
celTemp = temp - 273.15;
farTemp = (temp - 273.15) * 9 /5 + 32;
printf("Celsius = %.2f\n", celTemp);
printf("Fahrenheit = %.2f\n\n", farTemp);
break;
} /* end case 'k' */
default: exit(0); /* no valid temperature scale was given, exit program */
} /* end switch */
printf("Enter in C to Continue, or S to stop: ");
scanf(" %c", &response);
}
while(response == 'c');
最常见的方法是使用 do-while
循环。进行以下更改
1. 将 `response` 初始化为 `C`。
2. 将 `switch` case 和下一个 `printf()` 和 `scanf()` 放入 `do..while()` 循环中。
3. 在`while ()`条件下,勾选`while (c == `C`)`。
修改后,问题好像是
scanf("%c", &scale);
你需要在%c
之前有一个space,比如
scanf(" %c", &scale);
最后在 C
之后避免 ENTER [\n
]。
所以这是我的代码:
我的问题是我想用一个 while 循环来循环 switch 语句,这取决于得到的字符响应(在底部)。
我试过将整个 switch 语句放在一个 do while 循环中(失败了)。
无论如何,我是这门语言的新手,我想尝试编写一个复杂的程序。
#include <stdio.h>
#include <stdlib.h>
#define LINE "____________________"
#define TITLE "Tempature Converter"
#define NAME "Jose Meza II"
char scale, response;
float temp, celTemp, farTemp, kelTemp;
int main() {
printf("\n \t %s \n \t %s \n", LINE, TITLE );
printf("\t by %s \n \t %s \n\n", NAME, LINE );
printf("Enter C for Celsius, F for Fahrenheit, or K for Kelvin: ");
scanf("%c", &scale);
printf("Tempature value: ");
scanf("%f", &temp);
switch (scale)
{
case ('c'): /* convert to Fahrenheit and Kelvin */
{
farTemp = (temp * 9 / 5) + 32;
kelTemp = temp + 273.15;
printf("Fahrenheit = %.2f\n", farTemp);
printf("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'c' */
case ('f'): /* convert to Celsius and Kelvin */
{
celTemp = (temp - 32) * 5 / 9;
kelTemp = (temp - 32) * 5 / 9 + 273.15;
printf ("Celsius = %.2f\n", celTemp);
printf ("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'f' */
case ('k'): /* convert to Celsius and Fahrenheit */
{
celTemp = temp - 273.15;
farTemp = (temp - 273.15) * 9 /5 + 32;
printf("Celsius = %.2f\n", celTemp);
printf("Fahrenheit = %.2f\n\n", farTemp);
break;
} /* end case 'k' */
default: exit(0); /* no valid temperature scale was given, exit program */
} /* end switch */
printf("Enter in C to Continue, or S to stop: ");
scanf(" %c", &response);
return 0;
}
我能做什么?
我试过:
do
{
printf("Enter C for Celsius, F for Fahrenheit, or K for Kelvin: ");
scanf("%c", &scale);
printf("Tempature value: ");
scanf("%f", &temp);
switch (scale)
{
case ('c'): /* convert to Fahrenheit and Kelvin */
{
farTemp = (temp * 9 / 5) + 32;
kelTemp = temp + 273.15;
printf("Fahrenheit = %.2f\n", farTemp);
printf("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'c' */
case ('f'): /* convert to Celsius and Kelvin */
{
celTemp = (temp - 32) * 5 / 9;
kelTemp = (temp - 32) * 5 / 9 + 273.15;
printf ("Celsius = %.2f\n", celTemp);
printf ("Kelvin = %.2f\n\n", kelTemp);
break;
} /* end case 'f' */
case ('k'): /* convert to Celsius and Fahrenheit */
{
celTemp = temp - 273.15;
farTemp = (temp - 273.15) * 9 /5 + 32;
printf("Celsius = %.2f\n", celTemp);
printf("Fahrenheit = %.2f\n\n", farTemp);
break;
} /* end case 'k' */
default: exit(0); /* no valid temperature scale was given, exit program */
} /* end switch */
printf("Enter in C to Continue, or S to stop: ");
scanf(" %c", &response);
}
while(response == 'c');
最常见的方法是使用 do-while
循环。进行以下更改
修改后,问题好像是
scanf("%c", &scale);
你需要在%c
之前有一个space,比如
scanf(" %c", &scale);
最后在 C
之后避免 ENTER [\n
]。