gpt4 book ai didi

c - 在华氏、摄氏和开尔文之间转换的程序

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:26 26 4
gpt4 key购买 nike

我正在寻找有关 C 程序的帮助。我们的教授向我们展示了一个示例,我们将输入摄氏度或华氏度的温度并将其转换为其他温度。我发现它很有趣,并尝试更进一步,添加开尔文。

#include <stdio.h>
int main(void)
{
#define MAXCOUNT 4
float tempConvert(float, char);

int count;
char my_char;
float convert_temp, temp;
for(count = 1; count <= MAXCOUNT; count++)
{
printf("\nEnter a temperature: ");
scanf("%f %c", &temp, &my_char);
convert_temp = tempConvert(temp, my_char);
if (my_char == 'c')
printf("The Fahrenheit equivalent is %5.2f degrees\n"
"The Kelvin equivalent is %5.2f degrees\n",
convert_temp,convert_temp);
else if (my_char == 'f')
printf("The Celsius equivalent is %5.2f degrees\n"
"The Kelvin equivalent is %5.2f degrees\n",
convert_temp,convert_temp);
else if (my_char == 'k')
printf("The The Celsius equivalent is %5.2f degrees\n"
"The Fahrenheit equivalent is %5.2f degrees\n",
convert_temp,convert_temp);
}
return 0;
}

float tempConvert(float inTemp, char ch)
{
float c_temp1, c_temp2;
if (ch == 'c'){
return c_temp1 = ( (5.0/9.0) * (inTemp - 32.0) );
return c_temp2 = ( inTemp + 273.15 );}
else if (ch == 'f'){
return c_temp1 = ( ((9.0/5.0) * inTemp ) + 32.0 );
return c_temp2 = ( (5.0/9.0) * (inTemp + 459.67 ) );}
else if (ch == 'k'){
return c_temp1 = ( inTemp - 273.15 );
return c_temp2 = ( ((9.0/5.0) * inTemp ) - 459.67 );}
}

该程序正在终端中运行,但问题是我只得到第一次温度转换的答案,而不是第二次的答案(第二次与第一次相同)。我的问题是为什么第二个答案没有被识别,我该如何解决?

最佳答案

您在一个分支中返回不止一次。因此,只有第一个 return 语句被执行。

您不能从一个函数中返回几个整数。但是您可以分配一个输出参数数组。我会这样做(为什么不用 switch/case 语句?):

void tempConvert(float inTemp, char ch, float results[2])
{
switch(ch)
{
case 'c':
results[0] = ( (5.0/9.0) * (inTemp - 32.0) );
results[1] = ( inTemp + 273.15 );
break;
case 'f':
results[0] = ( ((9.0/5.0) * inTemp ) + 32.0 );
results[1] = ( (5.0/9.0) * (inTemp + 459.67 ) );
break;
case 'k':
results[0] = ( inTemp - 273.15 );
results[1] = ( ((9.0/5.0) * inTemp ) - 459.67 );
break;
default:
results[0] = results[1] = 0; // kind of error code
}
}

这样调用它:

float convert_temp[2]
tempConvert(temp, my_char, convert_temp);

if (my_char == 'c')
printf("The Fahrenheit equivalent is %5.2f degrees\n"
"The Kelvin equivalent is %5.2f degrees\n",
convert_temp[0],convert_temp[1]);

关于c - 在华氏、摄氏和开尔文之间转换的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49062399/

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