您的位置:首页 > 其它

Word Reversal (简单字符串处理)

2018-02-07 22:00 387 查看
题目描述:

For each list of words, output a line with each word reversed without changing the order of the words.

This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a
blank line followed by N input blocks. Each input block is in the format
indicated in the problem description. There is a blank line between
input blocks.

The output format consists of N output blocks. There is a blank line between output blocks.

Input
You will be given a number of test cases. The first line
contains a positive integer indicating the number of cases to follow.
Each case is given on a line containing a list of words separated by one
space, and each word contains only uppercase and lowercase letters.

Output
For each test case, print the output on one line.

Sample Input
1

3
I am happy today
To be or not to be
I want to win the practice contest

Sample Output
I ma yppah yadot
oT eb ro ton ot eb
I tnaw ot niw eht ecitcarp tsetnoc

1 //题意描述:输入一个字符串,不改变单词的顺序,将每个单词反转输出
2 //解题思路: 用gets读入,去头去尾后,判断出一个单词,将其复制到另一个字符串中逆序输出,直至字符串尾即可
3 #include<stdio.h>
4 #include<ctype.h>
5 #include<string.h>
6
7 void pri(char p[])
8 {
9     int i,l=strlen(p);
10     for(i=0;i<l;i++)
11         printf("#%c",p[i]);
12     printf("\n");
13 }
14
15 int main()
16 {
17     int T,r,i,j,k;
18     char s[5001],*p=NULL,s2[101];
19     scanf("%d",&T);
20     while(T--)
21     {
22
23         scanf("%d",&r);
24         getchar();
25         while(r--)
26         {
27             gets(s);
28             int l=strlen(s);
29             s[l]='\0';
30             //pri(s);
31
32             p=s;
33             while(!isalpha(*p))
34             {
35                 p++;
36             }
37             //pri(p);
38
39             l=strlen(p);
40             for(i=l-1;i>=0;i--)
41                 if(isalpha(p[i]))
42                     break;
43             p[i+1]=' ';
44             p[i+2]='\0';
45             //pri(p);
46
47             l=strlen(p);
48             for(i=0;i<l;)
49             {
50                 j=0;
51                 while(isalpha(p[i]))
52                 {
53                     s2[j++]=p[i++];
54                 }
55                 s2[j]='\0';
56
57                 for(k=j-1;k>=0;k--)
58                     printf("%c",s2[k]);
59
60                 if(i==l-1)
61                 printf("\n");
62                 else
63                 printf(" ");
64                 i++;
65             }
66         }
67         if(T != 0)
68         printf("\n");
69     }
70     return 0;
71 }
72 //易错分析
73 //gets之前要吃掉换行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: