| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:小数问题,
只看楼主 加入收藏
lg1110
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
小数问题,
#include <stdio.h>
 void main()
 {
     int R1,R2,R3,U;
     double I;
     printf("请输入:R1,R2,R3,U.\n");
     scanf("%d,%d,%d,%d",&R1,&R2,&R3,&U);
     I=U/R1+U/R2+U/R3;
     printf("I=%f\n",I);
 }

         这个想输出小数精确的I怎么办啊?  新生求啊,

[ 本帖最后由 lg1110 于 2012-10-7 23:07 编辑 ]
搜索更多相关主题的帖子: double include void 
2012-10-07 12:56
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:5 
输入语句有误。
 scanf("%f\n",&r);去掉%f后面的换行符就好了
对scanf函数来说,格式串中的换行符等价于空格符,两者都会引发scanf函数提前进入到下一个非空白字符。
像楼主这样的格式串的话"%f\n",scanf函数将跳过空白字符,读取一个整数,然后跳到下一个非空白字符处,也就是说,当你输入一个字符,然后再输入一个字符空白字符,然后再输入一个字符,程序才会受理你先前输入的那个字符进行运算。
比如,你输入3,空格,再输入6,再按回车,这时,出现的结果是用3做半径运算的。

Edsger Dijkstra:算法+数据结构=程序
2012-10-07 13:39
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:0 
#include <stdio.h>
void main()
{
    float r;
    int h=5;
    double c,v,s;
    printf("请输入半径r:");
    scanf("%f ",&r);
    c=2*3.1415*r;
    printf("周长=%lf\n",c);
}
这样就好了.
2012-10-07 13:54
lovewei_55
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2012-10-6
收藏
得分:0 
学习了。一楼解释的很清晰
2012-10-07 13:54
lg1110
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-5
收藏
得分:0 
回复 2楼 雪狼MJ
额,  谢谢了, 嘿嘿,
2012-10-07 22:36
lg1110
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-5
收藏
得分:0 
回复 3楼 张朝成
   好的, 谢谢了,。
2012-10-07 22:37
Eumenides_me
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:151
注 册:2012-9-26
收藏
得分:0 
你不要直接修改原问题,好吧,这让后面来的人觉得楼上的都莫名其妙。重新发个帖不会shi吧?!
关于你现在的那个程序,起码一点,double的输出控制符是%lf,不是%f
2012-10-08 10:58
w823352417
Rank: 3Rank: 3
来 自:甘肃兰州
等 级:论坛游侠
威 望:1
帖 子:43
专家分:113
注 册:2012-10-4
收藏
得分:5 
#include <stdio.h>
void main()
{
     int R1,R2,R3,U;
     double I;
     printf("请输入:R1,R2,R3,U.\n");
     scanf("%d,%d,%d,%d",&R1,&R2,&R3,&U);//这里没有问题,取四个int型数字。不知道2楼的回答是什么意思,他说的没错,但似乎和本题无关啊
//不过在这里你要注意一点,由于你的输入是("%d,%d,%d,%d",%d后面有逗号,所以在输入的时候也要用逗号分隔如:1,2,3,4【回车】,以后写的时候可以直接不用写
//逗号直接就是scanf("%d%d%d%d",&R1,&R2,&R3,&U);
这样在输入的时候数字键用空格分开就可以了,方便如:1 2 3 4【回车】
     I=U/R1+U/R2+U/R3;//问题出现在这里,U/R1,U/R2,U/R3这几个数都是整数,对运算符‘/’而言就是整除,例如‘3/2=1’,舍去小数部分,
//在这里你要一个强制类型转化,更改为I=(double)U/R1+(double)U/R2+(double)U/R3;
     printf("I=%f\n",I);//在这里double型对应的是%lf没错,但是在VC++6.0里面%f也可以。
}
希望对你有所帮助。

在代码中享受乐趣
2012-10-08 11:23
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
热心是好事。讨论出真知

www.qunxingw.wang
2012-10-08 11:44
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
这什么情况?我记得我回帖的是个周长问题啊,怎么变小数问题了?难道我回错了?

Edsger Dijkstra:算法+数据结构=程序
2012-10-08 14:31
快速回复:小数问题,
数据加载中...
 
   



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

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