蚌埠有哪些知名企业:C语言的一个问题,会的答,重谢。

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 20:54:05
这个程序是求三角形的三边长和面积,
#include<stdio.h>
#include<math.h>
void main()
{ float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}

运行时输 3 4 6
结果a=3.00 , b= 0.00 , c=-NAN ,s=-NAN ,area=0.00
正确记过不应是这样的,请问,错在那?

其实上面都已回答了本程序的错误了,我想问一下楼主,如果输入的不是三角形,你是不是应该判断一下你输入的数是不是能够成三角形所以还应加上if(a+b>c&&a+c>b&&b+c>a)
参考程序:
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c;
double s,t;
printf("please input the three data:");
scanf("%f,%f,%f",&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a)
{
t=(1.0/2.0)*(a+b+c);
s=sqrt(t*(t-a)*(t-b)*(t-c));//海伦公式
printf("the trigon's is made by %.2f,%.2f,%.2f\n",a,b,c);
printf("the area is %.2f",s);
printf("\n");

}
else
printf("the three data can't make a trigon\n");

}
值得注意的是:1/2时编译器按整形数来除;这里要用浮点数的除法。

你的输入数据有问题,就是从键盘读取数据有问题,
sanf("%f,%f,%f",&a,&b,&c);
你这样写,就应该输入3.0 ,5.0 ,6.0
如果你把代码写成sanf("%f%f%f",&a,&b,&c);
那就应该输入 3.0 回车
5.0 回车
6.0 回车
发生错误的关键是你写的读取键盘的结束符和你在输入数据的时候的结束符不对导致的
程序本身是没有问题的! 。。。

最起码的scanf("%f,%f,%f",&a,&b,&c);
改成scanf("%f%f%f",&a,&b,&c);
area数据类型没有定义好
我将在测试一下
强个位子,先
;)

你的输入数据有问题,就是从键盘读取数据有问题,
sanf("%f,%f,%f",&a,&b,&c);
你这样写,就应该输入3.0 ,5.0 ,6.0
如果你把代码写成sanf("%f%f%f",&a,&b,&c);
那就应该输入 3.0 回车
5.0 回车
6.0 回车
发生错误的关键是你写的读取键盘的结束符和你在输入数据的时候的结束符不对导致的
程序本身是没有问题的!

你输入时应根据具体的输入控制格式输入,3,4,6输入,还有一种输入格式sanf("%f%f%f",&a,&b,&c); ,这个就要对应3回车4回车6回车输入,运行结果是一样的~~~~~```
我建议你应该在编程时候注意细节问题~~~~~
细节决定一切~~~~~~
你的程序写的不规范,应该有缩进的,这样查找错误比较方便!!!
要养成良好的编写风格!

错在s=1.0/2*(a+b+c);
此处你把(a+b+c)放在分母里了,而这部分应该是分子的,正确的是
s= (a+b+c) / 2;