奇妙迷宫

                     奇妙的迷宫

 

Time Limit:   1000MS       Memory Limit:   65535KB
Submissions:   6       Accepted:   1

 

Description
本题中你的任务是写一支可以画迷宫的程式,这个迷宫由A-Z,26个字母及*(星号)和空白字元组成。你的程序必须从input读入迷宫的信息,输入将包含数列字元,你的程序必须依照指示画出迷宫。迷宫的每一行都会借由一系列的数字和字元来表达,数字代表这个字元被使用多少次。如果数字超过一位数则这个字元重复出现的次数为每一位数相加的总和。

 

Input
在input中小写的"b"代表空白字元,惊叹号(!)以及换行都代表结束一列。 迷宫的行数并没有限制,但是每一行不会超过132个字元。

 

Output
输出这个迷宫,其中小写的字元均需要转换为大写。参考Sample Input and Sample Output.

 

Sample Input

 

1T1b5t!1T2b1t1b2T!1T1b1t2b2T!1T3b1T1b1T!3T3b1t!1T3b1T1b1T!5T1*1T
 

11x21b1x
4x1b1x

 

Sample Output

 

T TTTTT
T  T TT
T T  TT
T   T T
TTT   T
T   T T
TTTTT*T
 
XX   X
XXXX X

注意:

1、格式问题,对'!'再加回车的处理

2、如果对getchar不熟悉,可以参看http://www.cnblogs.com/jiangjun/archive/2012/05/16/2503676.html

或者换成数组输入,也是一样的

 

# include<stdio.h>
# include<string.h>
int main()
{
    char ch;
    int sum =0,cnt;
    int leap=0;
    char c;
    while((ch=getchar())!=EOF)
    {
            if(ch>='0'&&ch<='9')
            {
                if (!leap)
                {
                    leap=1;
                    sum = 0;
                }
                sum+=ch-'0';
            }
            else
            {
                leap=0;
                if(ch>='a'&&ch<='z'&&ch!='b')//将除b以外的小写转换成大写,strupr只能处理字符串
                    ch-=32;
                if(ch=='\n'&&c=='\n')continue;//在这里PE了好几次,如果先有'!',再按下回车,就不用计入了
                switch(ch)
                {
                    case 'b':c = ' ';break;
                    case '!':c = '\n';
                        sum = 1;
                        break;
                    case '\n':c= '\n';
                        sum = 1;
                        break;
                    default :c = ch;break;
                }
                cnt=sum;
                while(cnt--)//这里不能用sum,否则当while停止后,sum就为-1,就会继续不停地循环
                    printf("%c",c);
            }
        }
    return 0;
}

 

 

 

posted on 2012-09-23 14:10  即为将军  阅读(423)  评论(0)    收藏  举报

导航