1 将输入的字符串进行逆序输出
输入一个字符串,然后把这个字符串逆转输出。
如:
- 输入:123456789
- 输出:987654321
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(void) {
string str;
int i;
int j;
char tmp;
cout << "请输入一个字符串: " << endl;
cin >> str;
i=0;
j = str.length() - 1;
while (i < j) {
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
i++;
j--;
}
cout << str << endl;
system("pause");
return 0;
}
2 将输入的英文句子以英文单词为单位进行逆序输出
输入一句话,然后把这个字符串以单词为单位,逆转输出。比如将“Alice call Jack”转换为“Jack call Alice”。
思路分析:
方式一:
- 首先将每个单词进行逆序,“ecilA llac kcaJ”。
- 然后再将整个句子进行逆序,“Jack call Alice”。
方式二:
- 首先将整个句子进行逆序,“ecilA llac kcaJ”。
- 然后再将每个单词进行逆序,“Jack call Alice”。
下面以第一种方式进行实现:
#include <Windows.h>
#include <string>
#include <iostream>
using namespace std;
int main(void) {
char str[256] = { 0 };
int i = 0, j = 0;
cout << "请输入一句英文:";
gets_s(str, sizeof(str));
while (str[i])
{
/* 首先跳过前面的空格 */
while (str[i] == ' ')
{
i++;
}
j = i;
/* 找到一个完整的单词 */
while (str[j] && (str[j] != ' '))
{
j++;
}
/* 将找到的单词进行逆转 */
for (int k1 = i, k2 = j - 1; k1 < k2; k1++, k2--)
{
char tmp = str[k1];
str[k1] = str[k2];
str[k2] = tmp;
}
i = j;
}
/* 再将全部字符进行翻转即可得到最终结果 */
for (int k1 = 0, k2 = i - 1; k1 < k2; k1++, k2--)
{
char tmp = str[k1];
str[k1] = str[k2];
str[k2] = tmp;
}
cout << str << endl;
system("pause");
return 0;
}