总时间限制: 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(" ");}
}
一些感想
- 其实,可以不用单独弄一个结构体,一个二维数组就可以了