2014-01-08 46 views
-2

我与C一起工作,我的任务是定义摄氏温度常数,并将程序转换为华氏温度。要做到这一点,我会乘以9,然后除以5,然后加上32.我迷路了。这是我的非工作代码:如何在C中将摄氏温度值转换为华氏度?

#include<stdio.h> 

#define C 23 
int F; 

int main() 
{ 
    F = (5/9)*(C - 32); 
    scanf("%d", &F) 
    printf(F); 
} 

任何帮助将不胜感激。我知道这段代码有很多错误,我今天开始学习C语言。我不在乎整个事情是否需要报废。

+0

阅读整数和浮点数之间的差异。 – JohnnyHK

+0

'5/9' result'0',使用'5.0/9'代替,并且你的代码甚至不会编译。阅读K&R,我记得它在第1章中有这方面的例子。 –

回答

0

表达式(5/9)执行整数除法并等于0。如果你真的想要华氏温度的整数值,那么尝试执行除法作为最后一步。一旦你的代码在某种程度上起作用,就用一些已知的值(包括冰点)对它进行测试,以确保数学是正确的。小心操作顺序和括号。

如果您想要子单位精度,可以使用浮点值,如5.0

0

我曾在C很久以前,但我可以看到的问题是为F申报的int类型尝试更改它浮动然后检查结果。由于int(5/9)会给出一个零,结果将始终为零。

0

在编写代码之前,您是否阅读过任何基本的C书籍?你有很多非常基本的问题,你的短节目

  1. 为什么你要从输入,而你从C.你计算F和然后在scanf读一遍转换读女,所以以前的结果是被覆盖
  2. 为什么当你想要C结果时打印F
  3. printf函数是错误的。它的格式是printf(<format_string>, <values_to_print>)
  4. 整数除法结果为一个整数。 5和9都是整数,所以结果也是int。您至少需要一面是浮动/双面。 5.0/9,5/9.0,5./9,double(5)/ 9 ...或任何类似的工作
+0

你不需要使用float/double,并且可以首先进行乘法 - 例如'F =(5 *(C-32))/ 9;'。当然,整数版本会给出最不精确的结果,其次是浮动,然后是double;如果你想要100%准确的结果,你需要使用某种“大数”库。我认为精确度并不重要,但(初始值可能非常不准确),并且该整数可能足够准确。另外还有第三种选择 - 固定点(例如使用存储“千分之一度”的整数) – Brendan

0

你应该阅读更多的基本c书。你的代码甚至不能编译。 我修复了你的代码,你的意思是?

#include<stdio.h> 

int main() 
{ 
    float F; 
    int C; 
    scanf("%d", &C); 
    F = C*9.0/5 + 32; 
    printf("%.3f\n",F); 
} 
相关问题