21xrx.com
2024-09-19 09:55:24 Thursday
登录
文章检索 我的文章 写文章
C++例题详解
2023-07-13 14:55:46 深夜i     --     --
C++ 例题 详解 编程 经验分享

C++是一种流行的编程语言,被广泛地应用于各种领域的开发。对于初学者来说,学习这门语言的过程中,实践是非常重要的一环。在实践中,练习各种例题是非常有效的方法。本文将针对一些常见的C++例题进行详细的解答。

1. 求最大公约数和最小公倍数

这是一个常见的例题,可以使用辗转相除法求解。具体步骤如下:

(1) 如果a < b,则交换a和b

(2) 如果a % b == 0,则b为最大公约数,a*b为最小公倍数

(3) 否则,令c = a % b,a = b,b = c,返回(2)

代码如下:

int gcd(int a, int b) {

  if (a < b) {

    swap(a, b);

  }

  if (a % b == 0)

    return b;

  return gcd(b, a % b);

}

int lcm(int a, int b) {

  return a * b / gcd(a, b);

}

2. 斐波那契数列

斐波那契数列是指:1、1、2、3、5、8、13、21…,前两个数是1,之后的每个数都是前两个数之和。可以使用递归的方式求解。代码如下:

int fib(int n) {

  if (n == 1 || n == 2)

    return 1;

  return fib(n - 1) + fib(n - 2);

}

3. 排序

排序是C++中经常要做的一个操作,常见的有冒泡排序、快速排序和归并排序。这里以快速排序为例进行说明。具体步骤如下:

(1) 选取一个数作为基准点(一般选取第一个数)

(2) 把比基准点小的数放在左边,比基准点大的数放在右边

(3) 分别对左右两边的数进行递归排序,直到只剩下一个数或者没有数

代码如下:

void quickSort(vector & nums, int left, int right) {

  if (left >= right)

    return;

  int i = left, j = right, base = nums[left];

  while (i < j) {

    while (i < j && nums[j] >= base)

      j--;

    nums[i] = nums[j];

    while (i < j && nums[i] < base) {

      i++;

    }

    nums[j] = nums[i];

  }

  nums[i] = base;

  quickSort(nums, left, i - 1);

  quickSort(nums, i + 1, right);

}

以上是三个常见的C++例题的解答。通过练习和掌握这些例题,可以加深对C++的理解,提高编程能力。同时,也可以通过查找和解答各种例题,逐渐提高解决问题的能力和思维灵活度。

  
  

评论区

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