22年8月份花了三周时间快速过了一遍某站一位大佬的视频,前几天刷朋友圈时偶然看见一位道友写了个矩阵乘积的计算器,瞬间给了我灵感,直接开始操作。
理想很丰满,现实很扯淡,刚开始写了个4*4的矩阵的乘积,仅仅几行代码搞了我1个小时,不过最后还是写了出来。
然后对代码改进了一下(直接花了我3小时)得到了任意矩阵的乘积计算。
当我准备休息的时候才猛地想起,小数怎么办???
于是又赶紧打开代码,一个一个的改成double类型,多次修改后程序终于可以正常跑起来了
最后简单总结一下 C语言学习总的来说还是不能靠看课,主要是自己实操,一些问题瞬间就显示出来了,学了这么久的C我也是第一次开始尝试自己写程序(应该算一个程序叭?)对于新手来说确实是满满的成就感,所以有朋友和我一样刚开始学C我的建议是:直接开始敲代码,问题在代码中找。
下面是我的代码,希望能有大佬还能改进一下,或者指出一些问题
#include <stdio.h>
#include <stdlib.h>
int main(void){
int i, j, P, Q, M, n, p = 0, q = 0, m = 0;
double a, b, multiply;
double sum = 0,NUM = 0;
double shuzu_A[100][100];
double shuzu_B[100][100];
double result[100][100];
printf("您要计算的第一个矩阵有多少行?多少列?(用空格隔开)");
scanf("%d%d", &P, &Q);
printf("您要计算的第二个矩阵有多少列?");
scanf("%d",&M);
p = P, q = Q, m = M;
printf("请输入该矩阵A:\n");
for(i = 0; i < p; i++){
for(j = 0; j < q; j++){
scanf("%lf",&shuzu_A[i][j]);
}
}
printf("请再输入该矩阵B:\n");
for(i=0;i<q;i++){
for(j=0;j<m;j++){
scanf("%lf",&shuzu_B[i][j]);
}
}
printf("您输入的矩阵A为:\n");
for(i=0;i<p;i++){
for(j=0;j<q;j++){
printf("%lf",shuzu_A[i][j]);
putchar(' ');
}
printf("\n");
}
printf("您输入的矩阵B为:\n");
for(i=0;i<q;i++){
for(j=0;j<m;j++){
printf("%lf",shuzu_B[i][j]);
putchar(' ');
}
printf("\n");
}
printf("A*B的结果为:\n");
for(i=0;i<p;i++){
for(n=0;n<m;n++){
for(j=0;j<q;j++){
a=shuzu_A[i][j];
b=shuzu_B[j][n];
multiply=a*b;
sum=multiply+sum;
}
result[i][n]=sum;
sum=NUM;
}
}
for(i=0;i<p;i++){
for(j=0;j<m;j++){
printf("%lf",result[i][j]);
putchar(' ');
}
printf("\n");
}
system("pause");
return 0;
}