请教一个简单c语言问题
#include<stdio.h>#include<math.h>
#define PI 3.1415926
//-----------------------
int compute_t(int t1, int t2)//------计算复合波的周期,即两个波形周期的最小公倍数
{ int n;
int fhb_t=1;
for(n=1; ;n++)
{ if(t1>t2)
if(t1*n%t2==0)
{fhb_t=t1*n;
break;
}
else
if(t2*n%t1==0)
{fhb_t=t2*n;
break;
}
}
return fhb_t;
}
//------------------------
void compute_l(int t1, int t2,double *l1, double *l2)//-----计算每个波的波长
{*l1=5.13*t1*t1;
*l2=5.13*t2*t2;
}
//--------------------------
double compute_h(double a1, double a2, int t1, int t2, int fhb_t)//-----计算复合波的最大高度,复合波一周期内采样200个点
{ int n;
double time=fhb_t*1.0/200;
double h,maxh=0;
for(n=1;n<200;n++)
{ h=a1*sin(2*PI/t1*time*n)+a2*sin(2*PI/t2*time*n);
printf("采样点:%f 复合波高度:%f\n",time*n, h);
if(h>maxh) maxh=h;
}
return maxh;
}
//-----------------------
void main()//--------------------主函数
{ int t1,t2,fhb_t;
double a1,a2,l1,l2,maxh;
printf("请输入第一个正弦波的振幅a1和周期t1:\n");
scanf("%f%d",&a1,&t1);
printf("请输入第二个正弦波的振幅a2和周期t2:\n");
scanf("%f%d",&a2,&t2);
compute_l(t1,t2,&l1,&l2);
printf("第一个波的波长是:%f\n第二波的波长是:%f\n",l1,l2);
fhb_t=compute_t(t1,t2);
printf("复合波的周期是:%d\n",fhb_t);
maxh=compute_h(a1,a2,t1,t2,fhb_t);
printf("复合波的最大高度是:%f!\n",maxh);
}
fhb_t以及之后的结果始终无法显示出来,运行到计算波长之后就停止了,各位帮忙解答下,谢谢
谢谢第二楼的解答~~在求解复合波的周期的函数出了问题,研究研究下~~~
[[it] 本帖最后由 初学者1986 于 2008-12-5 19:41 编辑 [/it]]