• 2014年杭电计算机研究生复试的笔试题目:2道acm编程题(2014):1.编写一个浏览器输入输出(hdu acm1088);2.encoding(hdu1020)


    //1088(参考博客:http://blog.csdn.net/libin56842/article/details/8950688)
    //1.编写一个浏览器输入输出(hdu acm1088);
    //思路:对已经输入的字符串进行处理,遇到<br><hr>分别进行处理。遇到多于80个字符(统计该行的长度)或者<br>或者结束,则换行;遇到<hr>,输出80个‘-’。
    #include<stdio.h>
    #include<string.h>
    #define N 10000
    int main()
    {
    char a[N];
    int i;
    int cnt = 0;//用于统计该行是否是达到80chars,当其为0的时候,说明是新的一行的开头
    int len;//用于记录该word的长度
    //一个个word通过每次读入进去,每个word放在字符串中,每次都会进行不同的处理
    //调试的时候发现,将html page整个input进去,每次执行的时候,就会读入以空格和换行为分隔的一个个单词,比如第一行分隔为"Hallo," " dies""ist""eine"
    while (~scanf("%s",a))
    {
    //如果此时读入的word的是<br>,则换行
    if (!strcmp(a,"<br>"))
    {
    printf(" ");
    cnt = 0;
    }
    //如果此时读入的word的是<hr>,
    else if (!strcmp(a, "<hr>"))
    {
    if (cnt)
    {
    //如果不是新的一行的话,需要先重新起一行
    printf(" ");
    //调试的时候跳出该循环,可以在循环外语句设置一个断点
    for ( i = 0; i < 80; i++)
    {
    printf("-");
    }
    printf(" ");
    }
    else
    {
    for (i = 0; i < 80; i++)
    {
    printf("-");
    }
    printf(" ");
    }
    cnt = 0;
    }
    else//判断该word长度和80chars的比较结果
    {
    len = 0;
    len = strlen(a);
    if (!cnt)//cnt为0的时候,说明是新的一行,就不用另起新的一行
    {
    cnt = len;
    printf("%s", a);
    }
    else if (cnt+len+1>80)//cnt是记录在输入该word之前该行的chars数,加上len是该行现在有的chars数,若该行大于80,则换行
    {
    cnt = len;
    printf(" %s", a);
    }
    else
    {
    cnt += len + 1;
    printf(" %s", a);
    }
    }
    }
    printf(" ");
    return 0;
    }

    //1020(C语言基础不够啊,要多多练习)
    //思路:在当前字符后,统计和当前字符相同的字符个数。
    //实现:循环遍历该字符串的每一个字符,判断其和其后的一个字符是否相同,如果相同,则count++;否则,当前字符后面的邻近的一个字符和其不相同,接着先判断count是否是1,如果是1,则直接输出不用继续判断了;如果不是1,则直接输出统计的个数,以及当前字符。
    #include<stdio.h>
    #include<string.h>
    #define N 100001
    char a[N];
    int main(){
    int count;
    int i;
    int n;
    scanf("%d", &n);
    while (n--)
    {
    scanf("%s", a);
    count = 1;
    for ( i = 0; i < strlen(a); i++)
    {
    //判断当前字符后面是否有和当前字符一样的字符,并统计个数
    if (a[i] == a[i + 1])
    {
    count++;
    }
    else
    {
    //如果没有和后面的字符相同的字符了,则根据count做出不同的操作

    //如果count==1,则输出
    if (count==1)
    {
    printf("%c", a[i]);
    }
    //否则,输出count和当前字符
    else
    {
    printf("%d%c", count, a[i]);
    count = 1;
    }
    }
    }
    printf(" ");
    }
    return 0;
    }

    一生有所追!
  • 相关阅读:
    【我读cachecloud】cachecloud-open-web模块controller
    【我读cachecloud】cachecloud项目概述
    [转]Kerberos协议
    【shell】我的wait为什么不能用
    【 一次性密码】TOTP
    【shell】再看一眼find--find使用中遇到的问题分析
    我知道点redis-单机数据库(RDB持久化)
    我知道点redis-数据结构与对象(对象)-对象实现
    我知道点redis-数据结构与对象(对象)-对象存储
    我知道点redis-数据结构与对象(链表)
  • 原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/8493246.html
Copyright © 2020-2023  润新知