求助,为什么结果有错。请大家帮忙改错
我想把阶梯形矩阵化成其标准型。。即
输入
1 2 3
0 1 2
输出
1 0 0
0 1 0
输入
1 2 3
0 2 0
0 0 1
0 0 0
输出
1 0 0
0 2 0
0 0 1
0 0 0
结果是m<n时输出的不正确,
m>=n时结果正确。
求改正!!!!!!
#include<stdio.h>
#include<stdlib.h>
#define M 30
void main()
{
float a[M][M],B;
int i,j,t,m,n;
//输入行列数进行控制//
printf("请输入矩阵的行数和列数m与n:\n");
scanf("%d%d",&m,&n);
//对矩阵P、A、Q进行初始化//
printf("请按行输入矩阵A的各个元素\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
for(i=0;i<M;i++)
for(j=0;j<M;j++)
if((i>=m)||(j>=n))
a[i][j]=0;
printf("初始A矩阵\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%10.2f",a[i][j]);
printf("\n");
}
for(t=0;t<m;t++)
{
for(j=0;j<n;j++)
{
if(a[t][t]!=0)
{
B=a[t][j]/a[t][t];
for(i=0;i<m;i++)
if(i!=j)
a[i][j]=a[i][j]-B*a[i][j];
}
}
}
printf("化为的A矩阵\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%10.2f",a[i][j]);
printf("\n");
}
}当m<n时出现了错误。。。别的情况都对。。。求改正