一、知识点
此题,笔者自己写的代码中flag的设置极为精妙
二、题目
1、描述
对字符串中的所有单词进行倒排。
说明:
(1)、构成单词的字符只有26个大写或小写英文字母;
(2)、非构成单词的字符均视为单词间隔符;
(3)、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
(4)、每个单词最长20个字母;
数据范围:字符串长度满足 1≤𝑛≤10000
2、输入
输入一行,表示用来倒排的句子
3、输出
输出句子的倒排结果
三、自己写的代码
#include<stdio.h>
int main() {
char line[10002];
int i = 0, flag = 0, j;
fgets(line, 10002, stdin);
while (line[i] != 10 && line[i] != '\0') {
i++;
}
i--;
while (i >= 0) {
if (line[i] >= 'a' && line[i] <= 'z') {
flag++;
} else if (line[i] >= 'A' && line[i] <= 'Z') {
flag++;
} else {
if (flag > 0) {
for (j = i + 1; j <= i + flag; j++) {
printf("%c", line[j]);
}
printf(" ");
flag = 0;
}
}
if (i == 0 && flag > 0) {
for (j = 0; j < flag; j++) {
printf("%c", line[j]);
}
}
i--;
}
}