继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Write a simple HTML Browser(hdu1088)

九日王朝
关注TA
已关注
手记 180
粉丝 42
获赞 185

题目链接:

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;}


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP