简单C程序编译后出现 null pointer assignment 急!

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:33:54
#include "stdio.h"
main()
{
int k,B[100],A[100],c=0;
int n,i,j,a[100][100];
float x[100],l[100][1];
printf("请输入n元函数");
scanf("%d",&n);
printf("\n请输入各元系数");
for(i=1;i<=n;i++)
for(j=1;j<=n+1;j++)
scanf("%f",a[i][j]);

for(i=2;i<=n;i++)
{
l[i][1]=a[i][1]/a[1][1];
for(j=2;j<=n+1;j++)
a[i][j]=a[i][j]-l[i][1]*a[1][j];
}
x[n]=a[n][n+1]/a[n][n];

for(i=n-1;i>=1;i--)
{
B[i]=a[i][n+1]-A[i];
for(j=i+1;j<=n;j++)
{
c=0;
A[i]=c+a[i][j]*x[j];
}
x[i]=B[i]/a[i][j];
}

for(i=1;i<=n;i++)
printf("x[i]=%f",x[i]);
}

在C/C++语言中,数组下标是从0开始计数的,比如:定义
int a[100];
那么,数组变量a的有效下标范围是:0~99,即a[0],a[1],a[2],...,a[99]
根据这个原则,楼主程序中存在数组下标越限的问题。比如:变量l定义为
float l[100][1];
使用中却出现
l[i][1]=a[i][1]/a[1][1];
其中l[i][1]存在访问越限。