NOJ[1093] HTML 即HDU1088 对字符串的处理

  • [1093] HTML

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • If you ever tried to read a html document on a Macintosh, you know how hard it is if no Netscape is installed.
    Now, who can forget to install a HTML browser? This is very easy because most of the times you don't need one on a MAC because there is a Acrobate Reader which is native to MAC. But if you ever need one, what do you do?
    Your task is to write a small html-browser. It should only display the content of the input-file and knows only the html commands (tags) <br> which is a linebreak and <hr> which is a horizontal ruler. Then you should treat all tabulators, spaces and newlines as one space and display the resulting text with no more than 80 characters on a line.
  • 输入
  • The input consists of a text you should display. This text consists of words and HTML tags separated by one or more spaces, tabulators or newlines.
    A word is a sequence of letters, numbers and punctuation. For example, "abc,123" is one word, but "abc, 123" are two words, namely "abc," and "123". A word is always shorter than 81 characters and does not contain any '<' or '>'. All HTML tags are either <br> or <hr>.
  • 输出
  • You should display the the resulting text using this rules:
    If you read a word in the input and the resulting line does not get longer than 80 chars, print it, else print it on a new line.
    If you read a <br> in the input, start a new line.
    If you read a <hr> in the input, start a new line unless you already are at the beginning of a line, display 80 characters of '-' and start a new line (again).
    The last line is ended by a newline character.
  • 样例输入
  • 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 irritieren
    
    Html genauso wenig wie
    
    
    mehrere Leerzeilen.
  • 样例输出
  • Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen
    wird.
    Zwei
    
    produzieren 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.
    
  • 提示
  • 来源
  • Ulm Local 1999

     

    题意 :  输入1堆字符  每行最多80个   每个单词都是连续的  不连续的不算一个单词 即不给空格 tab 等分开的字符  一个单词中不包含<  >  包含其他符号
     
    如果遇到 <br> 则输出空格
    遇到<hr>  则换到下一行 然后输出80个-  然后再换一行 注意 如果是已经在一个新的一行了 就不用再换到下一行后再输出80个‘-’ 就可以直接输出
    输出的时候 每行最多有80个字符   每个单词之间有1个空格
     
     
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char str[100];
    
        int cnt=0;//数每行的字符数
        bool first=true;//记录是否是一行的开头 
        while(scanf("%s",&str)!=EOF)
        {
            if(strcmp(str,"<br>")==0){printf("\n");cnt=0;first=true;continue;}
            if(strcmp(str,"<hr>")==0)
            {
                if(!first){printf("\n");first=true;}
                for(int i=0;i<80;i++)printf("-");
                printf("\n");first=true;cnt=0;
                continue;
            }
            if(first)
            {
                printf("%s",str);
                cnt+=strlen(str);first=false;
                continue;
            }
            cnt+=(strlen(str)+1);first=false;
            if(cnt<=80)
            {
                printf(" %s",str);
                continue;
            }
            else
            {
                printf("\n");
                printf("%s",str);
                cnt=strlen(str);first=false;
            }
        }
        if(!first)printf("\n");//最后以新行结束
        return 0;
    }

     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值