我正在编写一个程序,让用户输入一个数字列表,并查看他们输入的最大和最小的数字是什么。用户可以输入的数字数量只有2个(在他们输入-99(列表结束的标志)之前,它需要是他们想要的任何数量)。我不知道如何重复输入数字的过程,直到他们输入-99。如果有人能帮忙,我将不胜感激。(提醒一下,-99不应该是列表的一部分,它应该找到-99之前的所有数字中最小和最大的数字)。我只能使用循环来解决这个问题。
int main(){
int firstNumber = 0;
int nextNumber = 0;
int greatestNumber = 0;
while (firstNumber != -99 || nextNumber != -99){
cin >> firstNumber;
if (firstNumber == -99){
cout << "No numbers were entered." << endl;
break;
}
greatestNumber = firstNumber;
cin >> nextNumber;
if (nextNumber == -99){
cout << "the greatest number is " << firstNumber << endl;
cout << "the smallest number is " << firstNumber << endl;
break;
}
if (nextNumber > greatestNumber){
greatestNumber = nextNumber;
cout << "the greatest number is " << greatestNumber << endl;
cout << "the smallest number is " << firstNumber << endl;
} else {
cout << "the greatest number is " << greatestNumber << endl;
cout << "the smallest number is " << nextNumber << endl;
}
}
system("pause");
return 0;
}
没有firstNumber
和secondNumber
,只有currentNumber
。如果它大于greatestNumber
,则将其分配给greatestNumber
。然后循环获取新的currentNumber
并再次检查。
当用户结束时(除了用户输入-99
之外,可以有多种方式发生),结束循环并打印最大的数字。
哦,我建议您初始化greatestNumber
为零以外的东西,至少如果您希望用户能够输入负数(但大于-99
)。
对于最小的数字,有一个等效的变量smallestNumber
,初始化为一个非常大的值(如std::numeric_limits<int>::max()
),并对其进行相等检查(但使用小于而不是大于)。
一些伪代码:
int smallest = REALLY_BIG_NUMBER;
int largest = REALLY_SMALL_NUMBER;
int current;
loop while there is input to put in current
{
if current is your exit condition then exit loop
if current is larger than largest the reassign largest
if current is smaller than smallest then reassign smallest
}
print largest and smallest