创建一个链表- -| 回首页 | 2005年索引 | - -艺术钟

两个矩阵相乘- -

                                      

将两个3*3的矩阵相乘。

#include<stdio.h>
#include<conio.h>
#define X 3
#define Y 3

int a[X][Y];
int b[X][Y];
int c[X][Y];

void matrix(int b[][X],int c[][Y]);
main()
{
    int i,j,temp;
    clrscr();
    printf("Please input int matrix b[%d][%d]\n",X,Y);
    for(i=0;i<Y;i++)
        for(j=0;j<Y;j++){
        scanf("%d",&temp);
        b[i][j]=temp;
        }
    printf("Please input int matrix c[%d][%d]\n",X,Y);
    for(i=0;i<X;i++)
        for(j=0;j<Y;j++){
        scanf("%d",&temp);
        c[i][j]=temp;
        }
    matrix(b,c);
    printf("Now print resource matrix b[%d][%d]=",X,Y);
    for(i=0;i<X;i++){
        printf("\n");
        for(j=0;j<Y;j++)
        printf("%d ",b[i][j]);
        }
    printf("\n");
    printf("Now print resource matrix c[%d][%d]=",X,Y);
    for(i=0;i<X;i++){
        printf("\n");
        for(j=0;j<Y;j++)
        printf("%d ",c[i][j]);
        }
    printf("\n");
    printf("Now printm multiply results matrix a[%d][%d]=B*C:",X,Y);
    for(i=0;i<X;i++){
        printf("\n");
        for(j=0;j<Y;j++)
        printf("%d ",a[i][j]);
    }
    getch();
    return 0;
}
/********************************************************************/
void matrix(int b[][X],int c[][Y])
{
    int i,j,k,temp;
    for(i=0;i<X;i++)
        for(j=0;j<Y;j++){
        for(k=0;k<Y;k++)
        a[i][j]+=b[i][k]*c[k][j];
    }
}

- 作者: 刘加开 访问统计: 2005年04月15日, 星期五 22:26 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=1207479

回复

- 评论人:chengpeng   2005-07-28 19:49:48 

printf("\ninput the dimesion of the second matrix:");
scanf("%d %d", &i2, &j2);
Randomize();
int s2[i2][j2];
for(a = 0; a 〈 i2; a++)
for(b = 0; b 〈 j2; b++){
s2[a][b] = RandomInteger(1, 15);
}
for(a = 0; a 〈 i2; a++){
for(b = 0; b 〈 j2; b++)
printf("%5d ", s2[a][b]);
putchar('\n');
}
printf("\nThe result of the multiple is:\n");
int s3[i1][j2];
for(i = 0; i 〈 i1; i++)
for(j = 0; j 〈 j2; j++)
s3[i][j] = 0;
for(i = 0; i 〈 i1; i++){
for(j = 0; j 〈 j2; j++){
for(k = 0; k 〈 j1; k++){
s3[i][j] += s1[i][k]*s2[k][j];
}
printf("%5d ",s3[i][j]);
}
putchar('\n');
}
}

- 评论人:chengpeng   2005-07-28 19:48:47 

小弟另有看法:可以适用于任何矩阵的乘法,数字由随机生成,而且是绝对随机。且图案按照矩阵形状输出。请指正,谢谢!

#include 〈stdio.h〉
#include 〈stdlib.h〉
#include "random.h"
#include "random.c"

main()
{
int i, j, k, i1, j1, i2, j2, a, b;
printf("input the dimesion of the first matrix:");
scanf("%d %d", &i1, &j1);
Randomize();
int s1[i1][j1];
for(a = 0; a 〈 i1; a++)
for(b = 0; b 〈 j1; b++){
s1[a][b] = RandomInteger(1, 100);
}
for(a = 0; a 〈 i1; a++){
for(b = 0; b 〈 j1; b++)
printf("%5d ", s1[a][b]);
putchar('\n');
}

评论内容: