| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3478 人关注过本帖
标题:我用模块化来求一个3x3的整型矩阵的对角线元素之和,就是求不了,求帮助!
只看楼主 加入收藏
杂召流金
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:32
专家分:10
注 册:2012-11-24
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
我用模块化来求一个3x3的整型矩阵的对角线元素之和,就是求不了,求帮助!
#include<stdio.h>
void main()
{
    int _sum(int a[3][3]);
    int a[3][3];
    int b,i,j;
    printf("请输入整形矩阵:\n");
    for(i=0;i<3;i++)
    for(j=0;j<3;j++)
    scanf("%d",&a[3][3]);
    b=_sum(a);
    printf("对角线之和是%d\n",b);
}
    int _sum(int a[3][3])
{
    int n=0,i,b,j;
    for(i=0;i<3;i++)
    for(j=0;j<3;j++)
    {
            if(i==j||i+j==2)
    n+=a[i][i]+a[i][3-1-i];
    b=n;
    }
        return b;
}
搜索更多相关主题的帖子: 对角线 矩阵 元素 
2012-12-17 19:40
上苍之手
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:314
专家分:1451
注 册:2012-11-24
收藏
得分:3 
&a那里不是应该是&a[i][j]吗?
收到的鲜花

扬起风帆,从此自信远航。。。。。
2012-12-17 19:45
杂召流金
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:32
专家分:10
注 册:2012-11-24
收藏
得分:0 
回复 2楼 上苍之手
我觉得一样的,因为&a[3][3]只是说明有几个数,怎么排列而已,还可以另外定义i,j
2012-12-17 21:52
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:3 
以下是引用杂召流金在2012-12-17 21:52:45的发言:

我觉得一样的,因为&a[3][3]只是说明有几个数,怎么排列而已,还可以另外定义i,j

那你就错了
在定义的时候是int a[3][3];表示一个3*3数组,但在使用的时候a[3][3]就表示仅一个元素,而且这个元素越界,对越界元素写值,肯定会报错

int改写成&a[i][j]
收到的鲜花

小小战士,战士中的战斗机!
2012-12-17 22:02
杂召流金
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:32
专家分:10
注 册:2012-11-24
收藏
得分:0 
回复 4楼 小小战士
精辟啊,我怎么没想到,灰常感谢小小战士
2012-12-17 22:57
杂召流金
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:32
专家分:10
注 册:2012-11-24
收藏
得分:0 
还是不对。。。。。。。。。。。。。。结果变大了
2012-12-17 22:59
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
那就你是sum问题了

[ 本帖最后由 小小战士 于 2012-12-17 23:36 编辑 ]
收到的鲜花

小小战士,战士中的战斗机!
2012-12-17 23:19
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
#include<stdio.h>
#define N 4
void main()
{
    int sum(int a[N][N]);
    int a[N][N];
    int b,i,j;
    printf("请输入整形矩阵(%d*%d):\n",N,N);
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            scanf("%d",&a[i][j]);
        b=sum(a);
        printf("对角线之和是%d\n",b);
}
int sum(int a[N][N])
{
    int i,b=0;
    for(i=0;i<N;i++)
        b+=a[i][i]+a[i][N-1-i];
    if(N%2!=0)
    b=b-a[N/2][N/2];
    return b;
}

图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 小小战士 于 2012-12-17 23:35 编辑 ]
收到的鲜花

小小战士,战士中的战斗机!
2012-12-17 23:32
杂召流金
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:32
专家分:10
注 册:2012-11-24
收藏
得分:0 
if(N%2!=0)
     b=b-a[N/2][N/2];
     return b;
 这部用来干嘛的
2012-12-17 23:51
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
以下是引用杂召流金在2012-12-17 23:51:03的发言:

if(N%2!=0)
     b=b-a[N/2][N/2];
     return b;
 这部用来干嘛的

这部分是如果N是奇数那么就要减去中间多加了一次的a[N/2][N/2]
收到的鲜花

小小战士,战士中的战斗机!
2012-12-18 00:17
快速回复:我用模块化来求一个3x3的整型矩阵的对角线元素之和,就是求不了,求帮 ...
数据加载中...
 
   



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

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