有关温度转换中double类型的疑问

sunyuqian 2009-12-02 03:30:47
大家好,在c primer plus这本书的一道练习题中碰到了一个问题,用/* */标出,请高手解答

#include <stdio.h>
int main(void)
{
void temperatures(double Fahrenheit);
double fahrenheit; //华氏温度
printf("请输入温度:\n");
scanf("%f",&fahrenheit); /*疑问1*/
//printf("%.2f\n",fahrenheit);
temperatures(fahrenheit);
return 0;
}

void temperatures(double fahrenheit) /*疑问2*/
{
double celsius,kelvin;
//printf("%.2f\n",fahrenheit);
celsius = 1.8 * fahrenheit + 32.0; //华氏转摄氏
kelvin = celsius + 273.16; //华氏转绝对
printf("%.2f,%.2f\n",celsius,kelvin);
}


疑问1:这道题让用double类型输入,但是如果在scanf里用%f接收,输入5,得到的值是负的,我把%f换成%lf,得到的结果是正确的,这是为什么呢?double类型不是用%f表示吗?

疑问2:我把函数类型设为void合适吗?如果设成double,在函数里得计算2个值,返回的时候只能返回1个,只能写成return 0;到底哪个合适呢?
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyuqian 2009-12-03
  • 打赏
  • 举报
回复
谢谢了
hai040 2009-12-02
  • 打赏
  • 举报
回复
*(float*)(&fahrenheit)=5.0
sunyuqian 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hai040 的回复:]
1。%f只取double8字节中的4个
2。写成两个函数
[/Quote]

如果要表示double类型,是必须用%lf吗?我输入5,应该没有超出范围啊,怎么会是一堆负值呢
hai040 2009-12-02
  • 打赏
  • 举报
回复
1。%f只取double8字节中的4个
2。写成两个函数

'============================='
' 单位换算控件WeiQi.Control '
'作者:ChuYa.Studio::fanyugod '
' QQ:11330934 '
' Email::fanyugod@163.com '
' VB.NET '
'============================='
此控件是用于单位换算的控件
控件内置了常用的单位,可以扩展和删除


1 属性
1.1 只读属性
1.1.1 AuthorDeclare
   类型:String    
   说明:返回作者申明和版本信息
1.2 设置属性
1.2.1 TheMainAddress
   类型:String
   说明:设置默认单位文件位置,如果该位置没有文件或者文件错误,控件将在启动时自动加载代码的单位
1.2.2 AutoClip
   类型:Boolean
   说明:是否在单位成功换算后将结果保存入剪贴板(此参数不影响通过函数接口转换单位,函数接口永不会将结果放入剪贴板)
2 接口
2.1 ShowMeControl
类型:无
说明:启动单位设置窗口
2.2 TranUnit(ByVal SourceNumber As Double, ByVal SourceUnit As String, ByVal AimUnit As String, ByRef AimNumber As Double, ByRef ErrMessage As String)
类型: Boolean
说明:将Sourcenumber数字,其单位为(SourceUnit),转换成AimUnit单位,结果放入AimNumber,如果出现错误,则ErrMessage文说明

3 单位约定
3.1 单位分类
单位分为两类(基本单位和组合单位)
基本单位:
基本单位分为都种类,可以转换的在一类,并设置基准单位,其他该种类单位必须设置与基准单位的转换比例,基本单位可以任意字符,
但不能包括 乘法、除法、乘方字符(这三个字符可以自由设置!)
组合单位:
组合单位有基本单位组合或特殊单位(非基本单位组合),也分门别类,能转换的放到一类!组合单位有两种表示:内部表示和外部表示
内部表示是基本单位的组合,外部表示是单位的外部简写(注意:外部简写不能包含乘法、除法、乘方字符(这三个字符可以自由设置!))
每种组合单位设置一个基准单位,其他该类单位必须设置与基准单位的转换比例!
3.1.1 温度单位的特殊规定:
应为温度单位的特殊性,这个基本单位是特别处理的,请不要删除控件内部基本单位的温度单位!
3.2 单位组成
单位必须是String,由乘法符号、除法符号、乘方符号分隔各个不同的单位(只能是一个字符)。
除法符号在同一单位只能出现一次,并且符号两边必须有字符(可以用1简化)。
乘法符号用于连接各个子单位,每个子单位可以跟一个乘方符号和一个数值,如果出现乘方符号必须后跟数值
注意:最简单位(基本单位和组合单位的外符号)不能出现以上三个字符!

4 如果还有疑问请告诉我!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧