| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 542 人关注过本帖
标题:请大家帮忙找找错
只看楼主 加入收藏
gwygw12
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-1-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
请大家帮忙找找错
看谭浩强的书,编三角形面积公式,我想自己编编看,结果这程序能运行出来,就是不是自己想要的结果,也看不出哪里错了,大家帮帮忙,帮我看一眼。
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,s,area;
printf("输入abc的数值,逗号隔开");
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>=c)
printf("输入的数值有误"); else if(b+c>=a)
printf("输入的数值有误"); else if(a+c>=b)
printf("输入的数值有误");
else
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%20f\nb=%20f\nc=%20f\n",a,b,c);
printf("area=%20f\n",area);
} }


搜索更多相关主题的帖子: include double 三角形 
2012-01-19 16:39
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:3 
scanf("%lf,%lf,%lf",&a,&b,&c);

总有那身价贱的人给作业贴回复完整的代码
2012-01-19 16:42
gwygw12
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-1-19
收藏
得分:0 
回复 2楼 embed_xuel
不是这个事。。而是不管输入什么数值,结果都一样。。。
2012-01-19 16:45
zwqzwq
Rank: 2
等 级:论坛游民
帖 子:4
专家分:22
注 册:2012-1-19
收藏
得分:7 
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,s,area;
printf("输入abc的数值,逗号隔开");
scanf("%lf,%lf,%lf",&a,&b,&c);  //这里%lf
if(a+b<=c||b+c<=a||a+c<=b)  //你是想用三边关系判断能否构成三角形是吗 应该是三角形任意两边之和大于第三边 这里输入错误应该是<=
printf("输入的数值有误");
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%20f\nb=%20f\nc=%20f\n",a,b,c);//这里%20f是干什么。 要输出数据宽度为20?
printf("area=%20lf\n",area); 这里应该是%20lf
 }
输入 3,4,5  输出6.00000

2012-01-19 17:03
萧晴
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2012-1-19
收藏
得分:3 
"/"号的运算结果取整数部分,不应该是"s=1.0*(a+b+c)/2;"吗?
2012-01-19 18:42
旭日孤帆
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:180
注 册:2012-1-3
收藏
得分:7 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,s,area;
printf("输入abc的数值,逗号隔开");
scanf("%f,%f,%f",&a,&b,&c);--------------------------------------双精度输入时要用%   L    F      (为了看得清楚我用的是大写)
if(a+b>=c)
printf("输入的数值有误"); else if(b+c>=a) ----------------------你这里的三个if语句有逻辑错误,两个边相加肯定大于第三个边
printf("输入的数值有误"); else if(a+c>=b)
printf("输入的数值有误");
else
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%20f\nb=%20f\nc=%20f\n",a,b,c);
printf("area=%20f\n",area);
} }
注意:printf("输入abc的数值,逗号隔开"); scanf("%f,%f,%f",&a,&b,&c);
里面的逗号你是在英文输入法的状态下输入的,所以运行的时候也要在英文输入法的状态下

[ 本帖最后由 旭日孤帆 于 2012-1-19 19:33 编辑 ]
2012-01-19 19:22
gwygw12
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-1-19
收藏
得分:0 
回复 4楼 zwqzwq
谢谢你,不过我想知道为什么用%1f和%201f啊?
2012-01-19 21:30
gwygw12
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-1-19
收藏
得分:0 
回复 6楼 旭日孤帆
谢谢指点,那个双精度用的是%lf?那个逻辑错误确实是马虎了~
2012-01-19 21:32
快速回复:请大家帮忙找找错
数据加载中...
 
   



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

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