以下为矩阵乘法的一段C语音代码,请在此代码上按要求修改实现下述功能,提交修改后的代码和运行结果截图 1. 将a矩阵修改为4行3列的二维数组,元素为自己的12位学号每位数字按顺序存储; 2. b矩阵为a矩阵的转置; 3. 计算c=a*b; 4. 计算前先输出a矩阵,之后输出b矩阵,c矩阵,对齐方式为每个元素占5字符; 5. 不允许增加新的变量,尽量使用已有的代码,修改时做尽可能少的改动。 #include "stdio.h" int main() { int a[4][5]={1,2,0,0,0, 0,1,3,0,0, 0,0,1,4,0, 0,0,0,1,5,}; int b[5][5]={1,0,0,0,0, 0,1,0,0,0, 0,0,1,0,0, 0,0,0,1,0, 0,0,0,0,1}; int c[5][5]={0}; int i,j,k; for(i=0;i<4;i++) for(j=0;j<5;j++) for(k=0;k<5;k++) c[i][j]=c[i][j]+a[i][k]*b[k][j]; for(i=0;i<4;i++) {for(j=0;j<5;j++) printf("%d",c[i][j]); printf("\n"); } return 0; }
时间: 2023-06-07 10:10:48 浏览: 75
基于c语言实现的矩阵乘法
题目描述:
以下为矩阵乘法的一段C代码,请在此代码上按要求修改实现下述功能,提交修改后的代码和运行结果截图:
将a矩阵修改为4行3列的二维数组,元素为自己的12位学号每位数字按顺序存储;
b矩阵为a矩阵的转置;
计算c=a*b;
计算前先输出a矩阵,之后输出b矩阵,c矩阵,对齐方式为每个元素占5字符;
不允许增加新的变量,尽量使用已有的代码,修改时做尽可能少的改动。
代码:
```
#include<stdio.h>
#define N 3
void mul(int a[][N],int b[][N],int c[][N])
{
int i,j,k;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
c[i][j]=0;
for(k=0;k<N;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
}
void main()
{
int i,j,a[3][3]={{1,2,3},{4,5,6},{7,8,9}},b[3][3]={{1,2,3},{1,2,3},{1,2,3}},c[3][3];
mul(a,b,c);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%5d",b[j][i]);
}
printf("\n");
}
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%5d",c[i][j]);
}
printf("\n");
}
}
```
解题思路:
1.首先根据题目要求,将a矩阵修改为4行3列的二维数组,元素为自己的12位学号每位数字按顺序存储。
2.再根据题目要求,将b矩阵设为a矩阵的转置,这里使用了一个中间变量temp,可以少定义一个变量,又可以充分利用已有的代码。
3.修改c=a*b的计算,使之符合题目要求。
4.输出a、b、c矩阵时需要按照每个元素占5个字符的格式对齐。
代码如下:
阅读全文