C++ 传数组的问题
本帖最后由 Jet_Shawn 于 2020-4-27 10:43 编辑笔者的目标是想要求一个数组的中位数
# include <iostream>
using namespace std;
int findMiddle();
int main()
{
// 初始化一个奇数数组
int num1 = {1,2,3,4,5};
// 初始化一个偶数数组
int num2 = {1,2,3,4,5,6};
float middle_num1;
float middle_num2;
middle_num1 = findMiddle(num1,5);
middle_num2 = findMiddle(num2,6);
cout<<"中位数分别为"<<middle_num1<<","<<middle_num2<<endl;
system("pause");
return 0;
}
float findMiddle(int num,int length)
{
float middle_num;
int half = length / 2;
if (length%2 == 1)
{
middle_num = num; // 注意下标
}
else
{
middle_num = (num+num) / 2.0;//这里两个数的下标应该是half和half-1
}
return middle_num;
} 返回值改为float再试试 23行改 int middle_num; BngThea 发表于 2020-4-27 10:18
返回值改为float再试试
返回值是写的float哇
Jet_Shawn 发表于 2020-4-27 10:23
返回值是写的float哇
int findMiddle(int *num,int length)睁眼说瞎话 永恒的蓝色梦想 发表于 2020-4-27 10:29
睁眼说瞎话
懂您意思了,我刚开始学,我以为前面定义了float middle_num就行了
Jet_Shawn 发表于 2020-4-27 10:33
懂您意思了,我刚开始学,我以为前面定义了float middle_num就行了
那就选个最佳吧~{:10_297:} 1、函数返回值改为float,
2、数组长度为偶数的时候,两个数的下标应该是half和half-1
3、两数之均值计算的时候,因为两数都是int所以应该出2.0,将之转为float
float findMiddle(int *num,int length)
{
float middle_num;
int half = length / 2;
if (length%2 == 1)
{
middle_num = num; // 注意下标
}
else
{
middle_num = (num+num) / 2.0;//这里两个数的下标应该是half和half-1
}
return middle_num;
} 改了还是报错,不知道为啥
float findMiddle(int *num,int length)
{
float middle_num;
int half = length / 2;
if (length%2 == 1)
{
middle_num = num; // 注意下标
}
else
{
middle_num = (num+num) / 2;
}
return middle_num;
} 还是在14行报错 永恒的蓝色梦想 发表于 2020-4-27 10:33
那就选个最佳吧~
您好,请问还是有问题,在调用函数的时候报错 ambiguating new declaration of 'float findMiddle(int*, int)' ,21行的定义给报错了 已解决,主前面的声明给搞错了,导致前后不一
页:
[1]