C++信息学奥赛1144:单词翻转
#include <iostream>
#include <string>
using namespace std;
int main()
{string str;// 输入一行字符串getline(cin, str);string arr;for (int i = 0; i < str.length(); i++){if (str[i] != ' '){arr += str[i]; // 将非空格字符添加到临时存储的字符串中}else{for (int j = arr.length() - 1; j >= 0; j--)cout << arr[j]; // 反向输出临时存储的字符串arr = ""; // 清空临时存储的字符串cout << " "; // 输出空格}}for (int j = arr.length() - 1; j >= 0; j--)cout << arr[j]; // 输出剩余的临时存储的字符串
}
该段代码实现了以单词为单位,反向输出一行字符串的功能。首先,通过getline(cin, str)
语句输入一行字符串。然后,定义一个临时存储字符串arr
,用于存储非空格字符。接下来,使用循环遍历字符串的每个字符,如果当前字符不是空格,则将其添加到临时存储字符串中。如果当前字符是空格,则通过逆序循环输出临时存储字符串的字符,并清空临时存储字符串。在每个单词之间输出一个空格。最后,再次逆序循环输出剩余的临时存储字符串。完成反向输出一行字符串的功能。