标题:矩阵倒置和相乘,没调用函数的编出来了,可需要函数调用的还是不会啊
只看楼主
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
已结贴  问题点数:20 回复次数:2 
矩阵倒置和相乘,没调用函数的编出来了,可需要函数调用的还是不会啊
从键盘输入一个4*4的矩阵A,编程求
    (1).矩阵A的两对角线元素之和;
    (2).矩阵A的转置;
    (3).从键盘输入另一个4*4的矩阵B,计算矩阵A和B的乘积.              
    以上三个问题要求用函数编写.

int main()
{
    int a[4][3],b[3][4];
    int c[4][4];//保存两矩阵的乘积
    int m,n;
    int i=0,j=0;

    printf("请输入4*3矩阵:\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<3;j++)
        {
            scanf("%d",&a[i][j]);
        }
        printf("\n");
    }


    printf("输出原矩阵\n");
    for(i=0;i<4;i++)
    {    for(j=0;j<3;j++)
        {
            printf("%5d",a[i][j]);
            
        }
        printf("\n");
    }

//将原4*3矩阵倒置
    for(i=0;i<4;i++)
        for(j=0;j<3;j++)
        {
            b[j][i]=a[i][j];
        }
    printf("将倒置后的矩阵输出\n");
    for(i=0;i<3;i++)
    {    for(j=0;j<4;j++)
        {
            printf("%5d",b[i][j]);
            
        }
        printf("\n");
    }
//计算4*3矩阵和3*4矩阵的乘积,c[i][j]=a[i][1]*b[1][j]+.....+a[i][n]*b[n][j]
    for(m=0;m<4;m++)
        for(n=0;n<4;n++)
        {   
                c[m][n]=0;        //初始化矩阵
                for(i=0;i<3;i++)            //求c[m][n]的值
                {        
                    c[m][n]=c[m][n]+a[m][i]*b[i][n];
                }

        }
//将矩阵的乘积输出
    printf("将两矩阵的乘积输出\n");
    for(i=0;i<4;i++)
    {    for(j=0;j<4;j++)
        {
            printf("%5d",c[i][j]);
            
        }
        printf("\n");
    }
}


关于不用函数的我还有些问题,为什这样输入矩阵不行,我发现a[i][j]的输出永远都是1

int a[4][4],b[4][4];
    int i=0,j=0;
    int n;
    printf("请输入矩阵:\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            a[i][j]=scanf("%d",&n);printf("%d\n",n);    //发现a[i][j]的输出永远都是1
            printf("%d\n",a[i][j]);
        }
        printf("\n");
    }
   
}
第二个问题
我希望是按照矩阵的形式输入而不是连续敲下12个数字,请问怎么编程
第三个问题,
这用函数编写我还是不会啊,我对二维数组和函数参数了解的不够深入
搜索更多相关主题的帖子: 对角线 键盘 元素 
2015-03-15 22:17
lxmaint
Rank: 2
等 级:论坛游民
威 望:1
帖 子:20
专家分:74
注 册:2015-3-15
得分:20 
1、a[i][j]接收的scanf的返回值,因为你只输入了1个数字,成功了,所以返回值是1,你就存进去了1.
2、方法也多,比如配置文件。如果要临时一次性输入,可以读入字符串,程序里再对字符串处理
3、最直接的就是传递指针做参数,如果不知道指针怎么用,就去查下数组怎么做为参数传递,一样可以。
2015-03-16 00:27
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
得分:0 
回复 2楼 lxmaint
谢谢,明白了,我没用指针做了一下,也可以
2015-03-16 10:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-442681-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017766 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved