ZOJ 1151 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.
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
题意概括:把输入的字符串以空格为界限进行逆置
解题思路:模拟一下整个过程即可
AC代码:
#include<stdio.h> #include<string.h> int main(void) { char a[1005]; int N, i, j, len, k, n; scanf("%d", &N); while(N--) { scanf("%d", &n); getchar(); while(n --) { k = 0; gets(a); len = strlen(a); for(i = 0; a[k] != '\0'; i ++) { if(i == 0) { j = i; while(a[j] != ' ' && a[j] != '\0') { j ++; } if(a[j] == '\0') { k = j; } j = j - 1; while(i <= j) { printf("%c", a[j]); j --; } } else { if(a[i] == ' ') { j = i; j ++; while(a[j] != ' ' && a[j] != '\0') { j ++; } while(i < j && a[j] != '\0') { printf("%c", a[j]); j --; } if(a[j] == '\0') { k = j; } if(a[j] == '\0') { j --; printf(" %c", a[j]); while(i + 1 < j && a[j] != '\0') { j --; printf("%c", a[j]); } } } } } printf("\n"); } if(N != 0) { printf("\n"); } } return 0; }