高分求救C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 15:12:21
请高手帮我看一下这个程序,我想当i+1行的数据减去i行对应的数据的绝对值都小于0.000001时,终止循环。并输出此时的i.结果程序一运行什么都没有,有时还直接退出TC2.0.
#include<stdio.h>
#include<math.h>
#define N 5
main()
{
double x[10][N];
double w=1.1;
double f,f1;
int i,j,s;int k=0;
for(j=0;j<N;j++)
x[0][j]=0.0;
for(i=0;;i++)
{x[i+1][0]=x[i][0]-w/4.0*(-3+4*x[i][0]-x[i][1]);
for(j=1;j<N-1;j++)
x[i+1][j]=x[i][j]-w/4.0*(-2-x[i+1][j-1]+4*x[i][j]-x[i][j+1]);
x[i+1][N-1]=x[i][N-1]-w/4.0*(-3-x[i+1][N-2]+4*x[i][N-1]);
for(s=0;s<N;s++)
{ f=x[i+1][s]-x[i][s];
f1=fabs(f);
if(f1<0.000001)
k++;}
if(k==N) break;
}
printf("%d",i);
}

你的代码太乱了,变量声明也无意义,很难短时间理解算式含义

不过看你的描述,应该很大可能是数组下标越界了,
将“for(i=0;;i++)”这个语句中间加一个i<9的判断,
再在每次循环开始时(也就是“for(i=0;;i++)”这个语句下的第一条语句),
都将x数组全部输出,
这样debug,很快就能定位了

珍惜生命,远离tc

珍爱生命,远离WINTC与TC
垃圾的编译器

珍惜声明,远离C

好高的分啊,20呢