请问哪里有问题

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

linlin6 @ 2022-11-10 22:34:48

#include<stdio.h>
int main()
{
    int n, k, i, a[10000];
    float   sum1=0,sum2=0;
    scanf("%d %d", &n, &k);
    int p = 0;
    for (i = 0; i < n; i++)
    {   
        a[i] = i + 1;
        if (a[i] % k == 0)
        {
            sum1 = sum1 + a[i];
            p++;
        }
    }
    sum1 = sum1 / p;
    p = 0;
    for (i = 0; i < n; i++)
    {
        a[i] = i + 1;
        if (a[i] % k != 0)
        {
            sum2 = sum2 + a[i];
            p++;
        }
    }
    sum2 = sum2 / p;
    printf("%.1f %.1f\n", sum1, sum2);
    return 0;
}

by zkmyyy @ 2022-12-16 14:35:33

@linlin6 问题:第一个循环i从‘1’开始之后i<=n即可 (这样就不用写"a[i]=i+1"),之后是第二个循环直接用“a[i]”即可,之后就AC了。

#include<stdio.h>
using namespace std;
int main()
{
    int n, k, i, a[1000000];
    double   sum1=0,sum2=0;
    scanf("%d %d", &n, &k);
    int p = 0;
    for (i = 1; i <= n; i++)
    {   
        a[i] = i;
        if (a[i] % k == 0)
        {
            sum1 = sum1 + a[i];
            p++;
        }
    }
    sum1 = sum1 / p;
    p = 0;
    for (i = 1; i <= n; i++)
    {
        if (a[i] % k != 0)
        {
            sum2 = sum2 + a[i];
            p++;
        }
    }
    sum2 = sum2 / p;
    printf("%.1lf %.1lf\n", sum1, sum2);
    return 0;
}

注:

  1. 数组的范围尽量的一点
  2. 浮点型尽量用double(这样范围更大更安全,浮点型的格式是"lf%"不是"f%")

by zkmyyy @ 2022-12-16 14:37:29

刚刚"注1"写错了:数组尽量开大一点


|