C语言的一道题 我不知道错哪了 要怎么改。 跪请大神指点,别把百度上的其他答案给我,我都看过了

编写程序,由键盘任意输入3个实型数据,代表三角形的3条边,判断它们能否组成三角形,如果可以组成三角形,判它是等腰三角形、等边三角形、直角三角形或一般三角形中的哪一种
#include<stdio.h>

void main(void)
{
double a,b,c;
printf("请输入三边");
scanf("%lf,%lf,%lf\n",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b&&b==c)
printf("等边三角形");
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{
if(a==b&&b!=c||a==c&&c!=b||b==c&&c!=a)
printf("等腰直角三角形");
else
printf("一般直角三角形");
}
else if(a==b&&b!=c||a==c&&c!=b||b==c&&c!=a)
printf("等边三角形");
else
printf("一般三角形");
}
else
printf("不能组成三角形");
}

#include<stdio.h>

void main(void)
{
double a,b,c;
printf("请输入三边");
scanf("%lf,%lf,%lf",&a,&b,&c);//去掉\n,你设置了输入格式,所以正确的输入格式是:以逗号隔开输入的数据
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b&&b==c)
printf("等边三角形");
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{
if(a==b&&b!=c||a==c&&c!=b||b==c&&c!=a)
printf("等腰直角三角形");
else
printf("一般直角三角形");
}
else if(a==b&&b!=c||a==c&&c!=b||b==c&&c!=a)
printf("等腰三角形");//这里是等腰三角形
else
printf("一般三角形");
}
else
printf("不能组成三角形");
}

追问

谢谢大神,万分感谢,我想再问一下你帮我修改说 去掉\n 这个是为什么啊?我不明白能解释一下吗 我试过了 有\n确实不对,但我不知道原因

追答

对于scanf,"%lf%lf%lf\n"里面的\n并不是指换行,就是指字符\n

你这样输入就行了

建议,不要在scanf里使用非控制字符

温馨提示:答案为网友推荐,仅供参考
相似回答