矩阵操作
来源:互联网 发布:网络布线桥架 编辑:程序博客网 时间:2024/05/17 21:28
#include<stdio.h>
int m1,n1,m2,n2;
int Plus(int a[][101],int b[][101])//矩阵加法函数
{
int i,j;
for(i=0; i<m1; i++)
{
for(j=0; j<n1; j++)
{
a[i][j]=a[i][j]+b[i][j];
}
}
printf("矩阵a和b相加得:\n");
for(i=0; i<m1; i++)
{
for(j=0; j<n1; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int Sub(int a[][101],int b[][101])//矩阵减法函数
{
int i,j,c[101][101];
for(i=0; i<m1; i++)
{
for(j=0; j<n1; j++)
{
a[i][j]=a[i][j]-b[i][j];
}
}
printf("矩阵a和b相减得:\n");
for(i=0; i<m1; i++)
{
for(j=0; j<n1; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int Multi(int a[][101],int b[][101])//矩阵相乘函数
{
int i,j,k,c[101][101];
for(i=0; i<m1; i++)
{
for(j=0; j<n2; j++)
{
c[i][j]=0;
for(k=0; k<m2; k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
printf("矩阵a和b相乘得:\n");
for(i=0; i<m1; i++)
{
for(j=0; j<n2; j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}
}
void Swap(int p[][101],int a,int b)//矩阵转置函数
{
int i,j,t;
for(i=0; i<a; i++)
{
if(a<b||a==b)
for(j=i+1; j<b; j++)
{
t=p[i][j];
p[i][j]=p[j][i];
p[j][i]=t;
}
else
for(j=0; j<i; j++)
{
t=p[i][j];
p[i][j]=p[j][i];
p[j][i]=t;
}
}
for(i=0; i<b; i++)
{
for(j=0; j<a; j++)
{
printf("%d ",p[i][j]);
}
printf("\n");
}
}
Fix(int a[][101],int b[][101])
{
int i,j,s,x,y;
{
printf("请输入要更改的矩阵:");
getchar();
char q=getchar();
if(q=='a')
{
printf("请输入要更改的元素下标:");
scanf("%d%d",&x,&y);
printf("请输入要更改成的值:");
scanf("%d",&a[x][y]);
printf("更改成功!\n");
for(i=0; i<m1; i++)
{
for(j=0; j<n1; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
else if(q=='b')
{
printf("请输入要更改的元素下标:");
scanf("%d%d",&x,&y);
printf("请输入要更改成的值:");
scanf("%d",&b[x][y]);
printf("更改成功!\n");
for(i=0; i<m1; i++)
{
for(j=0; j<n1; j++)
{
printf("%d ",b[i][j]);
}
printf("\n");
}
}
else printf("输入错误!\n");
}
}
int main()
{
int a[101][101],b[101][101];
int i,j,s,x,y;
printf("请输入矩阵a的行数和列数m1 n1\n");
scanf("%d%d",&m1,&n1);
printf("请输入%d*%d矩阵a(每行以回车结束):\n",m1,n1);
for(i=0; i<m1; i++)
{
for(j=0; j<n1; j++)
{
scanf("%d",&a[i][j]);
}
}
printf("请输入矩阵b的行数和列数m2 n2:\n");
scanf("%d%d",&m2,&n2);
printf("请输入%d*%d矩阵b(每行以回车结束):\n",m2,n2);
for(i=0; i<m2; i++)
{
for(j=0; j<n2; j++)
{
scanf("%d",&b[i][j]);
}
}
while(1)
{
printf("1、对指定元素赋值更改\n");
printf("2、输出两矩阵的加、减、乘、转置运算\n0、退出\n");
scanf("%d",&s);
if(s==1)
Fix(a,b);
else if(s==2)
{
if(m1==m2&&n1==n2)
{
Plus(a,b);
Sub(a,b);
}
else
printf("这两个矩阵无法进行加减\n");
if(n1==m2)
Multi(a,b);
else printf("这两个矩阵无法相乘\n");
printf("矩阵a转置后结果为:\n");
Swap(a,m1,n1);
printf("矩阵b转置后结果为:\n");
Swap(b,m2,n2);
}
else if(s==0)break;
else
printf("您输入的序号不合法!");
}
return 0;
}
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵操作
- 矩阵的一些操作
- 矩阵和操作
- 矩阵类型及其操作
- OpenCV----矩阵操作
- OpenCV 矩阵操作 CvMat
- OPENCV矩阵操作
- opencv-矩阵操作总结
- matlab矩阵操作大全
- 分享一个自定义的SlidingDrawer,可控大小。
- UML 类图. 对象图. 接口图. 用例图 .包,参与者. 依赖关系. 泛化/继承关系. 关联关系 .聚合/聚集关系. 实现关系 组合关系。
- android init.rc中的service
- A. Comparing Strings
- sgu 174 Walls (并查集)
- 矩阵操作
- 利用 Chrome 的打印功能将网页保存为 PDF
- 发布复杂的WebService
- 直线拟合,图像组件轮廓的检测和计算机描述
- 【xinfanqie】笔者支招:熟知Word打印的六大技巧
- Java窗体设计中控件的值自动清除的原因与解决方法
- 宏定义与使用分析
- linux tar 加压、压缩命令详解
- Jena进阶(二)本体推理规则(Rules)的介绍