数据对了,但0分

P5719 【深基4.例3】分类平均

lxb121421 @ 2021-12-14 10:10:43

#include<stdio.h>
int main()
{
    int n,k;
    int i,m=0;
    double sum[3];
    double aver[3];
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        if(i%k==0)
        {
            sum[0]+=i;
            ++m;
        }
        else 
        {
            sum[1]+=i;
        }
    }
    aver[0]=sum[0]/m;
    aver[1]=sum[1]/(n-m);
    printf("%.1lf %.1lf",aver[0],aver[1]);
    return 0;
}

by cjwen @ 2021-12-14 10:36:39

额,只要把 sum[] 数组定义在主函数外就可以了:

#include<stdio.h>

double sum[3];

int main()
{
    int i,m=0;
    int n,k;
    double aver[3];
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        if(i%k==0)
        {
            sum[0]+=i;
            ++m;
        }
        else 
        {
            sum[1]+=i;
        }
    }
    aver[0]=sum[0]/m;
    aver[1]=sum[1]/(n-m);
    printf("%.1lf %.1lf",aver[0],aver[1]);
    return 0;
}

by cjwen @ 2021-12-14 10:40:46

是因为你的 sum[] 数组没有初始化,里面的数据是乱的,而不是 0,导致输出 -nan 的情况。定义在主函数外面,或者用 double sum[3] = { }; 复初值,就可以了


by 编码落寞 @ 2021-12-14 10:56:34

建议double数组首先初始化下


|