首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个矩阵乘法程序的有关问题

2012-02-15 
一个矩阵乘法程序的问题#includestdio.h#definecolumn_12#defineline3#definecolumn_24#definealtogethe

一个矩阵乘法程序的问题
#include   <stdio.h>                                                                                        

#define   column_1   2
#define   line   3
#define   column_2   4
#define   altogether_1   column_1*line
#define   altogether_2   column_2*line
#define   altogether_3   column_1*column_2
void   input_matrix_1(int   *p_matrix_1,int   n)
{
      int   *p;
     
      for(p=p_matrix_1;p <(p_matrix_1+n);p++)
        scanf( "%d ",p);

}

void   show_matrix_1(int   *p_matrix_1,int   n)
{
    int   *p,i=1;
    for(p=p_matrix_1;p <(p_matrix_1+n);p++,i++)
    {
        printf( "%4d ",*p);
        if(i%line==0)     printf( "\n ");
    }
}

void   input_matrix_2(int   *p_matrix_2,int   n)
{
    int   *p;
     
      for(p=p_matrix_2;p <(p_matrix_2+n);p++)
        scanf( "%d ",p);
}
void   show_matrix_2(int   *p_matrix_2,int   n)
{
    int   *p,i=1;
    for(p=p_matrix_2;p <(p_matrix_2+n);p++,i++)
    {
        printf( "%4d ",*p);
        if(i%column_2==0)     printf( "\n ");
    }
}

void   mul_matrix(int   *p_matrix_1,int   *p_matrix_2,int   *p_matrix_3)
{
    int   i,j,k;
    for(i=1;i <=column_1;i++)
        for(j=1;j <=column_2;j++)
            for(k=1;k <=line;k++)
                *(p_matrix_3+column_1*(i-1)+j-1)=*(p_matrix_1+line*(i-1)+k-1)+*(p_matrix_1+(k-1)*column_2+j-1);
                   
}

void   show_mul_matrix(int   *p_matrix_3,int   n)
{  
    int   *p,i=1;
    printf( "\n\n\n\n ");
    for(p=p_matrix_3;p <(p_matrix_3+n);p++,i++)
    {
        printf( "%8d ",*p);
        if(i%column_2==0)     printf( "\n ");
    }
}
void   main()
{
    int   *p_matrix_1,*p_matrix_2,*p_matrix_3;
    input_matrix_1(p_matrix_1,altogether_1);
    show_matrix_1(p_matrix_1,altogether_1);
    input_matrix_2(p_matrix_2,altogether_2);
    show_matrix_2(p_matrix_2,altogether_2);
    mul_matrix(p_matrix_1,p_matrix_2,p_matrix_3);
    show_mul_matrix(p_matrix_3,altogether_3);

}

这个程序语法似乎没有什么问题,个人以为是乘法的那一条程序有问题,但是有什么问题呢?又应该怎么写呢?

[解决办法]
使用指针,要分配内存,进行初始化
[解决办法]
矩阵用2维数组比较合适吧。

热点排行