gpt4 book ai didi

c++ - 通过 c plus 中的函数查找中位数

转载 作者:行者123 更新时间:2023-11-30 03:55:40 26 4
gpt4 key购买 nike

您好,我已经创建了这个函数来查找中位数,但我得到的不是 3.5,而是 3。我不明白为什么?谁能指导我。谢谢。 :)

int median(int array[], int n)
{
float med =0 ;
int a=0;
int b=0;
float newMed=0;
if (n % 2 ==0)
a=n/2;
b=(n/2)-1;
med = (array[a] + array[b]);
newMed = (med/2);
//else
//med = (n+1)/2;

return newMed;
}

int main()
{
int array[6] = {1,2,3,4,6,7};
cout<<"the median is: "<<median(array,6)<<"\n";
}

最佳答案

更改 int median(int array[], int n) (作为返回 int 的函数不能返回 3.5 )到

float median(int array[], int n)  // Return type int -> float

当您的返回类型为 int 时, 返回值 newMed计算为 3.5隐式转换为 int这是3 .这段代码大致等同于:

cout<<"the median is: "<< (int)median(array,6)<<"\n";

如果您使用适当的警告标志( -W -Wall -O2 ,用于回归分析的 O2 优化标志)编译您的程序,编译器应该警告您此类错误。

关于c++ - 通过 c plus 中的函数查找中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28935798/

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