预定程序员 2023-07-28 21:53 采纳率: 65.9%
浏览 30
已结题

openjudge 1.5奥运奖牌的计数问题,C语言数组基础语法

问题:控制台不能实现输入,运行完直接是空格
题目:
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


#include<stdio.h>
int main()
{
    int i,y,n,a[n][3],x1=0,x2=0,x3=0,all=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(y=0;y<3;y++)
        {
            scanf("%d",&a[i][y]);
        }
    }
    for(i=0;i<n;i++)
    {
        x1+=a[i][0];
    }
    for(i=0;i<n;i++)
    {
        x1+=a[i][1];
    }
    for(i=0;i<n;i++)
    {
        x1+=a[i][2];
    }
    all=x1+x2+x3;
    printf("%d %d %d %d",x1,x2,x3,all);
    return 0;
}

代码看不出哪里错了,但是编译后控制台直接不能输入

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-07-28 23:18
    关注

    数组的大小应是常数,修改如下,改动处见注释,供参考:

    #include<stdio.h>
    #define N 18
    int main()
    {
        int i,y,n,a[N][3],x1=0,x2=0,x3=0,all=0; // 修改 a[n][3]
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            for(y=0;y<3;y++)
            {
                scanf("%d",&a[i][y]);
            }
        }
        for(i=0;i<n;i++) 
        {
            x1+=a[i][0];  // 修改
            x2+=a[i][1];
            x3+=a[i][2];
        }
        //for(i=0;i<n;i++) 修改
        //{
        //    x1+=a[i][1];
        //}
        //for(i=0;i<n;i++)
        //{
        //    x1+=a[i][2];
        //}
        all=x1+x2+x3;
        printf("%d %d %d %d",x1,x2,x3,all);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月6日
  • 已采纳回答 7月29日
  • 修改了问题 7月28日
  • 创建了问题 7月28日