反转句子

C++Beginner
立即练习

介绍

在本实验中,你将逐步学习如何使用递归编写一个能够反转任意输入句子的 C++ 程序。该程序将从用户那里获取一个输入句子,并输出反转后的句子。

包含必要的库

在 C++ 中,为了使用像 cincout 这样的标准输入/输出流对象,我们需要包含 iostream 库。因此,请在 main.cpp 文件的开头添加以下代码块:

#include <iostream>
using namespace std

声明反转函数

在本程序中,我们需要一个函数来递归地反转字符串。请在 using namespace std; 语句后添加以下代码块:

void reverse(const string& a);

定义 main 函数

众所周知,main 函数是我们程序的入口。在 main 函数中,我们将要求用户输入一个句子,并将该句子传递给我们的 reverse 函数。

int main() {
  string str;

  cout << "Please enter a sentence: ";
  getline(cin, str);

  reverse(str);

  return 0;
}

在这里,我们要求用户输入一个句子,然后调用 reverse 函数并将输入的句子作为参数传递给它。

定义 reverse 函数

现在,我们需要定义之前声明的 reverse 函数。我们将使用递归来反转输入的句子。以下是该函数的实现:

void reverse(const string& str) {
  size_t numOfChars = str.size();

  if(numOfChars == 1) {
    cout << str << endl;
  }
  else {
    cout << str[numOfChars - 1];
    reverse(str.substr(0, numOfChars - 1));
  }
}

在这个函数中,我们首先使用 str.size() 计算输入字符串的长度。如果字符串的长度为 1,那么这是递归的基准情况,我们只需打印输入句子的最后一个字母。否则,我们打印最后一个字符,然后递归调用 reverse 函数,传入的字符串不包含最后一个字母。

编译并运行

我们已经完成了程序的编写。现在,我们需要编译并运行它。在 ~/project 目录下打开终端,并使用以下命令编译代码:

g++ main.cpp -o main

该命令将生成一个名为 main 的可执行文件。现在,使用以下命令运行程序:

./main

成功运行程序后,你可以看到如下输出:

Please enter a sentence: Study tonight
thgnot ydutS

总结

在本实验中,你学习了如何编写一个使用递归反转句子的 C++ 程序。你实现了一个 reverse 函数,该函数利用递归反转输入的句子,并在 main 函数中调用该函数,将输入的句子作为参数传递。最后,你在终端中编译并运行了程序,查看了输出结果。