cyk的小学妹

Problem Description

一天,cyk 又收到了勤奋好学的小学妹发来的代码,cyk 二话不说就打开了代码开始帮学妹找错。

不过,往往 cyk 收到的都是完全没有缩进的代码,这让他不得不先修改好缩进再帮学妹看代码。

渐渐地,cyk 面对越来越长的无缩进代码已经力不从心,他想请你帮助他写一个小程序,来实现自动格式化代码。

 

cyk 收到的代码都具有以下特征:

  • 无缩进,每行都顶头
  • 左花括号 '{' 永远在每行的第一个字符处
  • 右花括号 '}' 永远在每一行的末尾(可能出现多个右花括号)
  • 多个 if, else, for, while 不会出现在同一行
  • 代码很紧凑,不会出现单独的空行

cyk 偏好的格式化代码的规则如下:

  • 必须有缩进(每层缩进 4 个空格,左花括号和右花括号在单独的一行)
  • 只需要格式化好缩进,代码的其他部分保持原样

你能帮 cyk 写出这个小程序吗?如果 cyk 满意,他会送你一个 Accepted 做奖励。

Input

输入数据有多组(数据组数不超过 10),到 EOF 结束。

每组输入包含一段多行的文本,表示 cyk 收到的一份代码,以字符串 "#EOF" (不包括引号) 来标志每组输入的结束。

保证每行字符串的末尾没有多余的空格,而字符串中间可能出现空格。每行字符串的长度不超过 1000。

Output

对于每组输入,输出一段格式化好的代码。每组输出后面跟一行空行。

Example Input
#include<stdio.h>
int main()
{int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
return 0;}
#EOF
#include<stdio.h>
int main()
{int i,j,k,n,sum;
n=5;
sum=0;
for(i=0;i<n;++i)
{for(j=0;j<n;++j)
{for(k=0;k<n;++k)
{sum+=i*j*k;}}}
printf("%d\n",sum);
return 0;}
#EOF
Example Output
#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",a+b);
    return 0;
}

#include<stdio.h>
int main()
{
    int i,j,k,n,sum;
    n=5;
    sum=0;
    for(i=0;i<n;++i)
    {
        for(j=0;j<n;++j)
        {
            for(k=0;k<n;++k)
            {
                sum+=i*j*k;
            }
        }
    }
    printf("%d\n",sum);
    return 0;
}

Hint

你可以使用 gets 函数来读入包含空格的字符串。

.....................

源代码

01 #include<stdio.h>
02 #include<string.h>
03 void suo(int g)    
04 {
05     int i;
06     for(i=1;i<=g;i++)
07     {
08         printf("    ");
09     }
10 }
11 int main()
12 {
13     char daima[333];
14     int i,n,suojin=0;
15     while(gets(daima))
16     {
17          
18         if(strcmp(daima,"#EOF")==0)   
19         {
20         printf("\n");
21         continue;
22         suojin=0;  
23         }
24             n=strlen(daima);
25             suo(suojin);
26             for(i=0;i<n;i++)
27             {
28                 if(daima[i]=='{')
29                 {
30                     printf("%c\n",daima[i]);
31                     suojin++;
32                     suo(suojin);
33                 }
34                 else if(daima[i]=='}')
35                 {
36                     suojin--;
37                     printf("\n");
38                     suo(suojin);
39                     printf("%c",'}');      
40                 }
41                 else printf("%c",daima[i]);
42             }
43             printf("\n");
44     }
45     return 0;
46 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值