C++ 函数未返回任何值| C++;

C++ 函数未返回任何值| C++;,c++,C++,我正在编写一个函数,它将查找除数最大的数,但该函数不返回任何内容。有人能指出我的错误吗 这就是问题所在 编写一个C++程序,创建和30个元素的整数数组。获取此数组中的输入(在主 功能)。然后,使用引用指针将该数组传递给一个名为“Find_Max_除数”的函数。 函数“Find_Max_除数”应该在数组中找到(并返回)具有最高值的数字 除数的数目。最后,主函数显示除数最多的数字 #include <iostream> using namespace std; int main ()

我正在编写一个函数,它将查找除数最大的数,但该函数不返回任何内容。有人能指出我的错误吗

这就是问题所在

<>编写一个C++程序,创建和30个元素的整数数组。获取此数组中的输入(在主 功能)。然后,使用引用指针将该数组传递给一个名为“Find_Max_除数”的函数。 函数“Find_Max_除数”应该在数组中找到(并返回)具有最高值的数字 除数的数目。最后,主函数显示除数最多的数字

#include <iostream>
using namespace std;

int main ()
{
    int arr[30];
    int* array = &arr[30];
    cout << "Please enter values of the array" << endl;
    for (int i=0; i<30; i++)
    {
        cin >> arr[i];
    }
    cout << "Number with most divisors in array is " << endl;
    int Find_Max_Divisors (*array);
}

int Find_Max_Divisors (int p[])
{
    int count=0, max_divisor, max_counter, prev=0, repeat=0, divisor;
    for (int i=2; i<=30; i++)
        {
            if (p[i]%i==0)
            {
                count++;
            }
            if (count > prev)
            {
                prev = count;
                divisor = p[i];
            }
            if (count==max_counter && max_counter!=0)
            {
                cout << p[i] <<" has maximum of "<< count <<" divisors.\n";
            }
        max_counter = prev;
        max_divisor = divisor;
        repeat++;
        }
        return count;
}
#包括
使用名称空间std;
int main()
{
int-arr[30];
int*数组=&arr[30];
不能改变

int Find_Max_Divisors (*array);

您可以完全去掉
数组
变量

您很可能会发现,您也需要将函数放在
main
之前。

更改

int Find_Max_Divisors (*array);

您可以完全去掉
数组
变量


很有可能您会发现您也需要将函数放在
main
之前。

首先,声明一个包含30个元素的数组

int arr[30];
但在这里,您将指针指向out of
arr

int* array = &arr[30];
我猜你想让指针指向
arr
,如果我没有错,你可以这样做:

int *array = &arr[0]; // or int * array = arr;
然后,当您调用
查找最大除数
函数时,应更改为:

int return_value = Find_Max_Divisors(array);
还有一件事,int这个函数:

for (int i=2; i<=30; i++)

首先,声明一个包含30个元素的数组

int arr[30];
但在这里,您将指针指向out of
arr

int* array = &arr[30];
我猜你想让指针指向
arr
,如果我没有错,你可以这样做:

int *array = &arr[0]; // or int * array = arr;
然后,当您调用
查找最大除数
函数时,应更改为:

int return_value = Find_Max_Divisors(array);
还有一件事,int这个函数:

for (int i=2; i<=30; i++)

您的代码中有几个错误:

  • 首先,如果您的
    main
    函数应该知道它调用的函数,那么您应该事先声明它们。只需在main函数之前添加一行
    Find_Max_除数(int p[]);

  • <> L> >P> C++中的数组<强>是一个指针,当你只用它的名字调用它。所以调用<代码> FiffyMax因子(ARR)< /代码>,去掉那个可怕的指针赋值。

  • 在最后一行中,只需尝试调用函数,但不要将其置于stdout
,您应该将其更改为:


cout您的代码中有几个错误:

  • 首先,如果您的
    main
    函数应该知道它调用的函数,那么您应该事先声明它们。只需在main函数之前添加一行
    Find_Max_除数(int p[]);

  • <> L> >P> C++中的数组<强>是一个指针,当你只用它的名字调用它。所以调用<代码> FiffyMax因子(ARR)< /代码>,去掉那个可怕的指针赋值。

  • 在最后一行中,只需尝试调用函数,但不要将其置于stdout
,您应该将其更改为:


cout您不需要指针,这个简单的代码可以解决您的问题,只要根据需要更改数组的大小,我正在使用大小为4的数组进行测试

#include <iostream>
using namespace std;

int Find_Max_Divisors(int p[])
{
    int count = 0, max = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = 1; j < p[i] / 2; j++) {
            if (p[i] % j == 0) {
                count++;
            }
        }
        if (count > max)
            max = p[i];
    }
    return max;
}
int main()
{
    int arr[30];
    // int* array = &arr[30];
    cout << "Please enter values of the array" << endl;
    for (int i = 0; i < 4; i++) {
        cin >> arr[i];
    }
    int value = Find_Max_Divisors(arr);
    cout << "Number with most divisors in array is " << value << endl;
}
#包括
使用名称空间std;
int Find_Max_除数(int p[])
{
整数计数=0,最大值=0;
对于(int i=0;i<4;i++){
对于(int j=1;j最大值)
max=p[i];
}
返回最大值;
}
int main()
{
int-arr[30];
//int*数组=&arr[30];
无法到达[i];
}
int值=查找最大除数(arr);

cout您不需要指针,这个简单的代码就可以解决您的问题,只要根据需要更改数组的大小,我在这里使用大小为4的数组进行测试

#include <iostream>
using namespace std;

int Find_Max_Divisors(int p[])
{
    int count = 0, max = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = 1; j < p[i] / 2; j++) {
            if (p[i] % j == 0) {
                count++;
            }
        }
        if (count > max)
            max = p[i];
    }
    return max;
}
int main()
{
    int arr[30];
    // int* array = &arr[30];
    cout << "Please enter values of the array" << endl;
    for (int i = 0; i < 4; i++) {
        cin >> arr[i];
    }
    int value = Find_Max_Divisors(arr);
    cout << "Number with most divisors in array is " << value << endl;
}
#包括
使用名称空间std;
int Find_Max_除数(int p[])
{
整数计数=0,最大值=0;
对于(int i=0;i<4;i++){
对于(int j=1;j最大值)
max=p[i];
}
返回最大值;
}
int main()
{
int-arr[30];
//int*数组=&arr[30];
无法到达[i];
}
int值=查找最大除数(arr);


你能说函数没有返回任何东西吗,但是你怎么知道函数被调用了呢?@drescherjm对我来说这看起来像一个常规的旧变量声明,它应该可以很好地编译:)C++绝对不容易解析
iWe不加“SOLVED”问题标题。您表示问题已通过接受答案解决。(我已确定标题。)你说函数没有返回任何东西,但是你怎么知道函数被调用了呢?@drescherjm对我来说这看起来像一个常规的旧变量声明,它应该编译得很好:)C++绝对不容易解析
i我们不加“SOLVED”到问题标题。您表示问题已通过接受答案解决。(我修复了标题)。仅此更改并不能真正解决问题。请记住
int*array=&arr[30]
.lol.我错过了这个。我想知道OP是如何在没有编译器发出有用警告的情况下发展到现在的。许多新手忽略了这些警告。单凭这一改变并不能真正解决问题。记住
int*array=&arr[30]
.lol。我错过了。我想知道OP怎么会在没有编译器发出有用警告的情况下走到现在。许多新手忽略了警告。我们也可以利用和
int*array=arr;
是的,在这种情况下,我只想强调一下他的观点。我的意思是指针应该指向第一个元素,而不是元素31。我编辑了。嗯,谢谢我们还可以利用和
int*array=arr;
是的,在这种情况下,我只想强调他的观点。我的意思是指针应该指向第一个元素