21xrx.com
2024-09-20 06:13:49 Friday
登录
文章检索 我的文章 写文章
C++如何求一行整数中的第二小数
2023-07-10 14:57:47 深夜i     --     --
C++ 一行整数 第二小数

在编程语言中,算法是最基本也是最关键的一部分。如果你是一名C++程序员,那么你一定会遇到求一行整数中的第二小数这个问题。在本篇文章中,我们将讨论C++如何解决这个问题。

首先,我们需要明确一些术语。一行整数指的是一串由空格分隔的整数,我们需要在其中找到第二小的数。为了方便起见,我们将第二小的数定义为不重复的第二小整数,也就是说,如果有两个或更多的数相等,则我们应该跳过它们并继续找下一个不同的数。

那么,如何在C++中解决这个问题呢?解决这个问题的一个简单方法是将整数存储在数组中,然后使用C++中的sort函数对数组进行排序。排序后,我们只需要找到第一个不同于第一个数的数即可。

下面是使用数组和sort函数的代码:


#include <iostream>

#include <algorithm>

using namespace std;

int main()

{

  int n;

  cin >> n;

  int arr[n];

  for(int i = 0; i < n; i++)

    cin >> arr[i];

  sort(arr, arr + n);

  for(int i = 1; i < n; i++)

  {

    if(arr[i] != arr[0])

    {

      cout << arr[i] << endl;

      break;

    }

  }

  return 0;

}

这段代码首先从标准输入中读取n和一行整数,然后将它们存储在数组中。接下来,使用sort函数对数组进行排序。最后,我们从数组中找到第一个不同于第一个数的数,并输出它。

如果你想练习一下其他的方法,也可以使用以下递归函数:


#include <iostream>

#include <climits>

using namespace std;

int secondSmallest(int arr[], int n)

{

  int smallest = INT_MAX;

  int secondSmallest = INT_MAX;

  for(int i = 0; i < n; i++)

  {

    if(arr[i] < smallest)

    {

      secondSmallest = smallest;

      smallest = arr[i];

    }

    else if(arr[i] < secondSmallest && arr[i] != smallest)

    {

      secondSmallest = arr[i];

    }

  }

  return secondSmallest;

}

int main() {

  int n;

  cin >> n;

  int arr[n];

  for(int i = 0; i < n; i++)

    cin >> arr[i];

  cout << secondSmallest(arr, n) << endl;

  return 0;

}

这段代码使用一个递归函数来查找第二小的元素。首先,我们将最小值和次小值都设置为INT_MAX(即C++中的最大整数),然后遍历整个数组。如果当前元素小于最小值,那么它就成为了最小值,并将原来的最小值赋给次小值。如果当前元素小于次小值,但又不等于最小值,那么它就成为了新的次小值。最后返回次小值即可。

综上所述,在C++中找到一行整数中的第二小数非常简单。你可以使用数组和sort函数,也可以使用递归函数。无论哪种方法,都可以轻松地解决这个问题,并在实际编程中发挥其作用。

  
  

评论区

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