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[]
数组没有初始化,里面的数据是乱的,而不是 -nan
的情况。定义在主函数外面,或者用 double sum[3] = { };
复初值,就可以了
by 编码落寞 @ 2021-12-14 10:56:34
建议double数组首先初始化下