用c语言实现矩阵的加法、减法、乘法运算

该程序的代码如下:
头文件如下:

#ifndef _MATRIX_H_
#define _MATRIX_H_
void evaluate( int**x, int m,int n);//该函数用于给矩阵赋值
void addmatrix( int** x,  int** y,int **z, int m, int n);//该函数用于矩阵的加法,m,n分别为矩阵的列数,行数
void multiplmatrix( int** x,  int ** y,int **z, int m, int n1,int n);//该函数用于矩阵的乘法,m,n1为矩阵x的列数、列数,n为矩阵y的列数
void showmatrix( int** a, int m,int n);//该函数用于矩阵的显示,m,n分别为矩阵的行数与列数
void subtractionmatrix(int** x, int** y,int **z, int m, int n);//该函数用于矩阵的减法法,m,n分别为矩阵的列数,行数
int** creat( int m, int n);//该函数用于矩阵的分配内存
void  free_1(int** x, int m);//该函数用于释放矩阵的内存
#endif

函数的定义文件如下:

#include"matrix.h"
#include<stdio.h>
#include<stdlib.h>
void evaluate( int **x, int m,int n) {//该函数用于给矩阵赋值
	
	printf("请依次输入矩阵的值:\n");
	for (int i = 0; i < m; i++) {
		
		for (int j = 0; j < n; j++) {
			scanf_s("%d", &x[i][j]);
			
		}
	}
}
void addmatrix( int **x,  int **y,int **z, int m, int n) {//该函数用于矩阵的加法
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			z[i][j] = x[i][j] + y[i][j];
		}
	}		
}
void multiplmatrix( int** x,  int** y,int **z,  int m, int n1,int n) {//该函数用于矩阵的乘法
	for (int k = 0; k < n; k++) {
			for (int i = 0; i < m; i++) {
				z[i][k] = 0;
				for (int j = 0; j < n1; j++) {
					z[i][k]+= x[k][j] * y[j][i];
				}
			}
		
	}
	
}
void showmatrix(int** a, int m, int n) {//该函数用于矩阵的显示
	
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			printf("%d   ",a[i][j]);
		}
		printf("\n");
	}

}

void subtractionmatrix(int** x, int** y, int **z,int m, int n) {
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			z[i][j] = x[i][j] - y[i][j];
		}
	}
}
int** creat( int m, int n) {
	int** temp = (int**)malloc(sizeof(int) * m);
	for (int i = 0; i < m; i++) {
		temp[i] = (int*)malloc(sizeof(int) * n);
	}
	return temp;
}
void  free_1(int** x, int m) {
	for (int i = 0; i < m; i++) {

		free(x[i]);
	}
	free(x);
}

主程序的文件如下

/*******************************************************************************************
项目说明:
该项目用于实现矩阵的加法、减法、乘法运算
********************************************************************************************/

#include<stdio.h>
#include"matrix.h"
#include<stdlib.h>
int main() {
	int m1, n1, m2, n2;//分别维矩阵的行数与列数
	printf("请输入第一个矩阵的行数与列数:");
	scanf_s("%d %d", &m1, &n1);
	printf("请输入第二个矩阵的行数与列数:");
	scanf_s("%d %d", &m2, &n2);
	
	int** A = creat(m1,n1);//为矩阵A分配m1行
	int** B = creat(m2,n2);//为矩阵B分配m2行
	
	//初始化A,B矩阵
	evaluate(A, m1,n1);
	evaluate(B, m2,n2);
	//显示A,B矩阵
	printf("第一个矩阵如下:\n");
	showmatrix(A, m1,n1);
	printf("第二个矩阵如下:\n");
	showmatrix(B, m2,n2);
	int** C = creat(m1,n1);//C矩阵为A,B矩阵相加的结果
	int** D = creat(m1,n1);//D矩阵为A,B矩阵相减的结果
	int** E = creat(m1, n2);//E矩阵为A,B矩阵相乘的结果
	if (m1 == m2 && n1 == n2) {
		addmatrix(A, B, C, m1, n1);//将两矩阵相加
		 //显示矩阵相加的结果
		printf("矩阵相加的结果如下:\n");
		showmatrix(C, m1, n1);
	}
	else
		printf("这两个矩阵不满足矩阵相加的规律,不能想加!\n");
	//释放矩阵C所占的内存
	free_1(C, m1);

	if (m1 == m2 && n1 == n2) {
		subtractionmatrix(A, B, D, m1, n1);//将两矩阵相减
		 //显示矩阵相减的结果
		printf("矩阵相减的结果如下:\n");
		showmatrix(D, m1, n1);
	}
	else
		printf("这两个矩阵不满足矩阵相减的规律,不能相减!\n");
	//释放矩阵D所占的内存
	free_1(D, m1);
	if (n1 == m2) {
		//将两矩阵相乘
		multiplmatrix(A, B, E, m1, n1, n2);
		printf("矩阵相乘的结果如下:\n");
		showmatrix(E, m1, n2);//显示矩阵D的值
	}
	else
		printf("这两个矩阵不满足矩阵乘法的规律,不能相乘!\n");
	//释放相乘后矩阵的内存
	free_1(E,m1);
	//释放第一第二个矩阵的内存
	free_1(A, m1);
	free_1(B, m2);
	return 0;

}

下面是运行结果
在这里插入图片描述
结果显然是正确的!

  • 19
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值