程序有错误,检查不出来

lovec001 2008-11-06 04:58:50
[code=C/C++][

#include<stdio.h>
#include<math.h>
#include <stdlib.h>

#define Pi 3.14159265

//已知三角形两边及一边之对角解三角形函数
void fun3(void)
{
double a=0.0, b=0.0, c=0.0;
double b1=0.0, b2=0.0;
double A=0.0, B=0.0, C=0.0;
double A1=0.0, A2=0.0, B1=0.0, B2=0.0;

printf("注意:1.已知条件假定为a,c及c之对角∠C;\n");
printf(" 2.输入角度及输出角度均为角度制。\n");

printf("\n按回车键开始:");
getchar();
printf("\n");
printf("a="); scanf("%lf",&a);
printf("c="); scanf("%lf",&c);
printf("∠C="); scanf("%lf",&C);

A=asin(a*sin(C)/c);
A=A*180/Pi;

if(A==90)
{
B=90-C*180/Pi;
b=sqrt(a*a-c*c); //利用勾股定理
printf("∠A=%f° ∠B=%f° b=%f",A,B,b);
}
else
{
A1=A;
A2=A+90; //A值存在大于和小于90度两种情况

A1=A1*Pi/180;
A2=A2*Pi/180; //A1,A2化为弧度,方便后面计算

B1=Pi-A1-C;
B2=Pi-A2-C; //求出∠B两种情况下的值,暂用弧度表示

b1=c*sin(B1)/sin(C);
b2=c*sin(B2)/sin(C); //求出两种情况下边长b的值

A1=A1*180/Pi;
A2=A2*180/Pi;
B1=B1*180/Pi;
B2=B2*180/Pi; //把两种情况下∠A,∠B值化为角度,作为最终显示

printf("2组解\n\n");
printf("解1:\n");
printf(" ∠A1=%f° ∠B1=%f° b1=%f",A1,B1,b1);
printf("\n");
printf("解2:\n");
printf(" ∠A2=%f° ∠B2=%f° b2=%f",A2,B2,b2);
}


}

int main(void)
{
fun3();
printf("\n");
system( "pause" );
return 0;
}


]
...全文
89 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
supkychen 2008-11-06
是不是该考虑下分母==0的情况
回复
yzfyzyl 2008-11-06
楼主,你把你推导的公式发一下,我帮你核对



飞燕算法群:46520219
回复
yuzy 2008-11-06
2.输入角度及输出角度均为角度制。
角度值?
应该转换成弧度在调用sin函数
回复
liuxs75 2008-11-06
printf("注意:1.已知条件假定为a,c及c之对角∠C;\n");
printf(" 2.输入角度及输出角度均为角度制。\n");

printf("\n按回车键开始:");
getchar();
printf("\n");
printf("a="); scanf("%lf",&a);
printf("c="); scanf("%lf",&c);
printf("∠C="); scanf("%lf",&C);

里面的scanf("%lf",&C);格式不对,scanf("%lf\n",&C);再试试
回复
检查一下数学表达式吧!~

编译、运行没问题,结果有问题
回复
发动态
发帖子
C语言
创建于2007-09-28

6.2w+

社区成员

C语言相关问题讨论
申请成为版主
社区公告
暂无公告