矩阵最简形式c语言,求大神帮看看这个求行最简矩阵的代码有什么问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#define m 3//矩阵的行数

#define n 4//矩阵的列数

float a[m][n];

void main()

{

void out1();//test1

void out2();//test2

void out3();//test3

float temp;

int i,j,ii,jj,b,c,e;

printf("请依次输入原矩阵元素:\n");

for(i=0;i<=m-1;i++)

{

for(j=0;j<=n-1;j++)

{

printf("a[%d][%d]=",i+1,j+1);

scanf("%f",&a[i][j]);

printf("\n");

}

}

printf("\n输入的原矩阵为:\n");

for(i=0;i<=m-1;i++)

{

for(j=0;j<=n-1;j++)

printf("%5g",a[i][j]);

printf("\n\n");

}

//下面是行变换

c=0;//反应的列(当前列)

b=0;//下降的行数

e=0;//每发现一列有非零元素就加一

for(j=0;j<=n-1&&j<=m-1;j++)

{

for(i=b;i<=m-1;i++) //判断该列是否全为0,找出第一个不是0的元素

{

if(a[i][c]!=0)

{

e=e+1;

break;

}

if(i==m-1&&a[i][c]==0)

{

c=c+1;

break;

}

}

if(i==m-1&&a[i][c]==0)

continue;

if(i!=c)

{

for(jj=0;jj<=n-1;jj++) //将该行移至理论要求应在的行

{

temp=a[i][jj];

a[i][jj]=a[b][jj];

a[b][jj]=temp;

}

}

out1();//test1

temp=a[b][c];

for(jj=0;jj<=n-1;jj++)//将该元素取值1,该行其他元素随之变换

a[b][jj]/=temp;

out2();//test2

for(ii=0;ii<=m-1;ii++)//将从该列开始的对应元素作相应变换

{

if(ii==b)

continue;

temp=a[ii][c];//该列元素

for(jj=c;jj<=n-1;jj++)//右侧的元素

a[ii][jj]=a[ii][jj]-temp*a[b][jj];

out3();//test3

}

c=c+1;

b=e;

}

//输出

printf("\n\n对应的行最简矩阵为:\n");

for(i=0;i<=m-1;i++)

{

for(j=0;j<=n-1;j++)

printf("%5g",a[i][j]);

printf("\n\n");

}

}

//三个测试函数

void out1()

{

int i,j;

printf("\n\n矩阵行变换为:\n");

for(i=0;i<=m-1;i++)

{

for(j=0;j<=n-1;j++)

printf("%5g",a[i][j]);

printf("\n\n");

}

}

void out2()

{

int i,j;

printf("\n\n矩阵化1变为:\n");

for(i=0;i<=m-1;i++)

{

for(j=0;j<=n-1;j++)

printf("%5g",a[i][j]);

printf("\n\n");

}

}

void out3()

{

int i,j;

printf("\n\n矩阵化0变为:\n");

for(i=0;i<=m-1;i++)

{

for(j=0;j<=n-1;j++)

printf("%5g",a[i][j]);

printf("\n\n");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值