0
点赞
收藏
分享

微信扫一扫

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



举报

相关推荐

0 条评论