21xrx.com
2024-09-20 05:35:48 Friday
登录
文章检索 我的文章 写文章
C++求最大数和次大数
2023-07-11 07:13:33 深夜i     --     --
C++ 最大数 次大数

在编程中,求最大数和次大数是一个常见的问题。C++提供了多种方法来解决这个问题。

一种常规的方法是使用两个变量来保存最大值和次大值,然后对输入的数进行比较。当输入的数大于最大值时,最大值变为输入的数,同时次大值变为原先的最大值;当输入的数大于次大值但小于最大值时,次大值变为输入的数。代码如下:


#include <iostream>

using namespace std;

int main()

{

  int maxNum = -9999, secondMaxNum = -9999, n;

  cout << "输入一组数(输入0结束):" << endl;

  cin >> n;

  while (n != 0) {

    if (n > maxNum)

      secondMaxNum = maxNum;

      maxNum = n;

    

    else if (n > secondMaxNum)

      secondMaxNum = n;

    

    cin >> n;

  }

  cout << "最大数为:" << maxNum << endl;

  if (secondMaxNum != -9999)

    cout << "次大数为:" << secondMaxNum << endl;

  

  else

    cout << "无次大数" << endl;

  

  return 0;

}

另一种方法是使用数组进行比较。首先将输入的数保存在数组中,然后找到数组中的最大值和次大值。代码如下:


#include <iostream>

#include <algorithm>

using namespace std;

int main()

{

  int maxNum = -9999, secondMaxNum = -9999, n;

  int arr[100], len = 0;

  cout << "输入一组数(输入0结束):" << endl;

  cin >> n;

  while (n != 0) {

    arr[len++] = n;

    cin >> n;

  }

  sort(arr, arr + len);

  maxNum = arr[len - 1];

  for (int i = len - 2; i >= 0; i--) {

    if (arr[i] < maxNum) {

      secondMaxNum = arr[i];

      break;

    }

  }

  cout << "最大数为:" << maxNum << endl;

  if (secondMaxNum != -9999)

    cout << "次大数为:" << secondMaxNum << endl;

  

  else

    cout << "无次大数" << endl;

  

  return 0;

}

无论使用哪种方法,都需要注意一些边界条件。例如,在第一种方法中,如果输入的数都小于等于-9999,则无法正确输出次大数。在第二种方法中,如果输入的数超过了数组的大小,则可能会出现数组越界的情况。

总之,在编程中,求最大数和次大数是一个基本的问题,需要掌握不同的解决方法,并注意边界条件,以确保正确性和可靠性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复