题意是对一段文本进行处理,如果读到 <br>,则换行;如果读到 <hr>,若当前行无字符,则输出 80 个 ’-‘ 并换行,否则在下一行输出 80 个 ’-‘ 再换行;如果一行的字符数(含空格)已达到 80,则换行。
记录一下当前行的字符数模拟即可,代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 char s[10000]; 6 int len,cnt = 0; 7 while(~scanf("%s",s)) 8 { 9 if(!strcmp(s,"<br>")) 10 { 11 printf(" "); 12 cnt = 0; 13 } 14 else if(!strcmp(s,"<hr>")) 15 { 16 if(cnt) printf(" -------------------------------------------------------------------------------- "); 17 else printf("-------------------------------------------------------------------------------- "); 18 cnt = 0; 19 } 20 else 21 { 22 len = strlen(s); 23 if(!cnt) //该行尚无字符 24 { 25 cnt = len; 26 printf("%s",s); 27 } 28 else if(cnt+len+1 > 80) //该行字符数会超过80 29 { 30 cnt = len; 31 printf(" %s",s); 32 } 33 else //该行已有字符,但字符数不会超过80 34 { 35 cnt += len+1; 36 printf(" %s",s); 37 } 38 } 39 } 40 printf(" "); 41 return 0; 42 }