题目链接:
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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦