注册 登录
编程论坛 C++教室

n*n 的方阵主对角求和,并测试一个主函数,我自己编写了一个程序,编译无措,应该是逻辑错误么?

t120653918 发布于 2014-09-03 10:06, 439 次点击
我执行之后,输入了但是没有得出正确的结果,是系统给出的默认值~
#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);
}
3 回复
#2
rjsp2014-09-03 10:17
void qiuhe(int sum)
改为
void qiuhe(int& sum)

还有 <= 改为 < 等等

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


[ 本帖最后由 rjsp 于 2014-9-3 10:21 编辑 ]
#3
rjsp2014-09-03 10:44
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;
}

#4
zklhp2014-09-03 11:35
每次看r版主的帖子都能学到东西
1