gpt4 book ai didi

c - 为什么我的平均值打印不正确?

转载 作者:行者123 更新时间:2023-11-30 14:35:19 26 4
gpt4 key购买 nike

输入:

6

-4 3 -9 0 4 1

预期输出:

0.500000

0.333333

0.166667

我的输出:

0.000000

0.000000

0.000000

<小时/>

代码说明:

1)用户输入输入数量

2)用户输入数字

3)代码显示正数/负数/零数的百分比

<小时/>

我做错了什么?

#include<stdio.h>
int main()
{
int counter=0;
int howmany;
scanf("%d",&howmany);
int clone=howmany;
int numbers[howmany];
int zero=0, positive=0, negative=0;

while(howmany>0)
{
scanf("%d",&numbers[counter]);
if(numbers[counter]>0)
{

positive++;
}
else if(numbers[counter]<0)
{
negative++;
}
else if(numbers[counter]==0)
{
zero++;
}
counter++;
howmany--;
}

double a=positive/clone;
double b=negative/clone;
double c=zero/clone;
printf("%lf\n%lf\n%lf",a, b, c);

return 0;
}

最佳答案

问题在于 C 如何处理整数除法:

    double a=positive/clone;
double b=negative/clone;
double c=zero/clone;
printf("%lf\n%lf\n%lf",a, b, c);

return 0;

positiveclone 是整数;将它们相除会丢弃任何余数 - 答案必须是整数。例如,您定义一个 double a 来接收正数/克隆,但首先对两个整数执行评估(正数克隆),产生一个整数答案,然后将其分配给 - 无论它是 double 型。

相反,出于此评估的目的,您需要强制转换其中一个整数,就好像它是 double 一样。然后,将double形式的正数相除,结果能够保存余数,因为它是一个double。然后将该 double 值分配给 a,您将获得所需的输出。

    double a=(double)positive/clone;
double b=(double)negative/clone;
double c=(double)zero/clone;
printf("%lf\n%lf\n%lf",a, b, c);

return 0;

关于c - 为什么我的平均值打印不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58595855/

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