逆序字符串
发布日期:2021-07-01 04:22:25 浏览次数:23 分类:技术文章

本文共 1652 字,大约阅读时间需要 5 分钟。

文章目录

1 将输入的字符串进行逆序输出

输入一个字符串,然后把这个字符串逆转输出。
如:

  • 输入:123456789
  • 输出:987654321
#include 
   
    #include 
    
     #include 
     
      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”。

思路分析:

方式一:

  1. 首先将每个单词进行逆序,“ecilA llac kcaJ”。
  2. 然后再将整个句子进行逆序,“Jack call Alice”。

方式二:

  1. 首先将整个句子进行逆序,“ecilA llac kcaJ”。
  2. 然后再将每个单词进行逆序,“Jack call Alice”。

下面以第一种方式进行实现:

#include 
   
    #include 
    
     #include 
     
      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;}

转载地址:https://muzimin.blog.csdn.net/article/details/102970578 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:统计输入字符串中英文单词的个数
下一篇:字符集:ASCII、GB2312、GBK、GB18030、Unicode

发表评论

最新留言

第一次来,支持一个
[***.36.148.114]2022年04月29日 05时23分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章