C语言——矩阵计算(转置、加法、减法、数乘、乘法)
使用该计算器可以帮助你快速完成矩阵的简单计算。
#include <stdio.h>
void menu()
{printf("****************************************************************\n");printf("****************************************************************\n");printf("**********************欢迎使用矩阵计算器************************\n");printf(" 1.转置2.加法3.减法4.数乘5.乘法0.退出 \n");printf("****************************************************************\n");printf("****************************************************************\n");printf("****************************************************************\n");
}void Matrix_output(int(*s)[100], int m, int n)//输出
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){printf("%2d ", s[i][j]);}printf("\n");}
}void Matrix_transpose(int(*s)[100], int(*t)[100], int m, int n)//转置
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){t[j][i] = s[i][j];}}
}
void Matrix_addition(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n)//相加
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){p[i][j] = s[i][j] + t[i][j];}}
}void Matrix_subtraction(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n)//相减
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){p[i][j] = s[i][j] - t[i][j];}}
}void Matrix_shucheng(int(*s)[100], int(*t)[100], int m, int n, int k)//数乘
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){t[i][j] = k * s[i][j];}}
}void Matrix_multiplication(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n, int x, int y)//相乘
{int i, j, k, sum;for (i = 0; i < m; i++){for (j = 0; j < y; j++){sum = 0;for (k = 0; k < n; k++){sum += s[i][k] * t[k][j];}p[i][j] = sum;}}
}int main()
{int m, n, i, j, k, input;int x, y;int A[100][100], B[100][100], C[100][100];do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1://转置printf("请输入矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("原矩阵:\n");Matrix_output(A, m, n);Matrix_transpose(A, B, m, n);printf("转置后的矩阵:\n");Matrix_output(B, n, m);break;case 2://相加printf("请输入第一个矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入第一个矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("请输入第二个矩阵的行数:> ");scanf("%d", &x);printf("\n");printf("请输入第二个矩阵的列数:> ");scanf("%d", &y);printf("\n");if (m == x && n == y){printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &B[i][j]);}}printf("第一个矩阵:\n");Matrix_output(A, m, n);printf("第二个矩阵:\n");Matrix_output(B, m, n);Matrix_addition(A, B, C, m, n);printf("和矩阵:\n");Matrix_output(C, m, n);}else{printf("这两个矩阵不是同型矩阵,不能相加\n");}break;case 3:printf("请输入第一个矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入第一个矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入第一个矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("请输入第二个矩阵的行数:> ");scanf("%d", &x);printf("\n");printf("请输入第二个矩阵的列数:> ");scanf("%d", &y);printf("\n");if (m == x && n == y){printf("请输入第二个矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &B[i][j]);}}printf("第一个矩阵:\n");Matrix_output(A, m, n);printf("第二个矩阵:\n");Matrix_output(B, m, n);Matrix_subtraction(A, B, C, m, n);printf("差矩阵:\n");Matrix_output(C, m, n);}else{printf("这两个矩阵不是同型矩阵,不能相减\n");}break;case 4:printf("请输入矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入这个数:>");scanf("%d", &k);printf("\n");printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("原矩阵:\n");Matrix_output(A, m, n);Matrix_shucheng(A, B, m, n, k);printf("数乘矩阵:\n");Matrix_output(B, m, n);break;case 5:printf("请输入第一个矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入第一个矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入第一个矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("请输入第二个矩阵的行数:> ");scanf("%d", &x);printf("\n");printf("请输入第二个矩阵的列数:> ");scanf("%d", &y);printf("\n");if (n == x){printf("请输入第二个矩阵:\n");for (i = 0; i < x; i++){for (j = 0; j < y; j++){scanf("%d", &B[i][j]);}}printf("第一个矩阵:\n");Matrix_output(A, m, n);printf("第二个矩阵:\n");Matrix_output(B, x, y);Matrix_multiplication(A, B, C, m, n, x, y);printf("相乘矩阵:\n");Matrix_output(C, m, y);}else{printf("这两个矩阵不能相乘\n");}break;case 0:printf("退出计算,欢迎再次使用\n");break;default:printf("输入错误,请从新输入\n");break;}} while (input);return 0;
}
测试样例:
1.转置:
2.加法:
3.减法:
4.数乘:
5.乘法:
0.退出
暂时还没有求逆矩阵和化为阶梯型,以后会添上的 -_-
C语言——矩阵计算(转置、加法、减法、数乘、乘法)相关推荐
- c语言加法减法乘法,一元多项式的加法减法乘法c语言描述线性表应用
一元多项式的加法减法乘法 --(c语言描述)线性表应用 来源:永远的北邮人 vc6.0下调试通过 #include #include #include #include #include #inclu ...
- R语言的一个加法函数
## R语言中的加法函数 add4 <- function(x, y) {x + y } 一个复杂一些的R语言程序 ## R语言程序 add2 <- function(x, y) {x + ...
- C语言计算二进制数加法
文章目录 前言 一.C语言中二进制数加法计算 测试结果 前言 在C语言中计算二进制数的加法 一.C语言中二进制数加法计算 #include <stdio.h> #include <s ...
- Verilog学习笔记——有符号数的乘法和加法
有符号数的计算在 Verilog 中是一个很重要的问题(也很容易会被忽视),在使用 Verilog 语言编写 FIR 滤波器时,需要涉及到有符号数的加法和乘法,在之前的程序中我把所有的输入输出和中间信 ...
- java BigDecimal加法/减法/乘法/除法 保留两位小数
1.BigDecimal类概述及其构造方法 由于在运算的时候,float类型和double类型很容易丢失进度,所以,为了能够精确的表示.计算浮点数,java提供了BigDecimal类 BigDe ...
- 【高精度】 C语言实现高精度加法
目录 1. 前言 2. 高精度及其思想方法介绍 3. C语言实现高精度加法 3.1存数字 3.2 计算 存结果 3.3 倒序打印 4.0 结语 1. 前言 本系列主要介绍 高精度加减高精度,高精度乘除 ...
- C语言 二维数组行数和列数计算 - C语言零基础入门教程
目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...
- c语言判断回文平方数,C/C++回文数的判断(转)
"回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数. 平方回数 定义:一个回文数,它同时还是某一个数的平方, ...
- 122345 java_【每天算法2】:用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。 | 学步园...
一个组数:122345这6个数,打印出它所有可能的组合:要求4不能在第3位,3和5不能相连. 我在实现这个 感觉我的算法复杂度还是挺高的.过程中,不断的创建新的数组列别. 如果你有更好的算法,请发上来 ...
- c语言用while实现输出加法口诀表,「加法口诀」C语言编写一个加法口诀表 - 金橙教程网...
加法口诀 C语言编写一个加法口诀表 #include void main(){ int i,j; for(i=1;i<10;i++){ for(j=1;j<=i;j++){ printf( ...
最新文章
- Unicode,UTF-32,UTF-16,UTF-8到底是啥关系?
- 二、在应用中升级----网络部分
- linux 网络服务器 源码下载,linux下 各类tcp网络服务器的实现源代码.doc
- IIS 权限错误(401.1 401.2 401.3)解决办法
- 上传文件显示进度条_文件上传带进度条进阶-断点续传
- C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)
- mysql 字符串搜_mysql – 在表中搜索字符串的SQL查询?
- 最美的十大精典爱情句子
- 索尼发布工业设备用SWIR图像传感器 采用5微米像素尺寸
- leetcode题解279-完全平方数
- JavaSE04、什么是类和对象,如何使用?
- 如何让Windows 只显示某些文件扩展名
- 2010年通信展的总结
- Windows下使用命令打开远程桌面
- 获取完整拼音中包含拼音的个数
- 人工智能认知技术,在各行业的应用介绍
- [译] Dweb: Beaker--去中心化的浏览器 (中英)
- 计算广告:第一章——在线广告综述
- pta——点赞,打印杨辉三角,吃火锅(c语言)
- 蘑菇街Java后台开发一二面面经
热门文章
- 机器学习基础——贝叶斯
- opencv——批量修改图片像素大小
- 提交和复位按钮的知识(Submit Reset Buttons)
- thunderbird 雷鸟中文版下载,安装
- gamit 常用命令
- 第三章 opengl之着色器
- 数据集下载(OTB2015、VOT2018、UAV123、DET、VID、COCO、Youtube-BB、LaSOT、GOT-10k)
- Linux:C获取当前网速 网线/4G
- python函数调用关系分析
- 华为鸿蒙ota升级,华为鸿蒙系统官方,华为鸿蒙系统官方升级名单预约 v2.0 - 浏览器家园...