总时间限制: 1000ms 内存限制: 65536kB
描述
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
输入
输入为一个字符串(字符串长度至多为100)。
输出
输出为按要求排序后的字符串。
样例输入
I am a student
样例输出
student a am I
答案
方法一
#include <stdio.h>
typedef struct {
char word[100];
} word;
int main() {
char string[100], *p=string, *pWord = NULL;
static word words[1000];
int wordListLast = 0, wordsListLast = 0;
gets(string);
for(p = string; *p != 0; p++) {
if(*p != ' ') {
words[wordsListLast].word[wordListLast++] = *p;
} else {
wordsListLast++;
wordListLast = 0;
}
}
for(int i = wordsListLast; i > -1; i--) {
for(pWord = words[i].word; *pWord != 0; pWord++) {
printf("%c", *pWord);
}
if(i != 0)
printf(" ");
}
}
方法二
#include <stdio.h>
int main() {
char string[100], *p=string, *pWord = NULL, words[1000][100];
int wordListLast = 0, wordsListLast = 0;
gets(string);
for(p = string; *p != 0; p++) {
if(*p != ' ') {
words[wordsListLast][wordListLast++] = *p;
} else {
wordsListLast++;
wordListLast = 0;
}
}
for(int i = wordsListLast; i > -1; i--) {
for(pWord = words[i]; *pWord != 0; pWord++) {
printf("%c", *pWord);
}
if(i != 0)
printf(" ");
}
}
一些感想
- 其实,可以不用单独弄一个结构体,一个二维数组就可以了