| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 436 人关注过本帖
标题:n*n 的方阵主对角求和,并测试一个主函数,我自己编写了一个程序,编译无措 ...
只看楼主 加入收藏
t120653918
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-7-18
结帖率:100%
收藏
 问题点数:0 回复次数:3 
n*n 的方阵主对角求和,并测试一个主函数,我自己编写了一个程序,编译无措,应该是逻辑错误么?
我执行之后,输入了但是没有得出正确的结果,是系统给出的默认值~
#include<stdio.h>
#include<iostream.h>
#define n 2
void qiuhe(int sum)
{
    int i,j;
    int s[n][n];
    for(i=0;i<=n;i++)
        for(j=0;j<=0;j++)
            scanf("%d",&s[i][j]);
        for(i=0;i<=n;i++)
        {
            sum+=s[i][i];
        }
        printf("%d",sum);
}

void main()
{
    int sum=0;
    qiuhe(sum);
}
搜索更多相关主题的帖子: include 
2014-09-03 10:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
void qiuhe(int sum)
改为
void qiuhe(int& sum)

还有 <= 改为 < 等等

但,你的代码问题太多太多了,我建议你先休息一段时间,把已学的“知识”全忘掉了,然后换老师换教科书。


[ 本帖最后由 rjsp 于 2014-9-3 10:21 编辑 ]
2014-09-03 10:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
C风格的C++代码这么写
程序代码:
#include <cstdio>

const size_t N = 2;

int sum_diagonal( const int s[N][N] )
{
    int sum = 0;
    for( size_t i=0; i!=N; ++i )
        sum += s[i][i];
    return sum;
}

int main()
{
    int s[N][N];
    for( size_t i=0; i!=N; ++i )
        for( size_t j=0; j!=N; ++j )
            scanf( "%d", &s[i][j] );

    int sum = sum_diagonal( s );
    printf( "%d", sum );

    return 0;
}

或许有人会将二维数组当成一维数组来处理,这样通用性提高,如下
程序代码:
#include <cstdio>

int sum_diagonal( const int* s, size_t n )
{
    int sum = 0;
    for( size_t i=0; i!=n; ++i )
        sum += s[i*n+i];
    return sum;
}

int main()
{
    const size_t N = 2;

    int s[N][N];
    for( size_t i=0; i!=N; ++i )
        for( size_t j=0; j!=N; ++j )
            scanf( "%d", &s[i][j] );

    int sum = sum_diagonal( &s[0][0], N );
    printf( "%d", sum );

    return 0;
}
但这一行为在C标准中找不到依据,你可以这么做,但尽量别这么做
C++可以用模板来处理这一点
程序代码:
#include <iostream>

template<typename T, size_t N>
T sum_diagonal( const T (&s)[N][N] )
{
    T sum = 0;
    for( size_t i=0; i!=N; ++i )
        sum += s[i][i];
    return sum;
}

using namespace std;

int main()
{
    int s[2][2];
    for( size_t i=0; i!=sizeof(s)/sizeof(s[0]); ++i )
        for( size_t j=0; j!=sizeof(s[0])/sizeof(s[0][0]); ++j )
            cin >> s[i][j];

    int sum = sum_diagonal( s );
    cout << sum << endl;

    return 0;
}

2014-09-03 10:44
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
每次看r版主的帖子都能学到东西
2014-09-03 11:35
快速回复:n*n 的方阵主对角求和,并测试一个主函数,我自己编写了一个程序,编译 ...
数据加载中...
 
   



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

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