c语言中的矩阵为什么不用数组表示,[求助]作业不会做!把矩阵表示成上三角矩阵。(数组)...

不好意思,前几天我论坛登不上,无法及时给你们回复.

我两个都有做但是都有一些问题.下面是我的做法:

如果是简单地把主对角线下的数去掉:

#include

void main()

{

int N[3][3];

int i,j;

printf("请输入3*3的距阵\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

scanf("%d",&N[i][j]);

printf("%5d",N[i][j]);

}

printf("\n");

}

printf("该距阵的上三角距阵为:\n");

for(i=0;i<3;i++)

{

for(j=0;j>=i&&j<3;j++)/*这两句有问题,运行结果只显示第一行,不知道错在哪里?*/

printf("%5d",N[i][j]);

printf("\n");

}

}

如果是线形代数上定义的上三角距阵:

我的做法:(题目算是难的,很难把算法完全写清楚。我们线形代数上的距阵化成上三角距阵是不能用小数表示的,最多是用分数,不知道C能不能表示分数?我用int型的,除非每一次运算都能整除,否则,结果就是不正确的)不知道怎么做才能正确表示出来。麻烦大家啦^-^

#include

void main()

{

int N[3][3];

int i,j,k,l,m,n,o,p;

printf("请输入3*3的距阵\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

scanf("%d",&N[i][j]);

printf("%5d",N[i][j]);

}

printf("\n");

}/*原样输出数组*/

for(i=0;i<3;i++)

if(N[i][0]!=0)

break;

for(j=0;j<3;j++)

{

m=N[i][j]/N[i][0];

N[i][j]=m;

k=N[0][j];

N[0][j]=N[i][j];

N[i][j]=k;

}/*化第一列的N[0][0]=1*/

for(i=1;i<3;i++)

{

for(j=0;j<3;j++)

{ n=N[i][j]-N[i][0]*N[0][j];

N[i][j]=n;

}

}/*把第一列除N[0][0]外的元素化为0*/

if(N[1][1]==0)

for(j=0;j<3;j++)

{ l=N[2][j];

N[2][j]=N[1][j];

N[1][j]=l;

}

else

for(j=0;j<3;j++)

{

o=N[1][j]/N[1][1];

N[1][j]=o;

p= N[2][j]-N[1][j]*N[2][1];

N[2][j]=p;

}/*化N[2][1]为0*/

printf("该距阵的上三角距阵为:\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%5d",N[i][j]);

printf("\n");

}/*输出上三角距阵*/

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值