嗨,如果我做错了,第一次问对不起
对于我的家庭作业,我必须创建一个程序,要求用户输入最多20个或更少的整数,它将以相反的顺序输出它们,并给出数组中最大和最小的整数。用户可以通过将其终止为0来输入少于20个整数。我已将其中的大部分内容删除,但我有几个问题。
部分分配指出,如果用户输入20个整数,它将自动反转顺序,但在我的程序中,用户必须输入21个整数然后才会反转它。
当我试图找出最小值时,它给了我一个巨大的负数,如-76534534。
以下是代码:
#include <iostream>
using namespace std;
const int max_integers = 20;
void intro( );
void array(int array[], int size, int& x);
void reverse(const int array[], int x);
void high(const int array[], int x);
void low (const int array[], int x);
int main( )
{
int input[max_integers];
int x;
intro( );
array(input, max_integers, x);
reverse(input, x);
high(input, x);
low(input, x);
return 0;
}
void intro ( )
{
cout << "This program will read in a list of integers and put them into an array." << endl;
cout << "The maximum number of integers it will read in is 20. The program will then " << endl;
cout << "output the numbers in reverse order and give you the largest and smallest " << endl;
cout << "integers." << endl;
}
void array (int input[], int size, int& x)
{
cout << "Enter a list of integers (0 to end list). Max number you can enter is " << size << "." << endl;
int next;
int index = 0;
cin >> next;
while ((next > 0) && (index < size))
{
input[index] = next;
index++;
cin >> next;
}
x = index;
cout << endl;
}
void reverse (const int input[], int x)
{
cout << "The integers in reverse order are:" << endl;
for (int index = 0; x > index; x--)
{
cout << input[x-1];
cout << endl;
}
}
void high (const int input[], int x)
{
int high = 0;
for (int index = 0; x > index; x--)
{
if (input[x] > high)
{
high = input[x];
}
}
cout << "The largest value entered is " << high << "." << endl;
}
void low (const int input[], int x)
{
int low = 999999;
for (int index = 0; x >= index; x--)
{
if ((input[x] < low) && (low > 0))
{
low = input[x];
}
}
cout << "The smallest value entered is " << low << "." << endl;
}
答案 0 :(得分:0)
<强> 1 强>
你在while
循环之前要求一个整数,然后循环20次询问一个数字。使用do-while
循环解决此问题:
do {
cin >> next;
input[index] = next;
index++;
} while ((next > 0) && (index < size))
2:如果用户输入少于20个数字,则数组中的值未初始化。这是未定义的行为。您可以通过默认初始化来解决此问题:
int input[max_integers] = { };