作业帮 > 综合 > 作业

关于C语言程序 三角形知顶点求内角

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/09 01:44:28
关于C语言程序 三角形知顶点求内角
编写一个C程序,输入三角形顶点坐标(直角坐标系),算出三角形各个内角,要求,输入坐标,先判断是否为三角形,然后输出结果~
(我自己编了一下,总是死循环,折腾了几天,..)
额.有新要求...要用建立坐标系...输入点用坐标表示...还有角度要用atan()算,我偷个懒,那位大侠发个码上来哈~
把你的代码贴上来吧,我看看能不能给你改一下!
基本思路是使用余弦定理
cos B = (a^2 + c^2 -b^2) / (2*a*c);
首先可以算出三条边的长度,如果有两个之和等于第三个,那么就是三点共线,不是三角形.其他情况就是三角形了,调用余弦定理一个一个算就行了.
下面是代码
#include
#include
#define PI 3.14159265354
void main(void)
{
double a[3][2]; /*用来保存三个点的横纵坐标*/
double len[3],b[3],c[2];
int i ,n;
for(i = 0 ; i< 3; i++)
scanf("%lf %lf",&a[i][0],&a[i][1]);
len[0] = sqrt( pow(a[0][0]-a[1][0],2)+pow(a[0][1]-a[1][1],2) ) ; /*AB */
len[1] = sqrt( pow(a[2][0]-a[1][0],2)+pow(a[2][1]-a[1][1],2) ) ; /*BC */
len[2] = sqrt( pow(a[0][0]-a[2][0],2)+pow(a[0][1]-a[2][1],2) ) ; /*AC */
printf("边AB = %f\t边BC = %f\t边AC = %f\n",len[0],len[1],len[2]);
b[0] = (pow(len[0],2) + pow(len[1],2) - pow(len[2],2)) / ( 2.0 *len[0]*len[1]);
if(b[0] == 0)
printf("角B = %f\n",b[0] = 90.0);
else
{
b[0] = atan(sqrt(1-pow(b[0],2))/b[0]);
b[0] = 180*b[0]/PI;
printf("角B = %f\n",b[0]);
}
b[1] = (pow(len[2],2) + pow(len[1],2) - pow(len[0],2)) / ( 2.0 *len[2]*len[1]);
if(b[1]==0)
printf("角C = %f\n",b[1] = 90.0);
else
{
b[1] = atan(sqrt(1-pow(b[1],2))/b[1]);
b[1] = 180*b[1]/PI;
printf("角C = %f\n",b[1]);
}
b[2] = 180 - b[0] - b[1];
printf("角A = %f\n",b[2]);
}