求助 程序运行的结果前几行总是出现奇怪的数据 但是后边的数据正常 什么情况?
编写完一个程序 前几行输出的结果很奇怪 但是后边的数据正常 求助高手这是什么问题!运行结果的前几行如下
0.000000 0.000000 0.000000
19827086591622233000000000000000000.000000 0.000000 0.000000
0.000000 0.000000 0.000000
0.000000 0.000000 0.000000
0.000000 0.000000 -107374176.000000
-107374176.000000 -107374176.000000 -107374176.000000
-107374176.000000 -107374176.000000 0.000000
程序如下:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define Pi 3.14159 //角度弧度化所用参数
#define mesh 4 //在step size 等于0.2的情况下应取16,这个值必须为偶数
#define Xmax 15 //距离除以step size
#define Ymax 15 //距离除以step size
int main()
{
int X,Y,x,y,i;//定义主程序中使用的循环变量
struct bccinput//定义输入数据使用的结构体
{
float a;
float b;
float c;
};
struct bccinput input[Ymax+1][Xmax+1];
FILE *out;
for(Y=0;Y<Ymax-mesh/2;Y=Y+(mesh/2))
for (X=0;X<Xmax-mesh/2;X=X+(mesh/2))
{ float part[(mesh+1)*(mesh+1)][3],fcc[3];
int k,s;
for(k=0;k<(mesh+1)*(mesh+1);k++)
for(s=0;s<3;s++)
part[k][s]=0;
if ((Xmax-X>=mesh)&&(Ymax-Y>=mesh))// 当分割的网格还没有到达图像的边界的时候
{i=0;
for(y=Y;y<=Y+mesh;y++)
for(x=X;x<=X+mesh;x++)
{part[i][0]=input[y][x].a;
part[i][1]=input[y][x].b;
part[i][2]=input[y][x].c;
i++;
}
fcc[0]=1;
fcc[1]=1;
fcc[2]=1;
}
else if ((Xmax-X<mesh)&&(Ymax-Y<mesh))//当分割的网格到达图像的右下角的时候
{i=0;
for(y=Y;y<=Ymax;y++)
for(x=X;x<=Xmax;x++)
{part[i][0]=input[y][x].a;
part[i][1]=input[y][x].b;
part[i][2]=input[y][x].c;
i++;
}
fcc[0]=4;
fcc[1]=4;
fcc[2]=4;
}
else if ((Xmax-X<mesh)&&(Ymax-Y>=mesh))//当分割的网格到达图像的右边的时候
{i=0;
for(y=Y;y<=Y+mesh;y++)
for(x=X;x<=Xmax;x++)
{part[i][0]=input[y][x].a;
part[i][1]=input[y][x].b;
part[i][2]=input[y][x].c;
i++;
}
fcc[0]=2;
fcc[1]=2;
fcc[2]=2;
}
else if ((Xmax-X>=mesh)&&(Ymax-Y<mesh))//当分割的网格到达图像的底边的时候
{i=0;
for(y=Y;y<=Y+mesh;y++)
for(x=X;x<=Xmax;x++)
{part[i][0]=input[y][x].a;
part[i][1]=input[y][x].b;
part[i][2]=input[y][x].c;
i++;
}
fcc[0]=3;
fcc[1]=3;
fcc[2]=3;
}
if ((Xmax-X>=mesh)&&(Ymax-Y>=mesh))// 当分割的网格还没有到达图像的边界的时候
{for (y=Y;y<=Y+(mesh/2);y++)
for (x=X;x<=X+(mesh/2);x++)
{input[y][x].a=fcc[0];
input[y][x].b=fcc[1];
input[y][x].c=fcc[2];
}
}
else if ((Xmax-X<mesh)&&(Ymax-Y>=mesh))//当分割的网格到达图像的右边的时候
{for (y=Y;y<=Y+(mesh/2);y++)
for (x=X;x<=Xmax;x++)
{input[y][x].a=fcc[0];
input[y][x].b=fcc[1];
input[y][x].c=fcc[2];
}
}
else if ((Xmax-X<mesh)&&(Ymax-Y<mesh))//当分割的网格到达图像的右下角的时候
{for (y=Y;y<=Ymax;y++)
for (x=X;x<=Xmax;x++)
{input[y][x].a=fcc[0];
input[y][x].b=fcc[1];
input[y][x].c=fcc[2];
}
}
else if ((Xmax-X>=mesh)&&(Ymax-Y<mesh))//当分割的网格到达图像的底边的时候
{for (y=Y;y<=Ymax;y++)
for (x=X;x<=X+(mesh/2);x++)
{input[y][x].a=fcc[0];
input[y][x].b=fcc[1];
input[y][x].c=fcc[2];
}
}
}//对应最上层for 循环结束
out=fopen("C:\\c program\\result.txt","w"); //需要输入输出文件的存放地址
for(y=0;y<=Ymax;y++)
for(x=0;x<=Xmax;x++)
fprintf(out,"%f %f %f\n",input[y][x].a,input[y][x].b,input[y][x].c);
fclose(out);
return(0);
}