zoukankan      html  css  js  c++  java
  • UVA445 Marvelous Mazes

    问题链接UVA445 Marvelous Mazes

    题意简述:输入若干行字符串,将其转换为另外一个字符串输出。字符串中包括数字、大小写字母、"*"、"b"和"!",遇见"!"则输出换行;遇见连续的数字则将这些数字求和,之后输出和个数的字母或空格;遇见"b"则输出空格(若干个);遇见字母则输出字母(若干个)。

    问题分析:(略)

    程序说明封装了函数mygets()(函数gets()在新标准中,被建议不要使用,作用就自己做一个),其他都是套路。使用函数putchar()输出,要比使用函数printf()效率高一些。

    AC的C语言程序如下:

    /* UVA445 Marvelous Mazes */
    
    #include <stdio.h>
    #include <ctype.h>
    #include <string.h>
    
    #define MAXN 256
    
    int mygets(char s[])
    {
        int i = 0;
        char c;
    
        while((c = getchar()) && c != '
    ' && c != EOF)
            s[i++] = c;
        s[i] = '';
    
        return i > 0 || c != EOF;
    }
    
    int main(void)
    {
        char s[MAXN];
        int sum, len, i, j;
    
        while(mygets(s))
        {
            len = strlen(s);
            sum=0;
            for(i=0; i<len; i++) {
                if(isdigit(s[i]))
                    sum += s[i] - '0';  /* 数字的话计算输出个数 */
                else if(s[i] == '!')
                    putchar('
    ');      /* '!'的话,输出换行 */
                else {
                    /* 如果是字母b,则输出若干个空格;如果是其他字母怎输出若干个该字母 */
                    for(j=sum; j>0; j--)
                        putchar((s[i] == 'b') ? ' ' : s[i]);
                    sum=0;              /* 个数清零 */
                }
            }
            putchar('
    ');
        }
    
        return 0;
    }




  • 相关阅读:
    深入理解计算机系统读书笔记之第二章信息的表示和处理
    深入理解计算机系统读书笔记之第一章:漫游
    算法三之归并排序
    算法二之子集和数问题
    算法一之N皇后问题
    刚刚注册写一写
    linux alias(命令别名)
    linux [CTRL]+c与[CTRL]+d
    linux终端类型
    linux 进程简介
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564371.html
Copyright © 2011-2022 走看看