标题:HDU 2023 求平均成绩
只看楼主
康明贤
Rank: 2
来 自:NWPU
等 级:论坛游民
帖 子:46
专家分:32
注 册:2017-10-23
结帖率:75%
已结贴  问题点数:20 回复次数:4 
HDU 2023 求平均成绩
假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。
Input
输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。
Output
对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。
每个测试实例后面跟一个空行。
Sample Input
2 2
5 10
10 20
Sample Output
7.50 15.00
7.50 15.00
1

My code:
#include <stdio.h>
int main()
{
    int m,n;
    while(scanf("%d%d",&n,&m)!=EOF&&n!=0&&m!=0&&(m<51&&n<6))
    {
        int count,c;
        int i,j;
        double sc[50][5];
        double sum1,sum2;
        double sum[5];
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                scanf("%lf",&sc[i][j]);
            }
        }

        for(i=0;i<n;i++)
        {
             sum1=0;
            for(j=0;j<m;j++)
            {
                sum1+=sc[i][j];//gerenzongchengji
            }
            if(i==n-1)
            {
                printf("%.2lf\n",sum1/m);
            }
            else
                printf("%.2lf ",sum1/m);
        }

        for(j=0;j<m;j++)
        {
            sum2=0;
            for(i=0;i<n;i++)
            {
                 sum2+=sc[i][j];//meimenkezongchengji
            }
            if(j==m-1)
            {
                printf("%.2lf\n",sum2/n);
                sum[j] = sum2/n;
            }
            else
            {
                printf("%.2lf ",sum2/n);
                sum[j] = sum2/n;
            }
        }
         c = 0;
       for(i=0;i<n;i++)
       {
           count = 0;
           for(j=0;j<m;j++)
           {
               if(sc[i][j]>=sum[j])
                count++;
                if(count==m)
                c++;
           }
       }
        printf("%d\n\n",c);
    }
  return 0;
}
在CB上可以,但是提交无法AC
修改后code:
#include <stdio.h>
int main()
{
    int m,n;
     int count,c;
        int i,j;
        double sc[50][5];
        double sum1,sum2;
        double sum[5];
    while(scanf("%d%d",&n,&m)!=EOF&&n!=0&&m!=0&&(m<6&&n<51))
    {
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                scanf("%lf",&sc[i][j]);
            }
        }

        for(i=0;i<n;i++)
        {
             sum1=0;
            for(j=0;j<m;j++)
            {
                sum1+=sc[i][j];//gerenzongchengji
            }
            if(i==n-1)
            {
                printf("%.2lf\n",sum1/m);
            }
            else
                printf("%.2lf ",sum1/m);
        }

        for(j=0;j<m;j++)
        {
            sum2=0;
            for(i=0;i<n;i++)
            {
                 sum2+=sc[i][j];//meimenkezongchengji
            }
            if(j==m-1)
            {
                printf("%.2lf\n",sum2/n);
                sum[j] = sum2/n;
            }
            else
            {
                printf("%.2lf ",sum2/n);
                sum[j] = sum2/n;
            }
        }
         c = 0;
       for(i=0;i<n;i++)
       {
           count = 0;
           for(j=0;j<m;j++)
           {
               if(sc[i][j]>=sum[j])
                count++;
                if(count==m)
                c++;
           }
       }
        printf("%d\n\n",c);
    }
  return 0;
}
可以AC
网站链接http://acm.hdu.

[此贴子已经被作者于2018-8-15 23:05编辑过]

搜索更多相关主题的帖子: 平均 成绩 for i++ printf 
2018-08-15 10:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
        count = 0;
        c = 0;
       for(i=0;i<n;i++)
       {
           for(j=0;j<m;j++)
           {
               if(sc[i][j]>=sum[j])
                count++;
                if(count==m)
                c++;
           }
       }
我猜你想要的是
程序代码:
        c = 0;
        for(i=0;i<n;i++)
        {
            count = 0;
            for(j=0;j<m;j++)
            {
                if(sc[i][j]>=sum[j])
                    count++;
            }
            if(count==m)
                c++;
        }

吧?


2018-08-15 12:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned n,m; scanf("%u%u",&n,&m)==2; )
    {
        unsigned sc[50][5];
        unsigned sum[5] = { 0 };

        for( size_t i=0; i!=n; ++i )
        {
            unsigned sbsum = 0;
            for( size_t j=0; j!=m; ++j )
            {
                scanf( "%u", &sc[i][j] );
                sbsum += sc[i][j];
                sum[j] += sc[i][j];
            }
            printf( "%.2f%c", 1.*sbsum/m, " \n"[i+1==n] );
        }

        for( size_t j=0; j!=m; ++j )
            printf( "%.2f%c", 1.*sum[j]/n, " \n"[j+1==m] );

        unsigned count = 0;
        for( size_t i=0; i!=n; ++i )
        {
            size_t j;
            for( j=0; j!=m && sc[i][j]*n>=sum[j]; ++j );
            count += j==m;
        }
        printf( "%u\n\n", count );
    }
}
2018-08-15 15:15
康明贤
Rank: 2
来 自:NWPU
等 级:论坛游民
帖 子:46
专家分:32
注 册:2017-10-23
得分:0 
回复 3楼 rjsp
size_t是整形吗?

千里之行,始于足下。
2018-08-15 21:54
康明贤
Rank: 2
来 自:NWPU
等 级:论坛游民
帖 子:46
专家分:32
注 册:2017-10-23
得分:0 
回复 5楼 rjsp
不是谭浩强版的,但是我确实没在书上看到过size_t。
谢谢老师批评。
这个问题是由于类型的问题吗?

千里之行,始于足下。
2018-08-15 22:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489218-1-1.html




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

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