SDUST_OJ-1070-源代码的格式-AC

来源:互联网 发布:dbeaver数据库备份 编辑:程序博客网 时间:2024/05/19 20:41

这个题看着和麻烦,其实格式看完了之后思路还是比较简单的,就是判断特殊字符,控制格式。

首先,在读取数据这里卡了一下,用getchar在回车后就会阻塞就会停止,触发之后的事件。

所以想直接读取单个字符直接判断输出是不行了,那就先读到数组中。

之后就要注意格式了,这个题叙述和样例不太一样,具体询问老师后,似乎应该按照样例的来,即逗号后面有空格和左花括号前有空格,其他按叙述来。

AC代码:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>void suojin(int n){    int i;    for (i=0;i<n;i++)        printf("    ");}int main(){    char ch;    int i=0,n=0,slen;    char str[3000];    while((ch=getchar())!=EOF)    {        if (!isspace(ch))        {            str[i]=ch;            i++;        }    }    str[i]=0;    slen=strlen(str);    for (i=0;i<slen;i++)    {        if (str[i]=='{')        {            if (n) putchar(' ');            putchar(str[i]);            if (str[i+1]!=';') putchar('\n');            n++;            suojin(n);            continue;        }        else if (str[i]=='}')        {            if (str[i-1]!=';') putchar('\n');            n--;            suojin(n);            putchar(str[i]);            continue;        }        else if (str[i]==';')        {            putchar(str[i]);            if (str[i+1]!='{') putchar('\n');            if (str[i+1]!='{'&&str[i+1]!='}') suojin(n);            continue;        }        else if (str[i]==',')        {            putchar(str[i]);            putchar(' ');        }        else            putchar(str[i]);    }    return 0;}


 

0 0