gpt4 book ai didi

C 循环开关?

转载 作者:行者123 更新时间:2023-11-30 18:55:15 25 4
gpt4 key购买 nike

这是我的代码:

我的问题是我想用 while 循环来循环 switch 语句,具体取决于得到的 char 响应(在底部)。

我尝试将整个 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. 初始化对“C”的“响应”。2. 将`switch` case 以及接下来的`printf()` 和`scanf()` 放入`do..while()` 循环中。3. 在 `while ()` 条件中,检查 `while (c == `C`)`。<小时/>

修改后,问题似乎是

scanf("%c", &scale);

您需要在%c之前有一个空格,例如

scanf(" %c", &scale);

避免最后在C之后出现ENTER [\n]。

关于C 循环开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28188588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com