
这个17题,用c语言解答,尽量简洁直观一点,便于操作.并且源程序要有适当的注释,使程序容易阅读。
关注
#include<stdio.h>
void input(int n,int m,int t[][m])
{
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
scanf("%d",&t[i][j]);
}
}
}
void put(int n,int m,int t[][m])
{
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
printf("%d ",t[i][j]);
}
printf("\n");
}
printf("\n");
}
void trans(int n,int m,int t1[][m],int t2[][n])
{
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
t2[i][j]=t1[j][i];
}
}
}
void add(int n,int m,int t1[][m],int t2[][m])
{
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
t1[i][j]+=t2[i][j];
}
}
}
void sub(int n,int m,int t1[][m],int t2[][m])
{
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
t1[i][j]-=t2[i][j];
}
}
}
void mul(int n,int m,int q,int t1[][m],int t2[][q],int t3[][q])
{
for(int i=0; i<n; i++)
{
for(int j=0; j<q; j++)
{
t3[i][j]=0;
}
}
for(int i=0; i<n; i++)
{
for(int j=0; j<q; j++)
{
for(int k = 0; k < m; k++){
t3[i][j] += t1[i][k] * t2[k][j];
}
}
}
}
int main()
{
int n,m;
while(1){
printf("1,转置\n");
printf("2,加法\n");
printf("3,减法\n");
printf("4,乘法\n");
printf("按任意键退出\n");
int option;scanf("%d",&option);
if(option==1)
{
printf("输入矩阵1行数:");
scanf("%d",&n);
printf("输入矩阵1列数:");
scanf("%d",&m);
printf("输入矩阵:\n");
int t1[n][m];
int t2[m][n];
input(n,m,t1);
trans(n,m,t1,t2);
put(m,n,t2);
}
else if(option==2)
{
printf("输入矩阵1行数:");
scanf("%d",&n);
printf("输入矩阵1列数:");
scanf("%d",&m);
printf("输入矩阵:\n");
int t1[n][m];
input(n,m,t1);
printf("输入矩阵2行数:");
scanf("%d",&n);
printf("输入矩阵2列数:");
scanf("%d",&m);
printf("输入矩阵:\n");
int t2[n][m];
input(n,m,t2);
add(n,m,t1,t2);
printf("--------\n");
put(n,m,t1);
}
else if(option==3)
{
printf("输入矩阵1行数:");
scanf("%d",&n);
printf("输入矩阵1列数:");
scanf("%d",&m);
printf("输入矩阵:\n");
int t1[n][m];
input(n,m,t1);
printf("输入矩阵2行数:");
scanf("%d",&n);
printf("输入矩阵2列数:");
scanf("%d",&m);
printf("输入矩阵:\n");
int t2[n][m];
input(n,m,t2);
sub(n,m,t1,t2);
printf("--------\n");
put(n,m,t1);
}
else if(option==4)
{
int x1,x2,x3,p,q;
printf("输入矩阵1行数:");
scanf("%d",&n);
printf("输入矩阵1列数:");
scanf("%d",&m);
printf("输入矩阵:\n");
int t1[n][m];
input(n,m,t1);
printf("输入矩阵2行数:");
scanf("%d",&p);
printf("输入矩阵2列数:");
scanf("%d",&q);
printf("输入矩阵:\n");
int t2[p][q];
int t3[n][q];
input(p,q,t2);
mul(n,m,q,t1,t2,t3);
printf("--------\n");
put(n,q,t3);
}
else
{
return 0;
}
}
}