矩阵乘法

时限:1000ms 内存限制:10000K  总时限:3000ms

描述: 对给定的两个“实数”矩阵,输出它们的乘积。

输入: 输入文件包括多组测试用例,以“0 0 0”标志文件结束,该行无需处理。 每个测试用例第一行为三个正整数m,n,k (1<=m,n,k<=10 ),表示以下m 行为一个m*n 的矩阵A ,再接下来的n 行为n*k 的矩阵B 。每行各元素间用一个空格隔开。

输出: 输出矩阵A 与矩阵B 的乘积C=A*B 。C 中元素一律“四舍五入”保留一位小数。 每个测试用例之间输出一个空行。

输入样例:

2 3 4
1 2 3
4 5 6
1 2 3 4
5 6 7 8
9 10 11 12
1 2 4
2 4
1.1 1.2 1.3 1.4


2.1 2.2 2.3 2.4
0 0 0

输出样例:

38.0 44.0 50.0 56.0

83.0 98.0 113.0 128.0

 

10.6 11.2 11.8 12.4

#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,ii;
    int m,n,k;
    scanf("%d%d%d",&m,&n,&k);
    while(m!=0&&n!=0&&k!=0)
    {
          double A[10][10]={0},B[10][10]={0},C[10][10]={0};
          for(i=0;i<m;i++)
             for(j=0;j<n;j++)
                scanf("%lf",&A[i][j]);
          for(i=0;i<n;i++)
             for(j=0;j<k;j++)
                scanf("%lf",&B[i][j]);

          for(i=0;i<m;i++)
             for(j=0;j<k;j++)
             {
                for(ii=0;ii<n;ii++)
                   C[i][j]+=A[i][ii]*B[ii][j];
             }
          for(i=0;i<m;i++)
          {
             for(j=0;j<k-1;j++)
                printf("%.1lf ",C[i][j]);
             printf("%.1lf\n",C[i][k-1]);
          }
          printf("\n");
          scanf("%d%d%d",&m,&n,&k);
    }    
    return 0;
}

 

posted on 2012-07-10 13:36  IThinktan  阅读(432)  评论(0编辑  收藏  举报

导航