内工大acm校赛--整理代码

题目:小明搜到一行无缩进无换行代码,请帮小明整理代码。无for语句和case语句,而且只有一个主函数。你只要控制注意“;”“{”“}”这三个符号带来的缩进和换行效果就行。

Input:

输入只有一行,无缩进无换行字符,字符不超过10000009个。文件尾结束。

Output:

规范的缩进和换行,增加和减少缩进都以四个空格为单位。

Sample Input:

int main(){int a,b,c;while(cin>>a>>b){if(a>b){c=a+b;cout<<c<<endl;}else{c=b-a;cout<<c<<endl;}}}

Sample Output:

int main()

{

  int a,b,c;

  while(cin>>a>>b)

  {

    if(a>b)

    {

      c=a+b;

      cout<<c<<endl;

    }

    else

    {

      c=b-a;

      cout<<c<<endl;

    }

  }

}

Hint

增加和减少缩进量都以四个空格为单位。

#include<stdio.h>
int main()
{
    int num = 0;
    int c;
    char *str = "    ";
    int i;
    int flag = 0;
    while((c = getchar())!=EOF)
    {
        if( c == '{' )
        {
            putchar('
');
            for(i = 0; i < num ; i ++)
                printf("%s",str);
            putchar(c);
            num++;
            putchar('
');
            flag = 1;
        }
        else if( c == '}' )
        {
            num--;
            for(i = 0; flag && i < num ; i ++)
                printf("%s",str);
            putchar(c);
            putchar('
');
            flag = 1;
        }
        else if( c == ';' )
        {
            for(i = 0; flag && i < num ; i ++)
                printf("%s",str);
            putchar(c);
            putchar('
');
            flag = 1;
        }
        else if( c!='
' && c != '
')
        {
            for(i = 0; flag && i < num ; i ++)
                printf("%s",str);
            putchar(c);
            flag = 0;
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/xuhuaiqu/p/4437685.html