热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言实现句子中单词顺序反转

本题源自《C语言程序设计——现代方法》第八章编程练习14,要求编写一个程序,能够接收用户输入的一句话,并将其中的单词顺序进行反转。

本题来自《C语言程序设计——现代方法》第八章编程题14,任务是编写一个程序来反转输入句子中的单词顺序。

例如,输入:

Enter a sentence: you can cage a swallow can't you?

期望输出:

Reversed sentence: you can't swallow a cage can you?

解决方案概述:

使用getchar()函数读取每个字符,直到遇到句号、问号或感叹号等终止符号为止。这些终止符号会被单独存储。然后,从最后一个非空格字符开始向前遍历字符串,每遇到一个空格就停止,打印出当前的单词,再继续向前寻找下一个空格,直到处理完所有单词。

以下是具体的代码实现:

#include 
#define N 100

int main() {
int i = 0, j, cnt;
char ch, end;
char sentence[N];
printf("Enter a sentence: ");
while (1) { // 读取字符直至遇到终止符
ch = getchar();
if (ch == '.' || ch == '!' || ch == '?') break;
sentence[i++] = ch;
}
end = ch; // 存储终止符
--i; // 将索引回退到上一个有效字符
printf("Reversed sentence: ");
while (i >= 0) {
for (cnt = 0; (i >= 0) && (sentence[i] != ' '); i--, cnt++);
for (j = i + 1; cnt > 0; cnt--) printf("%c", sentence[j++]);
if (i > 0) printf(" ");
i--;
}
printf("%c\n", end);
return 0;
}

上述程序执行的结果如图所示:

示例输出

此为目前我能想到的一种解决方式,如果大家有更好的方法,欢迎交流分享。


推荐阅读
author-avatar
十只北羊鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有