矩阵相关运算代码实现
2016-06-14 18:41
661 查看
1. 两个矩阵相乘
2.矩阵转置
3.求矩阵的鞍点(行最大,列最小)
4.矩阵周边之和问题
5.判断矩阵是否为对称阵
6.判断一个矩阵是另一个矩阵的子矩阵
#include <iostream> #include<stdio.h> using namespace std; int main() { int a[3][3],b[3][3],c[3][3]; for(int i=0;i<3;i++) for(int j=0;j<3;j++) { printf("please input a[%d][%d]\n",i,j); scanf("%d",&a[i][j]); } for(int i=0;i<3;i++) for(int j=0;j<3;j++) { printf("please input b[%d][%d]\n",i,j); scanf("%d",&b[i][j]); } for(int i=0;i<3;i++) for(int j=0;j<3;j++) { c[i][j] = 0; for(int k=0;k<3;k++) { c[i][j] += a[i][k]*b[k][j]; } } for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { printf("%d\t",c[i][j]); } printf("\n"); } return 0; }
2.矩阵转置
#include <iostream> #include<stdio.h> using namespace std; int main() { int a[3][3],temp; for(int i=0;i<3;i++) for(int j=0;j<3;j++) { printf("please input a[%d][%d]\n",i,j); scanf("%d",&a[i][j]); } for(int i=0;i<3;i++) for(int j=i;j<3;j++) // 此句是关键 { if(i==j)continue; temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = temp; } for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { printf("%d\t",a[i][j]); } printf("\n"); } return 0; }
3.求矩阵的鞍点(行最大,列最小)
#include <iostream> #include<stdio.h> #define M 3 #define N 4 using namespace std; int main() { int a[M] ; int i,j; int temp = 0; int maxNum,t,k; for(i=0;i<M;i++) for(j=0;j<N;j++) { scanf("%d",&a[i][j]); } for(i=0;i<M;i++) { maxNum = a[0][0]; for(j=i+1;j<N;j++) { if(a[i][j]>a[i][maxNum]) maxNum = j; } for(t=1,k=0;k<M&&t;k++) { if(a[k][maxNum]<a[i][maxNum]) { t = 0; break; } } if(t) printf("%d,%d,%d\n",i,maxNum,a[i][maxNum]); } return 0; }
4.矩阵周边之和问题
#include <iostream> #include<stdio.h> using namespace std; int main() { int M,N; int sum = 0; printf("please input the value of M,N \n"); scanf("%d%d",&M,&N); int a[M] ; printf("please input the value of a[][]"); for(int i=0;i<M;i++) for(int j=0;j<N;j++) { scanf("%d",&a[i][j]); } for(int i=0;i<M;i++) for(int j=0;j<N;j++) { if(i==0||i==M-1) { sum += a[i][j]; } else { if(j==0||j==N-1) sum += a[i][j]; } } printf("%d\n",sum); return 0; }
5.判断矩阵是否为对称阵
#include <iostream> #include<stdio.h> int main() { int a[3][3],flag=1; for(int i=0;i<3;i++) for(int j=0;j<3;j++){ scanf("%d",&a[i][j]); } for(int i=0;i<3;i++) for(int j=i;j<3;j++){ if(a[i][j]!=a[j][i]){ flag = 0; } } if(flag)printf("该矩阵是对称阵"); else{ printf("该矩阵不是对称阵"); } return 0; }
6.判断一个矩阵是另一个矩阵的子矩阵
#include <iostream> #include <cstdio> using namespace std; int a[100][100],b[100][100]; int ma,na,mb,nb; bool check(int x,int y) { bool ans=1; for(int i=0;i<nb;i++) { for(int j=0;j<mb;j++) { if(a[x+i][y+j]!=b[i][j]) { ans=0; break; } } } return ans; } int main() { scanf("%d%d%d%d",&na,&ma,&nb,&mb); for(int i=0;i<na;i++) { for(int j=0;j<ma;j++) { scanf("%d",&a[i][j]); } } for(int i=0;i<nb;i++) { for(int j=0;j<mb;j++) { scanf("%d",&b[i][j]); } } int ans1=0; for(int i=0;i<na;i++) { for(int j=0;j<ma;j++) { if(check(i,j)==1) { ans1=1; break; } } } printf("%d\n",ans1); return 0; }
相关文章推荐
- SpringMVC XML配置
- Spring的PropertyPlaceholderConfigurer应用
- oc语言kvo
- [Java]使用POI读取EXCLE(2007)
- C语言程序设计报告
- python非字符串与字符产链连接
- java堆分析工具jmap
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- SpringMvc 使用poi导入导出Excel
- quartz2实战
- java.lang.NoClassDefFoundError: com/google/common/base/Charsets
- ios学习路线—C语言(函数,数组,字符串,指针)
- java多线程中子线程与主线程进行轮换
- 构造一个简单的MBR分区表
- 深入理解java虚拟机-目录
- GitHub版本控制使用(命令行实际操作图解Git使用方法)
- Python里有趣的列表解析和生成器表达式
- Qt之QtSoap(访问WebService)
- Qt之QtSoap(访问WebService)
- Java实现银行卡号校验