为什么 Dev C++ 在 运行 整个代码找到 10 个元素之间的最高和最低数字之前停止工作?
Why does Dev C++ stop working before running the whole code in finding highest and lowest number between 10 elements?
这是我用来查找 10 个元素之间的最高和最低数字的代码:
#include <iostream>
using namespace std;
#define SIZE 10
void acceptNumbers (int Numbers[SIZE]);
int High(int Numbers[SIZE]);
int Low(int Numbers[SIZE]);
void acceptNumbers(int Numbers[SIZE])
{int i, *max, *min;
for (i=0; i<SIZE; i++)
cin>>Numbers[i];
max = Numbers;
min = Numbers;
}
int High(int Numbers[SIZE])
{int i, *max;
for (i = 0; i < SIZE; i++)
{
if (*(Numbers+i) > *max)
max = (Numbers+i);
}
cout<<*max;
}
int Low(int Numbers[SIZE])
{int i, *min;
for (i = 0; i < SIZE; i++)
{
if (*(Numbers+i) < *min)
min = (Numbers+i);
}
cout<<*min;
}
int main()
{
int arr[SIZE];
cout<<"Enter Elements: \n";
acceptNumbers(arr);
cout<<"Highest Number: ";
High(arr);
cout<<endl;
cout<<"Lowest Number: ";
Low(arr);
cout<<endl;
}
在我的电脑上,它没有 运行 整个程序。当它到达查找最高和最低数字的代码时它就停止了
这是我正在做的家庭作业,我不能使用任何快捷方式和诸如此类的东西,因为给出了需要使用的代码行。所以我在另一台 PC 上尝试 运行ning 这段代码,它工作得很好:
我也试过 运行在在线 C++ 编译器上使用它,但它仍然不起作用。我无法在线找到解决方案,所以这是我最后的选择,请帮助我
Low() 和 High() 函数只声明了 int* max, min 但从不初始化。尽管他们持有无效地址。
if (*(Numbers + i) > *max)
此函数导致分段错误,因为您的程序试图取消引用无效的内存地址。
如果你想存储 int *min, *max
使它们成为全局的或在 main() 中声明它们。
您的代码表现出未定义的行为。
在您的每个函数中,您都将 min
和 max
声明为局部变量。因此,当您在 acceptNumbers()
中初始化 min
/max
时,它们仅在该函数中初始化。您根本没有在 High()
/Low()
中初始化 min
/max
变量。当这些函数试图取消引用那些未初始化的变量时,您的代码会崩溃。
此外,您的 High()
/Low()
函数具有非 void
return 类型,但实际上 return
没有任何值。
试试这个:
#include <iostream>
using namespace std;
#define SIZE 10
void acceptNumbers (int Numbers[SIZE]);
int High(int Numbers[SIZE]);
int Low(int Numbers[SIZE]);
void acceptNumbers(int Numbers[SIZE])
{
for (int i=0; i<SIZE; i++)
cin>>Numbers[i];
}
int High(int Numbers[SIZE])
{
int *max = Numbers;
for (int i = 1; i < SIZE; i++)
{
if (*(Numbers+i) > *max)
max = (Numbers+i);
}
return *max;
}
int Low(int Numbers[SIZE])
{
int *min = Numbers;
for (int i = 1; i < SIZE; i++)
{
if (*(Numbers+i) < *min)
min = (Numbers+i);
}
return *min;
}
int main()
{
int arr[SIZE];
cout<<"Enter Elements: \n";
acceptNumbers(arr);
cout<<"Highest Number: ";
cout<<High(arr);
cout<<endl;
cout<<"Lowest Number: ";
cout<<Low(arr);
cout<<endl;
}
这是我用来查找 10 个元素之间的最高和最低数字的代码:
#include <iostream>
using namespace std;
#define SIZE 10
void acceptNumbers (int Numbers[SIZE]);
int High(int Numbers[SIZE]);
int Low(int Numbers[SIZE]);
void acceptNumbers(int Numbers[SIZE])
{int i, *max, *min;
for (i=0; i<SIZE; i++)
cin>>Numbers[i];
max = Numbers;
min = Numbers;
}
int High(int Numbers[SIZE])
{int i, *max;
for (i = 0; i < SIZE; i++)
{
if (*(Numbers+i) > *max)
max = (Numbers+i);
}
cout<<*max;
}
int Low(int Numbers[SIZE])
{int i, *min;
for (i = 0; i < SIZE; i++)
{
if (*(Numbers+i) < *min)
min = (Numbers+i);
}
cout<<*min;
}
int main()
{
int arr[SIZE];
cout<<"Enter Elements: \n";
acceptNumbers(arr);
cout<<"Highest Number: ";
High(arr);
cout<<endl;
cout<<"Lowest Number: ";
Low(arr);
cout<<endl;
}
在我的电脑上,它没有 运行 整个程序。当它到达查找最高和最低数字的代码时它就停止了
这是我正在做的家庭作业,我不能使用任何快捷方式和诸如此类的东西,因为给出了需要使用的代码行。所以我在另一台 PC 上尝试 运行ning 这段代码,它工作得很好:
我也试过 运行在在线 C++ 编译器上使用它,但它仍然不起作用。我无法在线找到解决方案,所以这是我最后的选择,请帮助我
Low() 和 High() 函数只声明了 int* max, min 但从不初始化。尽管他们持有无效地址。
if (*(Numbers + i) > *max)
此函数导致分段错误,因为您的程序试图取消引用无效的内存地址。
如果你想存储 int *min, *max
使它们成为全局的或在 main() 中声明它们。
您的代码表现出未定义的行为。
在您的每个函数中,您都将 min
和 max
声明为局部变量。因此,当您在 acceptNumbers()
中初始化 min
/max
时,它们仅在该函数中初始化。您根本没有在 High()
/Low()
中初始化 min
/max
变量。当这些函数试图取消引用那些未初始化的变量时,您的代码会崩溃。
此外,您的 High()
/Low()
函数具有非 void
return 类型,但实际上 return
没有任何值。
试试这个:
#include <iostream>
using namespace std;
#define SIZE 10
void acceptNumbers (int Numbers[SIZE]);
int High(int Numbers[SIZE]);
int Low(int Numbers[SIZE]);
void acceptNumbers(int Numbers[SIZE])
{
for (int i=0; i<SIZE; i++)
cin>>Numbers[i];
}
int High(int Numbers[SIZE])
{
int *max = Numbers;
for (int i = 1; i < SIZE; i++)
{
if (*(Numbers+i) > *max)
max = (Numbers+i);
}
return *max;
}
int Low(int Numbers[SIZE])
{
int *min = Numbers;
for (int i = 1; i < SIZE; i++)
{
if (*(Numbers+i) < *min)
min = (Numbers+i);
}
return *min;
}
int main()
{
int arr[SIZE];
cout<<"Enter Elements: \n";
acceptNumbers(arr);
cout<<"Highest Number: ";
cout<<High(arr);
cout<<endl;
cout<<"Lowest Number: ";
cout<<Low(arr);
cout<<endl;
}