这是我函数中的一个循环,哪位亲帮我看看哪出了问题

这是我函数中的一个循环,哪位亲帮我看看哪出了问题
for(i=0;i<144;i++)
{
int n=i/12;
double x0=0.0;double z0=n*3.0+1.5;//射线始点
//double x=x0;double z=z0;//转换点

    if(ray[i].slope>0.0)
    {
        double X1[13]={0.0};double Z1[13]={0.0};//用纵向线截得的点到射线始点的长度
        double X2[13]={0.0};double Z2[13]={0.0};//用横向线截得的点到射线始点的长度
        int temp1=n,temp2=0;//z方向和x方向控制参数
        double x=x0;double z=z0;//转换点
        while(temp1<12&&temp2<9)
        {
            Z2[temp1]=(temp1+1)*3.0;X2[temp1]=(Z2[temp1]-z0)/ray[i].slope;
            X1[temp2]=(temp2+1)*5.0;Z1[temp2]=(temp2+1)*5.0*ray[i].slope;
            if(temp2*5.0<X2[temp1]&&X2[temp1]<(temp2+1)*5.0)
            {
                a[i][temp1*9+temp2]=sqrt(pow(X2[temp1]-x,2.0)+pow(Z2[temp1]-z,2.0));
                x=X2[temp1];z=Z2[temp1];temp1++;
            }
            else if(temp1*3.0<Z1[temp2]&&Z1[temp2]<(temp1+1)*3.0)
            {
                a[i][temp1*9+temp2]=sqrt(pow(X1[temp2]-x,2.0)+pow(Z1[temp2]-z,2.0));
                x=X1[temp2];z=Z1[temp2];temp2++;
            }
        }

    }
    我想通过while循环,当if判断语句成立的时候,求出a[][],并使temp1或temp2加一,但程序中while不执行,我c编程不好。烦劳哪位帮帮我实现这个循环啊!
    谢谢啦

首先调试下里面的if有没有走进去,因为只有它们进去了,temp才会累加

这么看有点混淆,没运行,不知道我理解的对不对,仅供参考
第一次进while循环的时候,temp1,temp2都是0;
if(temp2*5.0<X2[temp1]&&X2[temp1]<(temp2+1)*5.0)
{
a[i][temp1*9+temp2]=sqrt(pow(X2[temp1]-x,2.0)+pow(Z2[temp1]-z,2.0));
x=X2[temp1];z=Z2[temp1];temp1++;
}
else if(temp1*3.0<Z1[temp2]&&Z1[temp2]<(temp1+1)*3.0)
{
a[i][temp1*9+temp2]=sqrt(pow(X1[temp2]-x,2.0)+pow(Z1[temp2]-z,2.0));
x=X1[temp2];z=Z1[temp2];temp2++;
}
这两个if就都没有进去,因为这两个if都是0=0
那么temp1,temp2就都没有++;
没理解错的话,这个程序会出现死循环,temp1,temp2永远都是等于0

if语句没有走进去怎么办?

不执行,就是条件没满足,你怎么不调试呢

#include
#include
//#include"utilities.h"
struct date
{
double begin;
double end;
double slope;
double length;

}ray[144];
void main()
{
FILE *fp,*fp1;
printf("asd");
int i,j,k;
for(i=0;i<12;i++)
for(j=0;j<12;j++)
{
ray[12*i+j].begin=1.5+3.0*i;
ray[12*i+j].end=1.5+3.0*j;
ray[12*i+j].slope=(ray[12*i+j].end-ray[12*i+j].begin)/45.0;
ray[12*i+j].length=sqrt(45*45+pow(fabs(ray[12*i+j].begin-ray[12*i+j].end),2.0));

    }

// fp=fopen("射线.txt","w");
for(i=0;i<144;i++)
{
fprintf(fp,"%d\t%f\t%f\t%f\t%f\n",i+1,ray[i].begin,ray[i].end,ray[i].slope,ray[i].length);
// printf("%d\t%f\t%f\t%f\t%f\n",i+1,ray[i].begin,ray[i].end,ray[i].slope,ray[i].length);
}
double a[144][108]={0.0};

for(i=0;i<144;i++)
{
    for(j=0;j<12;j++)
    {
        for(k=0;k<9;k++)
        {
            int n=i/12;
            if(ray[i].slope==0.0) 
            {
                a[i][9*n+k]=5.0;
            }
                else a[i][9*j+k]=0.0;
            //printf("%f\n",a[i][9*j+k]);
        }
    }
}

for(i=0;i<144;i++)
{
    int n=i/12;
    double x0=0.0;double z0=n*3.0+1.5;//射线始点
    //double x=x0;double z=z0;//转换点

    if(ray[i].slope>0.0)
    {
        double X1[13]={0.0};double Z1[13]={0.0};//用纵向线截得的点到射线始点的长度
        double X2[13]={0.0};double Z2[13]={0.0};//用横向线截得的点到射线始点的长度
        int temp1=n,temp2=0;//z方向和x方向控制参数
        double x=x0;double z=z0;//转换点
        while(temp1<12&&temp2<9)
        {
            Z2[temp1]=(temp1+1)*3.0;X2[temp1]=(Z2[temp1]-z0)/ray[i].slope;
            X1[temp2]=(temp2+1)*5.0;Z1[temp2]=(temp2+1)*5.0*ray[i].slope;
            if(temp2*5.0<X2[temp1]&&X2[temp1]<(temp2+1)*5.0)
            {
                a[i][temp1*9+temp2]=sqrt(pow(X2[temp1]-x,2.0)+pow(Z2[temp1]-z,2.0));
                x=X2[temp1];z=Z2[temp1];temp1++;
            }
            else if(temp1*3.0<Z1[temp2]&&Z1[temp2]<(temp1+1)*3.0)
            {
                a[i][temp1*9+temp2]=sqrt(pow(X1[temp2]-x,2.0)+pow(Z1[temp2]-z,2.0));
                x=X1[temp2];z=Z1[temp2];temp2++;
            }
        }

    }
    if(ray[i].slope<0.0)
    {
        double X1[13]={0.0};double Z1[13]={0.0};
        double X2[13]={0.0};double Z2[13]={0.0};
        int temp1=n,temp2=0;
        double x=x0;double z=z0;//转换点
        while(temp1>=0&&temp2<9)
        {
            Z2[temp1]=temp1*3.0;X2[temp1]=(z0-Z2[temp1])/ray[i].slope;
            X1[temp2]=(temp2+1)*5.0;Z1[temp2]=(temp2+1)*5.0*ray[i].slope;
            if(temp2*5.0<X2[temp1]&&X2[temp1]<(temp2+1)*5.0)
            {
                a[i][temp1*9+temp2]=sqrt(pow(X2[temp1]-x,2.0)+pow(Z2[temp1]-z,2.0));
                x=X2[temp1];z=Z2[temp1];
                temp1--;
            }
            else if(temp1*3.0<Z1[temp2]&&Z1[temp2]<(temp1+1)*3.0)
            {
                a[i][temp1*9+temp2]=sqrt(pow(X1[temp2]-x,2.0)+pow(Z1[temp2]-z,2.0));
                x=X1[temp2];z=Z1[temp2];
                temp2++;
            }
        }

    }

}

fp1=fopen("a[][].txt","w");
for(i=0;i<144;i++)
{
    for(j=0;j<12;j++)
    {
        for(k=0;k<9;k++)
        {

        //  printf("%f\n",a[i][9*j+k]);
            fprintf(fp1,"%f\n",a[i][9*j+k]);

        }
    }
}
fclose(fp1);

}