用c语言完成程序,设计实现函数void f(int a[],int b[],int c[],int m,int n,int t),其功能为计算给定的两个整型数组(一个为m行n列,一个为n行t列)的乘积矩阵。 函数接口定义: void f(int a[],int b[],int c[],int m,int n,int t);/*功能为计算给定的矩阵a(m行n列)和矩阵b(n行t列)的乘积矩阵c*/ 裁判测试程序样例: #include <stdio.h> /* 请在这里填写答案 */ int main(){ int i,j,a[3][4],b[4][3],c[3][3]; for(i=0; i<3; i++) for(j=0; j<4; j++) scanf("%d",&a[i][j]); for(i=0; i<4; i++) for(j=0; j<3; j++) scanf("%d",&b[i][j]); f(a[0],b[0],c[0],3,4,3); for(i=0; i<3; i++){ for(j=0; j<3; j++) printf("%5d",c[i][j]); printf("\n"); } } 输入格式: 首先输入整型数组a[3][4]的各元素的值,再输入整型数组b[4][3]的各元素的值,数据中间以空格为间隔。 输出格式: 对于输入的a数组和b数组,输出a和b的乘积矩阵c[3][3],其中每个元素显示格式为:占5列,右对齐。
时间: 2023-09-26 12:08:58 浏览: 658
C语言程序设计-请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M
5星 · 资源好评率100%
实现代码如下:
```c
#include <stdio.h>
void f(int a[], int b[], int c[], int m, int n, int t) {
int i, j, k;
for (i = 0; i < m; i++) {
for (j = 0; j < t; j++) {
int sum = 0;
for (k = 0; k < n; k++) {
sum += a[i * n + k] * b[k * t + j];
}
c[i * t + j] = sum;
}
}
}
int main() {
int i, j, a[3][4], b[4][3], c[3][3];
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &b[i][j]);
}
}
f(a[0], b[0], c[0], 3, 4, 3);
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%5d", c[i][j]);
}
printf("\n");
}
return 0;
}
```
首先,在 `f` 函数中,使用三重循环计算乘积矩阵。循环变量 `i` 和 `j` 分别代表矩阵 `c` 的行和列,循环变量 `k` 代表矩阵 `a` 的列和矩阵 `b` 的行。在循环中,使用变量 `sum` 累加矩阵 `a` 和矩阵 `b` 中对应元素的乘积,最后将结果存入矩阵 `c` 中。
然后,在 `main` 函数中,定义整型数组 `a`、`b` 和 `c` 分别表示输入的矩阵 `a`、`b` 和输出的矩阵 `c`。使用两重循环分别读入矩阵 `a` 和矩阵 `b` 的各元素的值。接着,调用 `f` 函数计算矩阵乘积,并输出结果。
在输出乘积矩阵时,使用两重循环遍历矩阵 `c`,每个元素占 5 列,右对齐。
阅读全文