您的位置:首页 > 其它

矩阵的基本运算(C实现)

2015-10-21 16:30 344 查看
使用函数来实现对矩阵的基本输入输出以及求和、相乘等运算。

#include<stdio.h>

#define N 10

void print_matrix(float *a, int m, int n)
//打印矩阵

{

int i, j;

printf(" %d行%d列的矩阵:\n", m, n);

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

{

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

printf("%6.1f ", *(a + n*i + j));

printf("\n");

}

}

void input_matrix(float *a, int m, int n) //输入矩阵

{

int i, j;

printf("请输入%d行%d列的矩阵:\n", m, n);

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

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

scanf("%f", (a + n*i + j));
//将二维数组看成一维进行存储

}

void multiply_matrix(float *a, int m1, int n1, float *b, int m2, int n2, float *c)
//矩阵相乘

{

int i, j, k;

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

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

for (k = 0; k < n1; k++)

*(c + n2*i + j) += *(a + n1*i + k) * *(b + n2*k + j);

}

void add_matrix(float *a, float *b, int m, int n)
//矩阵求和

{

int i, j;

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

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

*(a + n*i + j) += *(b + n*i + j);

}

int main(void)

{

int i, j, m1, n1,m2,n2;

float ma

, mb

,mc

= {0};

printf("请输入矩阵a的行、列数:\n");

scanf("%d%d", &m1, &n1); //m表示行,n表示列

input_matrix(ma, m1, n1);

print_matrix(ma, m1, n1);

printf("请输入矩阵b的行、列数:\n");

scanf("%d%d", &m2, &n2); //m表示行,n表示列

input_matrix(mb, m2, n2);

print_matrix(mb, m2, n2);

if(m1== m2 && n1== n2)

{

printf("矩阵a+矩阵b=\n");

add_matrix(ma,
mb,m1, n1);

print_matrix(ma, m1, n1);

}

else

{

printf("两个矩阵无法相加\n");

}

if(n1== m2)

{

printf("矩阵a*矩阵b=\n");

multiply_matrix(ma, m1, n1, mb, m2,n2, mc);

print_matrix(mc, m1, n2);

}

else

{

printf("两个矩阵无法相乘\n");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: