题意:
编写一段程序,可以识别字符串中的<br>,<hr>标记,并且对多余的空格和换行剔除。每行(包括空格)的字符长度不长于80。
<br>输出:换行;
<hr>输出:80个 - 符号(一行);
长度大于80时:换行
示例输入:
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
irritierenHtml genauso wenig
wiemehrere Leerzeilen.
示例输出:
Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen
wird.
Zweiproduzieren 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.
解决方案:
注意:
1、只有<hr><br>两种标记
2、每个单词间都有空间或换行
#include<stdio.h> #include<string.h> int main() { int sumChar;//一行字符个数统计 char str[81];//单词暂时存放变量 sumChar=0; while(scanf("%s",str)!=EOF) { if(strcmp(str,"<br>")==0) { printf("\n"); sumChar=0; } else if(strcmp(str,"<hr>")==0) { if(sumChar!=0)//处理此类情况:Zwei <hr> <hr> produzieren printf("\n"); printf("--------------------------------------------------------------------------------\n"); sumChar=0; } else { if(sumChar+strlen(str)+1<=80) { if(sumChar==0) printf("%s",str); else printf(" %s",str); sumChar+=strlen(str)+1; } else { printf("\n"); printf("%s",str); sumChar=strlen(str); } } } printf("\n"); return 0; }