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