杭电OJ(HDOJ)1088题:Write a simple HTML Browser(字符操作)

题意:

编写一段程序,可以识别字符串中的<br>,<hr>标记,并且对多余的空格和换行剔除。每行(包括空格)的字符长度不长于80。

<br>输出:换行;

<hr>输出:80个 - 符号(一行);

长度大于80时:换行

示例输入:

Hallo, dies ist eine 

ziemlich lange Zeile, die in Html

aber nicht umgebrochen wird.

<br>

Zwei <br> <br> produzieren zwei Newlines. 

Es gibt auch noch das tag <hr> was einen Trenner darstellt.

Zwei <hr> <hr> produzieren zwei Horizontal Rulers.

Achtung mehrere Leerzeichen 


irritierenHtml genauso wenig 



wiemehrere Leerzeilen.

示例输出:

Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen

wird.

Zweiproduzieren zwei Newlines. Es gibt auch noch das tag

--------------------------------------------------------------------------------

was einen Trenner darstellt. Zwei

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html

genauso wenig wie mehrere Leerzeilen.

解决方案:

注意:

1、只有<hr><br>两种标记

2、每个单词间都有空间或换行

#include<stdio.h>
#include<string.h>
int main()
{
    int sumChar;//一行字符个数统计
    char str[81];//单词暂时存放变量
    sumChar=0;
    while(scanf("%s",str)!=EOF)
    {
        if(strcmp(str,"<br>")==0)
        {
            printf("\n");
            sumChar=0;
        }
        else if(strcmp(str,"<hr>")==0)
        {
            if(sumChar!=0)//处理此类情况:Zwei <hr> <hr> produzieren 
                printf("\n");
            printf("--------------------------------------------------------------------------------\n");
            sumChar=0;
        }
        else
        {
            if(sumChar+strlen(str)+1<=80)
            {
                if(sumChar==0)
                    printf("%s",str);
                else
                    printf(" %s",str);
                sumChar+=strlen(str)+1;

            }
            else
            {
                printf("\n");
                printf("%s",str);
                sumChar=strlen(str);

            }
        }
    }
    printf("\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值