OpenJudge计算概论-单词倒排【把句子内单词的顺序翻转】

简介: /*================================================== 单词倒排 总时间限制: 1000ms 内存限制: 65536kB 描述 编写程序,读入一段英文(英文中不包含标点), 将所有单词的顺序倒排并输出,其中单词以空格分隔。
/*==================================================
单词倒排
总时间限制: 1000ms 内存限制: 65536kB
描述
编写程序,读入一段英文(英文中不包含标点),
将所有单词的顺序倒排并输出,其中单词以空格分隔。

输入
输入为一个字符串(字符串长度最大为100)
输出
输出为按要求排续后的字符串
样例输入
I am a student
样例输出
student a am I

注:这个代码是覃宗华写的。 
====================================================*/
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int main()
 6 {
 7     char a[500] = {0};
 8     int n, i, j;
 9     freopen("5.in","r",stdin);
10     while(gets(a))
11     {
12         n = strlen(a);
13         for(i=n-1;i>=0;i--)
14         {
15             if(a[i]==' ')
16             {
17                 for(j=i+1;a[j]!=' '&&a[j]!='\0';j++)
18                     cout<< a[j];
19                 cout<<" ";
20             }
21         }
22         for(i=0;a[i]!=' '&&a[i]!='\0';i++)
23             cout<<a[i];
24         cout << endl;
25     }
26     return 0;
27 }
 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char a[500],temp,b[100];//a数组存贮整个句子,b存储某一个单词 
 6     int i,len,j,k;
 7     gets(a);
 8     len=strlen(a);
 9     for(i=0;i<len/2;i++)//对整个字符串进行翻转 
10     {
11         temp=a[i];
12         a[i]=a[len-1-i];
13         a[len-1-i]=temp;
14     }
15     //printf("\n%s\n",a);
16     i=0;
17     j=0;
18     while(a[i]!='\0')
19     {
20         if(a[i]!=' ')
21         {//扫描句子,遇到非空格字符则存到b数组 
22             b[j]=a[i];
23             j++;
24         }
25         else
26         {//扫描句子时遇到空格,逆向输出b数组存贮的那个被逆序的单词 
27             for(k=j-1;k>=0;k--)
28             {
29                 printf("%c",b[k]);
30             }
31             printf(" ");
32             j=0;
33         }
34         i++;
35     }/**/
36     for(k=j-1;k>=0;k--)//最后一个单词需要单独处理 
37     {
38         printf("%c",b[k]);
39     }
40     printf("\n");
41     return 0;
42 }

 

 

 

 

相关文章
|
4月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
51 0
|
3月前
|
Python
每日一题 2047. 句子中的有效单词数
每日一题 2047. 句子中的有效单词数
|
4月前
每日一题(数字颠倒,单词倒排)
每日一题(数字颠倒,单词倒排)
29 1
|
C语言
【每日一题】 将一句话单词倒置,标点不倒置
【每日一题】 将一句话单词倒置,标点不倒置
175 0
【每日一题】 将一句话单词倒置,标点不倒置
|
4月前
leetcode-2047:句子中的有效单词数
leetcode-2047:句子中的有效单词数
31 0
|
11月前
|
算法
【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串
【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串
|
11月前
|
算法 索引
【算法挨揍日记】day08——30. 串联所有单词的子串、76. 最小覆盖子串
给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words = [&quot;ab&quot;,&quot;cd&quot;,&quot;ef&quot;], 那么 &quot;abcdef&quot;, &quot;abefcd&quot;,&quot;cdabef&quot;, &quot;cdefab&quot;,&quot;efabcd&quot;, 和 &quot;efcdab&quot; 都是串联子串。 &quot;acdbef&quot; 不是串联子串,因为他不是任何 words 排列的连接。
381 0
|
安全 算法 索引
对字符串进行分割并且补位的算法解析
重点掌握StringBuilder和StringBuffer和String的区别
对字符串进行分割并且补位的算法解析
【基础算法】浅浅刷个小题 # 找不同 # 字符串中的单词数 # 重新排列字符串 #
【基础算法】浅浅刷个小题 # 找不同 # 字符串中的单词数 # 重新排列字符串 #
|
C++
C/C++每日一练(20230506) 翻转词序、字符金字塔、单词搜索
C/C++每日一练(20230506) 翻转词序、字符金字塔、单词搜索
105 0