|
发表于 2007-12-28 15:14:45
|
显示全部楼层
正确答案是七分之一。
用余弦定理做,(2)#include <math.h>
#define q 2
#define p 1.0*4/3
main()
{float t,s,o=3,r,m,n,x,y,g,v,u,a[3],b[3],c[3],d[3],e[3],f[3];
int i;
scanf("%f",&t);
s=sqrt(o)*t*1.0/2;
r=t*1.0/2;
a[0]=0;a[1]=t;a[2]=r; b[0]=0;b[1]=0;b[2]=s;
for(i=0;i<3;i++)
{c=(a+q*a[i+1])*1.0/(1+q);
d=(b+q*b[i+1])*1.0/(1+q);
}
for(i=0;i<2;i++)
{e=(c+p*a[i+2])*1.0/(1+p);
f=(d+p*b[i+2])*1.0/(1+p);
}
e[2]=(c[2]+p*a[1])*1.0/(1+p);
f[2]=(d[2]+p*b[1])*1.0/(1+p);
m=pow(a[0]-a[1],2);
n=pow(b[0]-b[1],2);
x=pow(e[0]-e[1],2);
y=pow(f[0]-f[1],2);
v=sqrt(m+n);u=sqrt(x+y);
g=1.0*v*v/(u*u);
printf("%f",g);
}
(1)
#include"stdio.h"
#include"math.h"
#include "graphics.h"
main()
{
pint(); /*调用画图函数画出图形*/
prove(); /*调用证明函数进行证明*/
}
pint()
{
int gdriver=DETECT,gmode;
float a;
printf("a=%8.5f");
scanf("%f",&a); /*a为一个比例系数,以实现任意正三角形*/
initgraph(&gdriver,&gmode, ""); /* 图形方式初始化*/
cleardevice(); /*清屏*/
line(0,0,0,300*a);
line(0,300*a,259.8*a,150*a);
line(259.8*a,150*a,0,0);
line(0,0,173.2*a,200*a);
line(0,300*a,86.6*a,50*a);
line(259.8*a,150*a,0,200*a); /*画出题目要求的各边*/
getch();
closegraph(); /*关闭图形方式*/
}
prove() /*在证明过程中比例系数a用1便于计算*/
{float A[]={0,300} , A1[]={86.6,50},
B[]={259.8,150} , B1[]={0,200},
C[]={0,0} , C1[]={173.2,200},
D[2] , D1[2];/*用数组表示各点坐标*/
float x,x1,y,y1,z,SABDD1,DD1,SDD1,e;
printf(" BB1y-200)=-50/259.3*x\n CC1:y=200/173.2*x\n D is the poit of intersection of BB1 and CC1\n so: ");
x=200/(200/173.2+50/259.8);
y=200/173.2*x;
printf("D[]={%7f,%7f}\n",x,y); /*列方程求出BB1,CC1交点D*/
printf(" BB1y-200)=-50/259.3*x\n AA1y-300)=(300-50)/86.6*x\n D1 is the poit of intersection of BB1 and AA1\n so: ");
x1=100/((300-50)/86.6-50/259.8);
y1=200-50/259.8*x;
printf("D1[]={%7f,%7f}\n",x1,y1);/*列方程求出BB1,AA1交点D1*/
z=sqrt(3);
SABDD1=150*150*z; /*用面积公式求出大三角形面积*/
DD1=sqrt((148.428-37.114)*(148.428-37.114)+(192.857-171.395)*(192.857-171.395)); /*用代数方法算出小三角形边长DD1*/
SDD1=DD1*DD1*z/4; /*用面积公式求出小三角形面积*/
e=SABDD1/SDD1; /*e代表大小面积比*/
printf("%f\n%11f\n%11f\n%11f\n%10f\n",z,SABDD1,DD1,SDD1,e);
if(fabs(e-7)<=0.1) /*将误差限制在0.1以内*/
{ printf("sucess\n"); } /*在误差范围内则得证*/
else
printf("please check the function and do it again"); /*超出误差范围则进行人工检查再次证明*/
} |
|