21xrx.com
2024-12-22 18:29:50 Sunday
登录
文章检索 我的文章 写文章
C++考试题目分享
2023-07-05 03:46:46 深夜i     --     --
C++考试 题目分享 编程语言 程序设计 面向对象编程

最近刚刚参加了一场C++考试,题目难度较高,但是也收获了很多经验。现在就来和大家分享一下我在考试中遇到的一些题目。

1. 写一个函数:将一个字符串反转过来。

这道题目考查的是对字符串中字符的处理。简单的解法就是用双指针交换字符位置,代码如下:


void reverseString(string& s) {

  int left = 0, right = s.size() - 1;

  while (left < right) {

    swap(s[left++], s[right--]);

  }

}

2. 写一个函数:找到一个整数数组中第二大的数字,如果没有第二大的数字则返回-1。

这道题目考查的是对数组元素的处理。一个比较简单的解法就是先排序,然后找到第二大的数字。如果没有第二大的数字,则返回-1。代码如下:


int findSecondLargest(vector<int>& nums) {

  if (nums.size() < 2) return -1;

  sort(nums.begin(), nums.end());

  int largest = nums.back(), secondLargest = -1;

  for (int i = nums.size() - 2; i >= 0; i--) {

    if (nums[i] < largest) {

      secondLargest = nums[i];

      break;

    }

  }

  return secondLargest;

}

3. 写一个函数:找到一个整数数组中的两个数,使得它们的和等于给定的目标值。

这道题目考查的是对数组元素和循环的处理。常见的解法是用哈希表记录数组中的元素,然后在后续循环中查找目标值减去当前值是否出现在哈希表中。代码如下:


vector<int> twoSum(vector<int>& nums, int target) {

  unordered_map<int, int> hash;

  vector<int> res;

  for (int i = 0; i < nums.size(); i++) {

    if (hash.find(target - nums[i]) != hash.end()) {

      res = {hash[target - nums[i]], i};

      break;

    }

    hash[nums[i]] = i;

  }

  return res;

}

以上就是我在C++考试中遇到的一些题目和解法。当然,C++的题目还有很多很多,我们需要多刷题多总结经验,才能在实际应用中熟练运用它们。祝大家都能在C++的世界里闯出一片天地!

  
  

评论区

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