| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:请教问题:为什么在运行程序时,不能显示实数
只看楼主 加入收藏
电脑学徒
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-11-8
收藏
 问题点数:0 回复次数:8 
请教问题:为什么在运行程序时,不能显示实数
#include<stdio.h>
void main()
{
double m;
printf("please input a double number:\n");
scanf(%1f",&m);
m=m*100;
m=m+0.5;
(int)m;
m=m/100;
printf("the result is %g\n",m);
}
提问是:为什么在运行程序时,不能显示实数。请有经验的朋友告诉我,谢谢。(QQ344258813)
搜索更多相关主题的帖子: 实数 运行 
2007-11-12 18:02
jxj777
Rank: 1
等 级:新手上路
帖 子:91
专家分:0
注 册:2007-10-27
收藏
得分:0 

第一:scanf(%1f",&m);这个名句少个“,且应是lf,而不是1f
第二:(int)m;对m 取整并没有重新赋值给m,故m值没变,仍为浮点型,可改为m=(int)m;

[此贴子已经被作者于2007-11-12 18:30:26编辑过]


一个人的力量是缈小的....... 互帮互助才是出路
2007-11-12 18:14
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
收藏
得分:0 
#include<stdio.h>
void main()
{
double m;
printf("please input a double number:\n");
scanf(%1f",&m); //你这里写错了,正确的是 scanf("%lf",&m), 你少了一个左引号,还把l(L)写成了1(yi).
m=m*100;
m=m+0.5;
(int)m; //这句干什么?
m=m/100;
printf("the result is %g\n",m);
}

人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-12 18:21
lyl625760
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-10-6
收藏
得分:0 

#include<stdio.h>
void main()
{
double m;
printf("please input a double number:\n");
scanf(%1f",&m);%df
m=m*100;
m=m+0.5;
(int)m;
m=m/100;
printf("the result is %g\n",m);可能是以e++输出吧,请问你是指此吗?
}
2007-11-12 18:52
电脑学徒
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-11-8
收藏
得分:0 
谢谢大家了;
这是我课本上的一个上机操作实验。因我是才学C所以没看明白是什么意思才发出来给大家帮我看看的
题目是:
要明白不同数据类型之间是如何转换的,例如,编写一个程序输入一个DOUBLE类型的数,保留该小数点后两位,对第三位小数进行四舍五入运算
书后面的参考答案就是:#include<stdio.h>
void main()
{
double m;
printf("please input a double number:\n");
scanf("%lf",&m);
m=m*100;
m=m+0.5;
m=(int)m;
m=m/100;
printf("the result is %g\n",m);
}
我想请问大家的是:%lf做何解,%g做何解
还有为什么我在运行上面的程序后输入任意一个数,结果不是等于就是不显示实数。
在此先谢谢大家了。要是有才学C的朋友方便可加我的Q,让我们一起学习吧

爬呀爬滾呀滾小蝦總有一天變大蝦!愿能与你一起学习一起进步QQ344258813
2007-11-13 09:12
woshiming66
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-10-1
收藏
得分:0 
%lf我感觉也可以写成%f吧   %g是从e和f格式选一个宽度较小的
2007-11-13 09:23
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
收藏
得分:0 
%lf是double的格式字符,%f是float的格式字符
%g记不太清了,好像是取最短(从小数形式和指数形式中选最短的形式输出。)一般很少用的。
用%f就可以了。
你说不显示是什么意思,把 printf("the result is %g\n",m);里的%g改为%f试试应该没有问题了。

m=(int)(m*100+0.5)/100.0;

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2007-11-13 09:28
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
收藏
得分:0 
回5楼:

你是哪本书上看到这样的参考答案?
误人子弟啊
建议你不要再用这本书了

人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-14 10:03
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 
以下是引用qq95620412在2007-11-14 10:03:02的发言:
回5楼:

你是哪本书上看到这样的参考答案?
误人子弟啊
建议你不要再用这本书了


应该是四楼


准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2007-11-14 10:27
快速回复:请教问题:为什么在运行程序时,不能显示实数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017191 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved