21xrx.com
2025-03-30 09:33:41 Sunday
文章检索 我的文章 写文章
C++考试题目分享
2023-07-05 03:46:46 深夜i     9     0
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++的世界里闯出一片天地!

  
  

评论区

请求出错了