为什么我的循环打印每个结果即使我没有使用 printf

问题描述

为什么我的循环打印每个结果,即使我没有使用 printf。 这是我的编码。结果打印为每个执行循环的矩阵

r1=0.963;
r2=0.764;
r3=0.528;
r4=1.815;
r5=0.778;
phi1=0*(pi/180);
phi2l=0*(pi/180);
phi2u=90*(pi/180);
phi2ro=90*(pi/180);
printf("    phi-1     phi-2     phi-3     x-p     y-p\n");
printf("--------------------------------------------------\n");
do
  phi2r=((phi2l+phi2u)/2); #CALculaTE PHI2R
  fphi2l=((r1*cos(phi1)+r2*cos(phi2l)-r4)^2+(r1*sin(phi1)+r2*sin(phi2l))^2-(r3^2)); #EXECUTE FUNCTION USING PHI2L
  fphi2r=((r1*cos(phi1)+r2*cos(phi2r)-r4)^2+(r1*sin(phi1)+r2*sin(phi2r))^2-(r3^2)); #EXECUTE FUNCTION USING PHI2R
  check=fphi2l*fphi2r; #CALculaTE VALUE FOR CONDITION
  if(check<0)
  {
    phi2u=phi2r;
  }
  endif
  if(check>0)
  {
    phi2l=phi2r;
  }
  endif
  error=abs(phi2r-phi2ro)/phi2r; #CALculaTE ERROR
  phi2ro=phi2r;
until(error<10^-8)
phi2=phi2r;
phi3=asin((r1*sin(phi1)+r2*sin(phi2))/r3);
phi3c=acos((r1*cos(phi1)+r2*cos(phi2)-r4)/r3);

解决方法

您的 if 块中有语法“错误”。在八度中,您不需要将 if“块”括在大括号中。您所写的内容有效地将该任务包装在一个“单元格”中。并且因为“单元格”语句没有以分号结束(注意分号在单元格内!),结果单元格会打印在终端上。

你可以这样做:

if check > 0
  phi2l = phi2r;
endif