一个简单的数学函数应用问题

勇敢的搬砖人 2008-10-31 10:16:09
这是一个已知三角形三边利用余弦定理求三角度数的函数,经调试不能运行,望大虾支招!!

#include<stdio.h>
#include<math.h>
void CalcAngle(void)
{
float a,b,c,A,B,C;
printf(" 请输入三角形三条边之长");
printf("a="); scanf("%f",&a);
printf("b="); scanf("%f",&b);
printf("c="); scanf("%f",&c);

A=acos((b*b+c*c-a*a)/(2b*c));
B=acos((a*a+c*c-b*b)/(2a*c));
C=acos((a*a+b*b-c*c)/(2a*b));

printf("A=%f°",A);
printf("B=%f°",B);
printf("C=%f°",C);
}
main()
{
CalcAngle();

}
...全文
151 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
brookmill 2008-10-31
  • 打赏
  • 举报
回复
不判断三边长度说不定也行,因为acos函数的参数要求在-1和1之间,否则会出错。
具体出什么错,是返回什么值,还是直接挂掉,LZ自己查手册吧
养成好的编程习惯,写代码的时候想着可读性、可维护性、健壮性、可移植性,很有用的
勇敢的搬砖人 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 brookmill 的回复:]
1. (2b*c)); --> 2*b*c
2. 最后3个printf里有乱码
3. 要记住,做除法之前一定要判断除数是不是0
4. acos的结果是弧度,如果要求角度还要自己换算
5. 如果要求再严格一点,计算之前要先判断输入的三边长度是否合理,比如输入1、2、10,根本就不能构成三角形。
[/Quote]

brookmill 的劝告很专业很全面,让我了解这么多细节问题比只把这个问题纠正了要更有价值!谢谢了
brookmill 2008-10-31
  • 打赏
  • 举报
回复
1. (2b*c)); --> 2*b*c
2. 最后3个printf里有乱码
3. 要记住,做除法之前一定要判断除数是不是0
4. acos的结果是弧度,如果要求角度还要自己换算
5. 如果要求再严格一点,计算之前要先判断输入的三边长度是否合理,比如输入1、2、10,根本就不能构成三角形。
jackzhhuang 2008-10-31
  • 打赏
  • 举报
回复
#include <stdio.h> 
#include <math.h>
void CalcAngle(void)
{
float a = 0,b = 0,c = 0,A = 0,B = 0,C = 0;

printf(" 请输入三角形三条边之长");

printf("a=");
scanf("%f",&a);

printf("b=");
scanf("%f",&b);

printf("c=");
scanf("%f",&c);

A=acos((b*b+c*c-a*a)/(2*b*c));
B=acos((a*a+c*c-b*b)/(2*a*c));
C=acos((a*a+b*b-c*c)/(2*a*b));

printf("A=%f°",A);
printf("B=%f°",B);
printf("C=%f°",C);
}
int main()
{
CalcAngle();

}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧