我写了一个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/

10-13 07:01