Word Reversal (简单字符串处理)
题目描述:
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.
For each test case, print the output on one line.
1
3
I am happy today
To be or not to be
I want to win the practice contest
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之前要吃掉换行