| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1621 人关注过本帖
标题:[求助]程序哪编错了,请行家指点
只看楼主 加入收藏
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
 问题点数:0 回复次数:24 
[求助]程序哪编错了,请行家指点

#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,m;
scanf("%d%d%d",&i,&j,&k);
m=(i+j+k)/2;
printf("%d\n",sqrt(m*(m-i)*(m-k)*(m-j)));
}

语法是对的,可我输入三个数的时候,输出是0,怎么回事?`

搜索更多相关主题的帖子: 行家 
2006-11-22 21:36
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用frog555在2006-11-22 21:36:29的发言:

#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,m;
scanf("%d%d%d",&i,&j,&k);
m=(i+j+k)/2;
printf("%d\n",sqrt(m*(m-i)*(m-k)*(m-j)));
}

语法是对的,可我输入三个数的时候,输出是0,怎么回事?`

要保证输入的三个数符合三角行三边关系.还有m不能是整型.假如m取整后和三边中有一相等,那就是0


倚天照海花无数,流水高山心自知。
2006-11-22 21:39
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
得分:0 

我输6,8,10都符合你的要求可输出是0

2006-11-22 21:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

还有一个 输出格式不是%d,而是%lf.


倚天照海花无数,流水高山心自知。
2006-11-22 21:52
自由呼吸
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-11-11
收藏
得分:0 
看了你的问题我想到一个问题,那个输入是怎么回事?
你是怎么在键盘上输入的?
6空格8空格10空格回车?
我的问题就是直接输入6810回车,结果怎么样?这几个数字怎么样落在i,j,k里?
谭浩强那本烂书我前段看了下,关于SCANF我就总结了一句话,键盘输入和格式串对等+回车,我知道会有些例外,不过他罗嗦的说了那么多,谁记的住,我还没编过程序,别笑我问的简单啊.
2006-11-22 22:00
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
要区别一个数,不就是用空格隔开吗.
直接6810,会认为是一个数.

倚天照海花无数,流水高山心自知。
2006-11-22 22:13
hzlqzh2006
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-11-22
收藏
得分:0 
#include <stdio.h>
#include <math.h>

int main()
{
int i,j,k;
float m; /*要得出精确的结果就要用到 float 型*/

scanf("%d,%d,%d",&i,&j,&k); /*我觉的最好%d和%d之间还是用一下逗号比较好*/
m=(i+j+k)/2.0; /*因为i,j,k都是整型的,如果写成2的话,得出的结果小数部分会被舍去,所以用2.0*/
printf("%f\n",sqrt(m*(m-i)*(m-k)*(m-j))); /*得出的结果是float型的,所以用 %f */
getch();
return 0;
}

2006-11-22 22:22
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 
最好每个数字都用浮点型的,因为(i+j+k)/2是取的整,小数部分有可能略掉了。再者注意三个数字关系,否则出现sqrt下的数小于0。

只是喜欢编程而已!
2006-11-22 22:23
自由呼吸
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-11-11
收藏
得分:0 
要区别一个数,不就是用空格隔开吗.
直接6810,会认为是一个数.
谢谢
没错
程序继续等待输入了?
2006-11-22 22:34
财鸟
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-11-2
收藏
得分:0 
你的程序没有语法错误!!!!!!!!!!!!!
可以正常运行!!!!!!!!!
2006-11-23 12:50
快速回复:[求助]程序哪编错了,请行家指点
数据加载中...
 
   



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

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