gpt4 book ai didi

c - 黑客排名中的正负

转载 作者:行者123 更新时间:2023-11-30 20:03:28 24 4
gpt4 key购买 nike

我是 C 初学者,我正在 hackerrank 中做问题,我遇到了一个名为“plus minus”的问题,其中未获得问题的预期输出。

我在计算中对 float 数据类型感到困惑。问题就在这里。我们必须给出包含正值、负值和零值的数字数组,输入和输出应如下所示。

6
-4 3 -9 0 4 1

示例输出

0.500000
0.333333
0.166667

数组中有 3 个正数、2 个负数和 1 个零。出现的比例为正:3/6=0.50000,负:2/6=0.33333,零:1/6=0.166667 ..

这是我的代码,没有得到预期的输出。

int main()
{
int n,i,p,q,r,a[50],pos,res,zer,neg;
double posres,negres,zerres;

scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

for(i=0;i<n;i++)
{
if(a[i]>0)
++p;
else if(a[i]<0)
++q;
else if(a[i]=0)
++r;
}

posres=p/n;
negres=q/n;
zerres=r/n;
printf("%lf\n%lf\n%lf\n",posres,negres,zerres);
return 0;
}

但我的输出是:

699317.000000
162833139.000000
0.000000

我哪里出错了?

最佳答案

a[i]=0(即将值 0 赋给 a[i])替换为 a[i ]==0,这是一个比较。并在循环之前将pqr初始化为0。否则你会得到未定义的行为,例如你看到的垃圾。

关于c - 黑客排名中的正负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51108371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com