您好,我已经创建了这个函数来查找中位数,但我得到的不是 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/