关于C++二维数组开数组时运行错误的问题

jasonlyuchina 2017-08-11 12:04:55
描述
2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。

输入输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。输出输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。样例输入3
1 0 3
3 1 0
0 3 0
样例输出4 4 3 11
我输入样例后,输出是5 4 3 12;愿大神帮助,2333
代码(G++):
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,a[n][3],e,b,c,d=0,g=0,f=0,sum;
scanf("%d",&n);
for(e=1;e<=n;e++)
{
for(b=1;b<=3;b++)
{
scanf("%d",&c);
a[e][b]=c;
}
}
for(e=1;e<=n;e++)
{
d+=a[e][1];
}
for(e=1;e<=n;e++)
{
g+=a[e][2];
}
for(e=1;e<=n;e++)
{
f+=a[e][3];
}
sum=d+g+f;
printf("%d %d %d %d",d,g,f,sum);
}
...全文
362 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-11
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <stdlib.h>
int **newarr2d(int rows,int cols) {
    int **p,i;

    p=new int *[rows];
    if (NULL==p) exit(1);
    for (i=0;i<rows;i++) {
        p[i]=new int[cols];
        if (NULL==p[i]) exit(1);
    }
    return p;
}
void deletearr2d(int **p,int rows) {
    int i;

    for (i=0;i<rows;i++) {
        delete[] p[i];
    }
    delete[] p;
}
int main() {
    int **arr2d,i,j,r,c;

    r=4;
    c=5;
    //在堆中开辟一个4×5的二维int数组
    arr2d=newarr2d(r,c);
    for (i=0;i<r;i++) {
        for (j=0;j<c;j++) {
            arr2d[i][j]=i*c+j;
        }
    }
    for (i=0;i<r;i++) {
        for (j=0;j<c;j++) {
            printf(" %2d",arr2d[i][j]);
        }
        printf("\n");
    }
    deletearr2d(arr2d,r);

    r=6;
    c=3;
    //在堆中开辟一个6×3的二维int数组
    arr2d=newarr2d(r,c);
    for (i=0;i<r;i++) {
        for (j=0;j<c;j++) {
            arr2d[i][j]=i*c+j;
        }
    }
    for (i=0;i<r;i++) {
        for (j=0;j<c;j++) {
            printf(" %2d",arr2d[i][j]);
        }
        printf("\n");
    }
    deletearr2d(arr2d,r);

    return 0;
}
//  0  1  2  3  4
//  5  6  7  8  9
// 10 11 12 13 14
// 15 16 17 18 19
//  0  1  2
//  3  4  5
//  6  7  8
//  9 10 11
// 12 13 14
// 15 16 17
//
大米粥哥哥 2017-08-11
  • 打赏
  • 举报
回复
不支持int n,a[n][3] 吧??? 百度 动态数组 或者一开始设个大点的值
fussier 2017-08-11
  • 打赏
  • 举报
回复
虽然你输入输出的范围是a[1][1]~a[3][3],写法很不好,但是不影响程序结果。 但是现在c++在数组不赋初值的情况下都 支持a[n][3]这种写法了吗? 变长的话还是用vector吧
X_JULY 2017-08-11
  • 打赏
  • 举报
回复
定义的a[n][3]的范围为0~n-1 我觉得定义一个a[100][3]会好点吧
真相重于对错 2017-08-11
  • 打赏
  • 举报
回复
数组范围是0到n-1

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧