鱼C论坛

 找回密码
 立即注册
查看: 4818|回复: 14

华氏度和温度互转, 类型应该没有问题, 为什么返回的是0.0000000?

[复制链接]
发表于 2012-6-30 12:07:26 | 显示全部楼层 |阅读模式
1鱼币
  1. /**
复制代码
PS : 由于本人是PHP程序员,  在学PHP之前没有任何C背景, 为了提高程序思想, 所以本人学习C语言. 我很头疼C的类型问题. 我看了程序代码, 也看不出哪里有问题. 求帮助. 顺便说句, 代码风格是从PHP照搬的. 看不惯请不要#$%^&*


最佳答案

查看完整内容

你确定 有问题? 我这边没有你所说的问题 你再试一次吧 或者检查下你运行的环境
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-30 12:07:27 | 显示全部楼层
你确定 有问题?  我这边没有你所说的问题  你再试一次吧 或者检查下你运行的环境
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-30 12:08:17 | 显示全部楼层
代码不见了??  
我新补上:
  1. /**
  2. * 一个函数版华氏度和摄氏度互转的小程序
  3. * @author 谁瞅谁怀孕
  4. * @date 2012-06-30
  5. */
  6. #include <stdio.h>

  7. double fahrToCels(double fahr);
  8. double celsToFahr(double cels);

  9. int main(void)
  10. {
  11.     double fahr, cels;
  12.    
  13.     printf("请输入华氏度:");
  14.     scanf("%lf", &fahr);
  15.     printf("%lf华氏度等于%lf摄氏度\n", fahr, fahrToCels(fahr));
  16.    
  17.     printf("请输入摄氏度:");
  18.     scanf("%lf", &cels);
  19.     printf("%lf摄氏度等于%lf华氏度\n", cels, celsToFahr(cels));
  20.    
  21.     return 0;
  22. }

  23. /**
  24. * 华氏度转摄氏度
  25. * @author 谁瞅谁怀孕
  26. * @date 2012-06-30
  27. */
  28. double fahrToCels(double fahr)
  29. {
  30.     double cels;
  31.    
  32.     cels = (fahr-32.0) / 18.0;
  33.    
  34.     return cels;
  35. }

  36. /**
  37. * 摄氏度转华氏度
  38. * @author 谁瞅谁怀孕
  39. * @date 2012-06-30
  40. */
  41. double celsToFahr(double cels)
  42. {
  43.     double fahr;
  44.    
  45.     fahr = 32.0 + (cels * 1.8);
  46.    
  47.     return fahr;
  48. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 12:36:40 | 显示全部楼层
    printf("f2c:");
    scanf("%lf", &fahr);
    printf("%.2lf fahr = %.2lf cels\n",fahr, fahrToCels(fahr));/*.2控制小数点后面只显示 2 位小数*/
   
    printf("c2f:");
    scanf("%lf", &cels);
    printf("%.2lf cles =  %.2lf fahr\n", cels, celsToFahr(cels));
//输出结果
f2c:10
10.00 fahr = -1.22 cels
c2f:3
3.00 cles =  37.40 fahr
Press any key to continue
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-30 12:40:42 | 显示全部楼层
我用的是GCC. notepad++ + GCC开发环境
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-30 12:41:44 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 12:52:38 | 显示全部楼层
本帖最后由 wangyexin 于 2012-6-30 12:56 编辑

目测你公式不对,都不能相互转化
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-30 12:59:05 | 显示全部楼层
我解决了. 只是很奇怪minGW不行(它不是windows的gcc吗?)  但在linux的gcc却可以.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 14:27:04 | 显示全部楼层
谁瞅谁怀孕 发表于 2012-6-30 12:59
我解决了. 只是很奇怪minGW不行(它不是windows的gcc吗?)  但在linux的gcc却可以.

貌似你两公式不能互逆
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-30 14:43:19 | 显示全部楼层
wangyexin 发表于 2012-6-30 14:27
貌似你两公式不能互逆

公式是没有错的.  刚又有突破了. 我升级了MinGW. 这下子可以了.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 14:52:44 | 显示全部楼层
在VC++6.0上没任何问题啊 运行也正常啊:o
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 17:40:01 | 显示全部楼层
谁瞅谁怀孕 发表于 2012-6-30 14:43
公式是没有错的.  刚又有突破了. 我升级了MinGW. 这下子可以了.

请输入华氏度:10
10.000000华氏度等于-1.222222摄氏度
请输入摄氏度:-1.222222
-1.222222摄氏度等于29.800000华氏度
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-30 17:51:49 | 显示全部楼层
wangyexin 发表于 2012-6-30 17:40
请输入华氏度:10
10.000000华氏度等于-1.222222摄氏度
请输入摄氏度:-1.222222

哎 还真是.  百度骗了我.  改正后的fahrToCels()函数代码如下
  1. /**
  2. * 华氏度转摄氏度
  3. * @author 谁瞅谁怀孕
  4. * @date 2012-06-30
  5. */
  6. double fahrToCels(double fahr)
  7. {
  8.     double cels;
  9.    
  10.     cels = (5.0/9.0) * (fahr-32.0);
  11.    
  12.     return cels;
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-1 00:43:14 | 显示全部楼层
兄弟 , 要细心啊 , 看看运行结果就能知道大概是什么错了,第35行  应该是 除以1.8  你写成18了。:L
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-1 18:25:52 | 显示全部楼层
炫动少年 发表于 2012-7-1 00:43
兄弟 , 要细心啊 , 看看运行结果就能知道大概是什么错了,第35行  应该是 除以1.8  你写成18了。

恩 受教了, 谢谢.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 23:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表