读书人

亲们帮忙见见哪错了

发布时间: 2012-12-19 14:13:14 作者: rapoo

亲们,帮忙看看哪错了。
题目:
输入三个数据,如果这三个数据能够构成三角形,则计算并输出三个三角形的面积。
提示:
1)构成三角形的条件是:任意两边之和大于第三边。
2)计算三角形面积的公式是s=sqrt(x(x-a)(x-b)(x-c)),x=(1/2)*(a+b+c)

#include<stdio.h>
#include<math.h>
void main()
{ int a,b,c,s,x;
print("请输入三个正数:");
scantf("%d%d%d",a,b,c);
if(a+b>c)
if(a+c>b)
if(b+c>a)
printf("能构成三角形");
else
printf("不能构成三角形");
}
[最优解释]
你做错的原因归根到底就是你的代码风格导致的。 if else 没有配对使用。
你可以把所有的else 语句和 {} 花括号添上,问题就很清楚了。
你的else 不是和最外层配对的,而是和最里层配对的。。。


if(a+b>c)
if(a+c>b)
if(b+c>a)
printf("能构成三角形");

else /* 这个的条件其实是 b+c<a 的。*/
printf("不能构成三角形");

[其他解释]

#include <stdio.h>

int main(void)
{
int a, b, c;

printf("请输入三个正数:");
scanf("%d%d%d", &a, &b, &c);
if(a + b > c && a + c > b && b + c > a)
printf("能构成三角形");
else
printf("不能构成三角形");

return 0;
}

[其他解释]
#include<stdio.h>
#include<math.h>
void main()
{ int a,b,c,s,x;
print("请输入三个正数:");
scantf("%d%d%d",a,b,c);
if(a+b>c)
{
if(a+c>b)
if(b+c>a)
printf("能构成三角形");
}
else
{
printf("不能构成三角形");
}
}

这样也就没问题啦,else 会选择在他最近的那个if作匹配的。
[其他解释]
scantf
scanf
    if(a+b>c)
if(a+c>b)
if(b+c>a)

    if(a+b>c && a+c>b && b+c>a)

[其他解释]
scanf("%d%d%d",&a,&b,&c);
[其他解释]
scanf("%d%d%d",&a,&b,&c); 犀利的解答
[其他解释]
你可以改成这样


if( a+b>c && a+c>b && b+c>a )
{
//是三角形


}
else
{
//不是三角形
}


[其他解释]
回答都很犀利啊
[其他解释]
楼主最好把所有if和else下面都加上{},C语言毕竟不是Python。
[其他解释]
将scanf语句改为scanf("%d%d%d",&a,&b,&c)
然后将第一个if下面的两个if语句用大括号合并起来,else会与最近的if语句配合,所以只有当b+c>a不成立时才会触发else语句
[其他解释]
新手建议if/else语句大括号都加上,一个也别省。3个if,1个else。不要出现这种if/else不配对的情况。
[其他解释]
建议语句更规范点,其实如果少用if判断语句的话,针对这个题目,可以一个if解决

if ((a+b>c)&&(a+c>b)&&(b+c)>a))
{
printf("能构成三角形!");
}
else
printf("不能成为三角形!");

[其他解释]
引用:
scantf
scanf
C/C++ code123 if(a+b>c) if(a+c>b) if(b+c>a)
C/C++ code1 if(a+b>c && a+c>b && b+c>a)


++
[其他解释]
scanf()括号是需要地址符
[其他解释]
LZ错别字真多
[其他解释]
http://bbs.csdn.net/topics/390253899
[其他解释]
[quote=引用:]
你做错的原因归根到底就是你的代码风格导致的。 if else 没有配对使用。
你可以把所有的else 语句和 {} 花括号添上,问题就很清楚了。
你的else 不是和最外层配对的,而是和最里层配对的。。。C/C++ code12345678 if(a+b>c) if(a+c>b) if(b+c>a) printf("能……[/q说得好
[其他解释]
LS都说了,学习一下。
[其他解释]
天啊 真是 谢谢大家了 我真的好不细心啊
我还是不太懂 IF语句的使用 最近在看 有点晕 不知道什么跟什么 好乱
[其他解释]
关于自己是否适合编程的很简单的测试:
在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案:

A里面有10处以上文字或标点错误
B里面没有文字或标点错误并敢为此跟人打赌
C里面没有文字或标点错误并且字体和排版完全与原稿一致
D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感

A不适合编程(理由:打字准确度偏低、粗心大意)
B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念)
C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证)
D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!)

如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

[其他解释]
代码如下:

#include<stdio.h>
#include<math.h>
void main()
{
//考虑到有小数的情况
double a,b,c,s=0.0,x=0.0;
printf("请输入三个正数:\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)


{
printf("能构成三角形\n");
x=(a+b+c)/2;
s=sqrt(x*(x-a)*(x-b)*(x-c)); //sqrt() 求根函数
printf("三角形的面积是: %lf \n",s);
}
else
printf("不能构成三角形");
}
[其他解释]
scanf("%d%d%d",&a,&b,&c);
[其他解释]
#include<stdio.h>
#include<math.h>
void main()
{ int a,b,c,s,x;
print("请输入三个正数:");
scantf("%d%d%d",&a,&b,&c);
if(a+b>c)

if(a+c>b)
if(b+c>a)
printf("能构成三角形");
}
else
printf("不能构成三角形");
}
[其他解释]
1.scanf 输入整型变量 需要加取地址符
2.else与距离它最近的if 匹配, 要加大括号的

读书人网 >C++

热点推荐