我写了一个C程序,将华氏温度转换为摄氏温度。它具有三个函数,input_temp(),input_unit()和calculate()。想法很简单。 input_temp()要求用户输入temperature的值。 input_unit()要求用户输入单位,即F代表华氏度,C代表celcius。 Calculate()根据单位将温度转换(摄氏温度转换为华氏度或华氏温度转换为摄氏温度)。我使用Code :: Blocks作为我的IDE,但是每当我尝试运行该程序时,Code :: Blocks都会在询问数字温度单位后停止工作。当我尝试在ideone.com中运行相同的代码时,显示运行时错误。这是代码:
#include <stdio.h>
#include <stdlib.h>
calculate(float T , char U[]);
int main()
{
float temp ;
char unit[5] ;
float ans ;
temp = input_temp() ;
strcpy(unit, input_unit()) ;
ans = calculate(temp , unit) ;
printf("Converted temperature is %f ." , ans);
return 0;
}
int input_temp()
{
float x ;
printf("Enter the temperature : ") ;
scanf("%f" , &x ) ;
return x ;
}
input_unit()
{
char Unit[5] ;
printf("Enter the unit (C or F) : ") ;
scanf("%s" , Unit) ;
return Unit ;
}
calculate(float T , char U[])
{
float convert ;
if (strcmp(U , 'F') == 0)
{
convert = (T-32)*5/9 ;
}
else // if(strcmp(U , 'C') == 0)
{
convert = (T*9/5)+32 ;
}
return convert ;
}
我相信我在Calculate()函数中犯了一些错误(但我不确定)。请帮我弄清楚。以及如何确定运行时错误?
最佳答案
strcmp(U , 'F')
是错的。你需要
strcmp(U , "F")
strcmp
采用char数组而不是char。 'F'成为char'F'的整数值-例如在ASCII中为70。因此strcmp
寻找一个从地址70开始的char数组。关于c - C中的温度转换器程序不起作用。执行一些代码后停止(运行时错误),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27331513/