请问~~我实在看不出这段代码有什么问题,自己也编了数据,可还是全 WA 啦

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

日暮鳖鳖 @ 2020-08-23 16:03:57

#include<cstdio>
int main()
{
    int n,k,i;
    int num_A,num_B;
    float all_A,all_B;
    scanf("%d %d",&n,&k);

    for ( i = 1; i <= n; i++)
    {
        if (i%k==0)
        {
            all_A+=i;
            num_A++;
        }
        else
        {
            all_B+=i;
            num_B++;
        }
    }
    printf("%.1f %.1f\n",all_A/num_A,all_B/num_B);
    return 0;
}

all_A 和all_B分别是AB两类的数字总和,num_A和num_B是记录数字的。 样例都通过了,自己编的数据也过了,数据类型用float和double都是全WA


by Terrible @ 2020-08-23 16:13:19

@日暮鳖鳖

精度不够,建议double替换float,实在不行用long double。

不过正常的浮点型答案问题,应该先写出来整型的表达式,用整型和整型做除,最终得出来浮点型才相当精确。


by JK_LOVER @ 2020-08-23 16:25:03

@日暮鳖鳖

楼上有一定道理,问题还在于变量没有初始化。

#include<cstdio>
    int n,k,i;
    int num_A,num_B;
    double all_A,all_B;
int main()
{
   // int n,k,i;
  // int num_A,num_B;
 //   double all_A,all_B;
    scanf("%d %d",&n,&k);

    for ( i = 1; i <= n; i++)
    {
        if (i%k==0)
        {
            all_A+=i;
            num_A++;
        }
        else
        {
            all_B+=i;
            num_B++;
        }
    }
    printf("%.1f %.1f\n",all_A/num_A,all_B/num_B);
    return 0;
}

by Starry___sky @ 2020-08-23 16:27:30

@日暮鳖鳖

你把num_A,num_B改成float或者double就好啦


by 日暮鳖鳖 @ 2020-08-23 16:43:20

@Starry___sky @Terrible 感谢!!!修改过后AC啦!!!???? @JK_LOVER 还真的诶~~~~谢谢你!!!


|