PAT Basic 1009. 说反话
1. 题目描述:
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
2. 输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
3. 输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
4. 输入样例:
Hello World Here I Come
5. 输出样例:
Come I Here World Hello
6. 性能要求:
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
思路:
首先利用gets()将字符串读入,然后遍历每一个字符,当遇到空格时将其替换为'\0',方便最后的输出(因为C风格字符串以空字符为结束标志)。这里flag用于标志一个单词的开始,创建的pChar字符数组用于记录每个单词的开头位置。
回看这里时发现好像直接倒序遍历字符串就好了,这样就不用记录每个单词的开头位置。
My Code:
#include <stdio.h>
int main(void)
{
char sentence[81];
char *pChar[80];
unsigned char count = 0; // record words number
unsigned char flag = 0; // to flag a start of word
gets(sentence); // input the string
pChar[0] = sentence;
while(*pChar[0] != '\0')
{
if(*pChar[0] != ' ' && flag == 0)
{
pChar[++count] = pChar[0];
flag = 1;
}
else if(*pChar[0] == ' ')
{
*pChar[0] = '\0';
flag = 0;
}
pChar[0]++;
}
for(int i = count; i >=1 ; i--)
{
printf("%s%c", pChar[i], i==1 ? '\0' : ' ');
}
return 0;
}
标签:pChar,char,PAT,输出,单词,flag,1009,Basic,字符串
From: https://www.cnblogs.com/tacticKing/p/17185400.html