标题:如何实现以下输入
只看楼主
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
结帖率:94.44%
已结贴  问题点数:20 回复次数:7 
如何实现以下输入
输入的内容就是一整篇文章。
文章由多个段落组成。
段落之间有空行隔开。
段落可以有多行。
单词长度不会超过 20 个字符。
比如:(以下三段内容)
Thank you, Dennis!

One of the most influential figures in the history of computing, Dennis Ritchie, has passed away at the age of 70 after a long illness.

This past week was a momentous one on the Linux Planet.
A giant of the computing era passed away, to whom we all owe debt of gratitude.

我在题目的输入部分就被卡了,最后两句话,它换了行,却又是同一段,我怎么处理?本来是是想用:
while(gets(ch)!=NULL)的,但是,一敲回车它就出结果了,可是我要这一整段话一起处理,这怎么解决啊?
搜索更多相关主题的帖子: 文章 computing history Thank 
2011-12-20 22:16
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:10 
你想干什么?

重剑无锋,大巧不工
2011-12-20 22:22
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
得分:0 
回复 2楼 beyondyf
Input

输入的内容就是一整篇文章。

文章由多个段落组成。
段落之间有空行隔开。
段落可以有多行。
单词长度不会超过 20 个字符。
就像上面提到的,每行的长度没有限制。
Output

为每个段落周围加上边框。
边框的四个角用加号(+)。
横向的边框使用减号(-)。
纵向的边框使用与号(|)。
文字和边框之间至少又一个空格的距离。
包括边框,每行的长度固定为 80 个字符。所以一行最多显示 76 个字母。
按照上一条规则,如果某一行的长度超过 76 个字母,要在合适的地方换行。
只能在单词之间换行,一个单词不能被拆分在两行。
段落之间没有空行。
Sample Input

Thank you, Dennis!

One of the most influential figures in the history of computing, Dennis Ritchie, has passed away at the age of 70 after a long illness.

This past week was a momentous one on the Linux Planet.
A giant of the computing era passed away, to whom we all owe debt of gratitude.
Sample Output


+------------------------------------------------------------------------------+
| Thank you, Dennis!                                                           |
+------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
| One of the most influential figures in the history of computing, Dennis      |
| Ritchie, has passed away at the age of 70 after a long illness.              |
+------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
| This past week was a momentous one on the Linux Planet.                      |
| A giant of the computing era passed away, to whom we all owe debt of         |
| gratitude.                                                                   |
+------------------------------------------------------------------------------+
HINT

你可能使用 Windows 系统做开发,在 Windows 的命令行提示符里,每一行下面会多出一个空行
但不要担心,这只是显示的问题,在 Linux 的终端下是能显示出漂亮得格式,放心大胆地做吧!

题目是这样的,可是我在输入的部分就被卡壳了,它的提示难道是说不需要考虑我原来说的问题吗?
(颜色标记的地方是我没办法处理的)
2011-12-21 22:34
lijy520
Rank: 2
等 级:论坛游民
帖 子:119
专家分:42
注 册:2007-8-8
得分:10 
可否判断 为连续'\n'时 为一段落
其它全部按getchar();

2011-12-21 22:48
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
不难,不过处理起来比较费事。对这类题没什么兴趣。

简单来说,第一步需要解决的是判断段落。可以判两个\n作为段落分割符。第二步,判断输入的串长。这里我不建议使用gets函数,题目中并没有提到输入样例一行的范围,所以没法预测缓冲区该建多大。在这道题里,这可能会很大。建议使用fgets(s, #, stdin)或scanf("%#[^\n]")来分段读取样例。然后就是按格式判断输出了,这需要细心的调试。

祝你做题愉快。

重剑无锋,大巧不工
2011-12-21 23:46
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
得分:0 
回复 5楼 beyondyf
3Q,我会努力的
2011-12-22 20:35
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
得分:0 
回复 4楼 lijy520
O(∩_∩)O谢谢
2011-12-22 20:35
曹曹cc
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:3
专家分:3
注 册:2012-1-8
得分:0 
用文件~~~
2012-01-10 12:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-358247-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.238866 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved