C 语言学习记录-OJ-6

OJ 系统 C 语言练习第六天

第一题

原题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "stdio.h"

int main(int argc, char const *argv[])
{
int m,n,s;
while(scanf("%d%d%d", &m,&n,&s)!=EOF){
int a[m][n];
int b[n][s];
int c[m][s];
for(int i = 0; i < m; i++){
for(int y = 0; y < n; y++){
scanf("%d", &a[i][y]);
}
}
for(int i = 0; i < n; i++){
for(int y = 0; y < s; y++){
scanf("%d", &b[i][y]);
}
}
//最重要的计算
//用A的第i行分别和B的第j列的各个元素相乘求和,求得C的第i行j列的元素,这种算法中,B的访问是按列进行访问的.
for(int i = 0; i < m; i++){
for(int y = 0; y < s; y++){
int d = 0;
for(int k = 0; k < n; k++){
//注意这里
d = d + a[i][k] * b[k][y];
}
c[i][y] = d;
}
}
for(int i = 0; i < m; i++){
for(int y = 0; y < s; y++){
printf("%d", c[i][y]);
if(y < s-1){
printf(" ");
}
}
printf("\n");
}
}
return 0;
}