码迷,mamicode.com
首页 > 编程语言 > 详细

C语言之基本算法33—矩阵的基本运算

时间:2015-07-13 06:39:07      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:c语言   数组   数组运算   

//矩阵基础
/*
==================================================================
题目:输入矩阵a,b,输出a,b,a的转置矩阵d,a*b,b+d=e;
==================================================================
*/
#include<stdio.h>
#define TJ1 for(i=0;i<2;i++)
#define TJ2 for(j=0;j<3;j++)
#define hh printf("\n")
void main()
{
int a[2][3],b[3][2],c[2][2],d[3][2],e[3][2];
int i,j,k;
//输入矩阵a
printf("输入2*3矩阵a:\n");
TJ1
TJ2
scanf("%d",&a[i][j]);
//输入矩阵b
printf("\n输入3*2矩阵b:\n");
TJ2
TJ1
scanf("%d",&b[j][i]);
//输出矩阵a:
printf("\n=====================\n输出矩阵a:\n");
TJ1
{
TJ2
printf("%4d",a[i][j]);
hh;
}
printf("\n=====================\na的转置矩阵d:\n");
TJ1
TJ2
d[j][i]=a[i][j];
TJ2
{
TJ1
printf("%4d",d[j][i]);
printf("\n");
}
//输出矩阵b:
printf("\n\n=====================\n输出矩阵b:\n");
TJ2
{
TJ1
printf("%4d",b[j][i]);
hh;
}
//矩阵a*矩阵b,保存至c
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
//输出矩阵c:
printf("\n=====================\n矩阵a[2][3]*b[3][2]=c[2][2],如下:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%4d ",c[i][j]);
printf("\n");
}
printf("\n=====================\n矩阵b+矩阵d:\n");
TJ2
TJ1
e[j][i]=b[j][i]+d[j][i];
TJ2
{
TJ1
printf("%4d ",e[j][i]);
hh;
}
}
/*
====================================================================
评:
1、掌握输出时换行的方法;

2、转置矩阵时将原矩阵行和列交换,a[i][j]-->d[j][i],原来是2行3列,现在以3行两列输出!即

i=0;i<3;i++;\j=0;j<2;j++;i和j只是符号,不影响结果,只是输出时与d[行][列]对应起来就好。

3、加法很简单,但必须是通行矩阵;

4、乘法比较复杂,先定义初始矩阵,赋初值=0;然后定义保存乘积矩阵的列,注意该列最大

值为左矩阵的列,然后左行*右列,先列增加,然后换下一行,重复以上步骤,直至最后一行

乘以最后一列结束!

=====================================================================
*/





版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言之基本算法33—矩阵的基本运算

标签:c语言   数组   数组运算   

原文地址:http://blog.csdn.net/lzx19901012/article/details/46855621

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!