题目描述
如果你在一台没有安装Netscape浏览器的Macintosh机器上,试着阅读一个html文档,那是件非常困难的事情。
你的任务是要编程实现一个小的html浏览器。要求显示输入文件的内容,你需要知道html的标签:<br>表示换行,<hr>表示水平线,另外还有制表符,空格和换行符。每行不超过80个字符。
输入
输入包括一个你要显示的内容文本。这个文本包括一些单词和HTML标签,它们由一个或多个空格、制表符或换行符分割开的。
一个单词是指由0个或多个字母、数字和标点符号组成的一个序列。例如,abc,123 是一个词,但是abc, 123是两个词,即abc, and 123(即以空格作为单词的分隔符)。一个词不会超过81个字符,而且不会包含任何<或>符号。所有的HTML标签不是br就是hr。
输出
你应该按照如下规则来显示输入的文本:
(1) 如果你读入的词,结果行没有超过80个字符,那么就显示它,否则换行显示。
(2) 如果你读入<br>标签,则开始一个新行。
(3) 如果你读入<hr>标签,则要在新一行中显示80个‘-’字符。
(4) 最后以一个换行作为结束。
样例输入 复制
Hallo, dies ist eine
ziemlich lange Zeile, die in Html
aber nicht umgebrochen wird.
<br>
Zwei <br> <br> produzieren zwei Newlines.
Es gibt auch noch das tag <hr> was einen Trenner darstellt.
Zwei <hr> <hr> produzieren zwei Horizontal Rulers.
Achtung mehrere Leerzeichen irritieren
Html genauso wenig wie
mehrere Leerzeilen.
样例输出 复制
Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen
wird.
Zwei
produzieren zwei Newlines. Es gibt auch noch das tag
--------------------------------------------------------------------------------
was einen Trenner darstellt. Zwei
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html
genauso wenig wie mehrere Leerzeilen.
代码:
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
int count=0;
while(scanf("%s",&a)!=EOF)
{
if(strcmp(a,"<br>")==0)
{
printf("\n");
count=0;
}
else if(strcmp(a,"<hr>")==0)
{
if(count!=0){
printf("\n");
}
for(int i=1;i<=80;i++)
{
printf("-");
}
printf("\n");
count=0;
}
else{
if(count+strlen(a)>=80)
{
count=0;
printf("\n");
}
if(count!=0)
{
printf(" ");
count++;
}
printf("%s",a);
count+=strlen(a);
}
}
return 0;
}