标题:小白在线请教 请问一下代码哪里出错了
只看楼主
哈罗德的路
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-4-28
结帖率:66.67%
已结贴  问题点数:10 回复次数:3 
小白在线请教 请问一下代码哪里出错了
给定一所学校学生的体育成绩,请你统计全班的平均成绩和男生、女生的平均成绩。

输入格式:
输入首先在第一行中给出一个正整数 N(≤10000),即全校学生人数。最后 N 行,每行按照格式 性别 成绩 给出一位学生的信息。其中 性别 为 1 表示男生,0 表示女生;成绩 是一个 0 到 100 之间的整数。

输出格式:
在一行中依次输出全班的平均成绩、男生的平均成绩、女生的平均成绩。输出小数点后1位,数字间有一个空格分隔。

注意:如果全是男生或全是女生,则缺少的性别就没有办法计算平均分,相应的位置应该输出一个 X 表示没有。

输入样例 1:
5
1 97
0 91
0 98
1 95
1 90
输出样例 1:
94.2 94.0 94.5
输入样例 2:
5
0 97
0 91
0 98
0 95
0 90
输出样例 2:
94.2 X 94.2

程序代码:
请问以下代码哪里错误
#include "stdio.h"
int main()
{
    int a,b,c,i,num1=0,num2=0;
    float sum=0,sum1=0,sum2=0,aver,baver,gaver;
    scanf("%d",&a);
    for(i=0;i<a;i++)
    {
        scanf("%d%d",&b,&c);
        sum=sum+c;
        if(b==1)
        {
        sum1=sum1+c;
        num1++;    
        }
        else
        {
        sum2=sum2+c;
        num2++;        
        }
    }
    aver=sum*1.0/a;    
    baver=sum1*1.0/num1;    
    gaver=sum2*1.0/num2;
    if(num1==0)
           printf("%.1f X %.1f",aver,baver,gaver);
    else if(num2==0)
        printf("%.1f %.1f X",aver,baver,gaver);
    else
        printf("%.1f %.1f %.1f",aver,baver,gaver);
    return 0;

 } 
搜索更多相关主题的帖子: 输出 输入 平均 代码 成绩 
2020-05-20 18:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
编译时有警告,说你的
printf("%.1f X %.1f",aver,baver,gaver);

printf("%.1f %.1f X",aver,baver,gaver);
参数数目不对。
2020-05-20 19:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned m_sum=0, m_cnt=0;
    unsigned f_sum=0, f_cnt=0;

    unsigned n;
    scanf( "%u", &n );
    for( size_t i=0; i!=n; ++i )
    {
        unsigned sex, score;
        scanf( "%u%u", &sex, &score );

        if( sex == 1 )
        {
            m_sum += score;
            ++m_cnt;
        }
        else
        {
            f_sum += score;
            ++f_cnt;
        }
    }

    if( m_cnt+f_cnt == 0 )
        printf( "X " );
    else
        printf( "%.1f ", (m_sum+f_sum)*1.0/(m_cnt+f_cnt) );

    if( m_cnt == 0 )
        printf( "X " );
    else
        printf( "%.1f ", m_sum*1.0/m_cnt );

    if( f_cnt == 0 )
        printf( "X\n" );
    else
        printf( "%.1f\n", f_sum*1.0/f_cnt );
}
2020-05-20 19:23
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
得分:4 
int main()
{
    int a, b, c, i, num1 = 0, num2 = 0;
    float sum = 0, sum1 = 0, sum2 = 0, aver, baver, gaver;
    scanf("%d", &a);
    for (i = 0; i<a; i++)
    {
        scanf("%d%d", &b, &c);
        //getchar();
        sum = sum + c;
        if (b == 1)
        {
            sum1 = sum1 + c;
            num1++;
        }
        else
        {
            sum2 = sum2 + c;
            num2++;
        }
    }
    aver = sum / a;
    baver = sum1 / num1;
    gaver = sum2 / num2;
    if (num1 == 0)
        printf("%.1f X %.1f", aver, gaver);
    else if (num2 == 0)
        printf("%.1f %.1f X", aver, baver);
    else
        printf("%.1f %.1f %.1f", aver, baver, gaver);

    return 0;
}
2020-05-21 10:21



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




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

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