|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下。我有个问题一直解决不了, 就是 m和j的同时取值问题。 希望高手相助一下,帮忙改一下代码。 或者说一下改的方式 , 谢谢
- #include <stdio.h>
- int main()
- {
- int A[2][3] = {{1, 2, 3}, {4, 5, 6}};
- int B[3][2] = {{1, 4}, {2, 5}, {3, 6}};
- int C[2][2] = {0};
- int i, j , m, n;
-
- // 两矩阵相乘 A[i][j]*B[m][n]= C[i][n] 不管结果 先只管中间过程
- for(i = 0; i < 2; i++) // 以A为第一项 进行计算
- {
- for(m = 0; m < 3; m++) // B的行数依次选取
- {
- if (m = 0) // 问题来了,如果要让这个程序正常运行,那么 m和j必须同时改变
- {
- j = 0;
- }
- else
- {
- j += 1;
- } // 我想的是下面for循环结束后 直接到上面的for循环 取 m = 0
- // 事与愿违, 是个死循环,直接读if-else 语句了
- for( n=0; n<2; n++)
- {
- C[i][n] += A[i][j] * B[m][n];
- printf("C %d %d = %d %d \n", i, n, C[i][n], j);
-
- if( (i == 1 && j ==2) == 1)
- {
- goto FINDIT;
- }
- }
- }
- }
- FINDIT: printf("C %d %d = %d\n", i, n, C[i][n]);
-
- return 0;
- }
复制代码
哪有你想的那么麻烦,j和m本来就一个是同一个量啊。
外两层循环就是C的行和列,最内层循环就是求C对应的值
- #include <stdio.h>
- int main()
- {
- int A[2][3] = {{1, 2, 3}, {4, 5, 6}};
- int B[3][2] = {{1, 4}, {2, 5}, {3, 6}};
- int C[2][2] = {0};
- int i, j , m, n;
-
- for(i = 0; i < 2; i++)
- {
- for( n=0; n<2; n++)
- {
- for(j=0;j<3;j++)
- C[i][n] += A[i][j] * B[j][n];
- printf("C[%d][%d] = %d\n", i, n, C[i][n]);
- }
- }
- return 0;
- }
复制代码
|
评分
-
查看全部评分
|