为了账号安全,请及时绑定邮箱和手机立即绑定

Write a simple HTML Browser(hdu1088)

标签:
算法

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1088

题目描述:题目大意是模拟显示一个html页面。从input中读取数据后,进行如下规则的处理:如果读取的是一个单词(单词只以制表符、一个或多个空格、新行相分隔,
即“123,abc”是一个单词,但是"123, abc"是两个单词"abc”和“123,“,因为以空格分开了。)且这个单词显示后不会分行(一行只显示80个字符),那么就显示这个单词。如果读取的是<br>,就新起一行如果读取的是<hr>,新起一行,但如果你已经在一行的最前端要除外。并打印一行”--------------------“字符,然后再新起一行.


解题思路:逻辑上并没有什么,只是判断条件比较复杂。耐心写就可以AC了= =


#include<stdio.h>#include<string.h>int main(){char a[90];                //a存放字符串 int i,count=0;       //count记录当前行的位置,要在循环外置零 while(scanf("%s",a)!=EOF){if(!strcmp("<br>",a))    //若a=<br>,函数返回值为0,非则等于1 {        	printf("\n");count=0;              //新的一行          }else if(!strcmp("<hr>",a)) //若a=<hr>,函数返回值为0,非则等于1 {if(count)              //若count不为0,代表不是开头     printf("\n");for(i=0;i<80;i++)             //每行80个字符 printf("-");printf("\n");count=0;                //换行后count置零 }else                         //不满足以上两个命令,进行字符处理 {if(strlen(a)+count+1<=80)  //如果一行能装下 {if (!count)            //如果是在新的一行,直接输出 printf("%s",a);else                   //否则在前面先输出一个空格 printf(" %s",a);count+=strlen(a)+1;  //记录count的位置,因为有个空格,所以要+1 }else                      //如果一行装不下 {printf("\n%s",a);     //新起一行 count=strlen(a);      //记录位置 }}}printf("\n");                        //最后要有一个换行 return 0;}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消