很久之前做的一道水题,题意是输入迷宫代码翻译成图形,代码如下:
#include <stdio.h>
#include <string.h>#include <ctype.h>
#define LOCAL
void print(char mistery[])
{
int len=strlen(mistery);
char a1,a2;
int sum,i,j,k;
sum=mistery[0]-'0';
for(i=0;i<132;i++)
{
if(isdigit(mistery[i])!=0&&isdigit(mistery[i+1])!=0)
sum=sum+mistery[i+1]-'0';
if(isdigit(mistery[i])!=0&&isdigit(mistery[i+1])==0)
{
if(mistery[i+1]!='b')
{
for(k=0;k<sum;k++)
printf("%c",mistery[i+1]);
sum=((mistery[i+2]=='!')?mistery[i+3]-'0':mistery[i+2]-'0');
}
else
{for(k=0;k<sum;k++)
printf(" ");
sum=((mistery[i+2]=='!')?mistery[i+3]-'0':mistery[i+2]-'0');
}
}
if(mistery[i+1]=='!')
printf("\n");
}
}
int main()
{
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
char mistery[135]={'\0'};
int i,j,data=0;
while(gets(mistery)!=NULL)
{
if(mistery[0]=='\0')
{
printf("\n");
continue;
}
for(i=0;i<strlen(mistery);i++)
if(mistery[i]=='!')
break;
if(data!=0)
{
print(mistery);
for(j=0;j<135;j++)
mistery[j]='\0';
printf("\n");
}
else
{
print(mistery);
for(j=0;j<135;j++)
mistery[j]='\0';
printf("\n");
data++;}
}
return 0;
}
//Judge的时候报的RuntimeError一般是野指针,数组越界,堆栈溢出,除0