acm试题求帮忙改错,”代码格式修改程序“
输入一行源代码整理成标准格式的代码,例如input: int main(){。{。。。{a+b=1;}}。。}
output: int main()
{
{
{
a+b=1;
}
}
}
注意:缩进的空格为四个为一个单位。
以下是我写的代码,编译通过,但不出结果;
求大神帮忙。。。
#include<stdio.h>
int kuohao=1,kuohao1=1;
static int m=0,geshu=0,huanhang=0;
char *str='\0';
char *str1='\0';
int geshi2(int kuohao1,int geshu);
int geshi1(int kuohao);
int geshi3(int huanhang);
int main()
{
scanf("%s",str);
int k=sizeof(str)/sizeof(char);
for(int i=0;i<=k;i++)
{
if(str[i]=='{')
geshu++;
}
for(m=0;m<=k;m++)
{
str1[m]=str[m];
switch(str[m])
{
case '(':case ')':
{
m++;
str1[m]='\n';
}break;
case ';':
{
geshi3(huanhang);
}break;
case '}':
{
geshi1(kuohao);
kuohao++;
}break;
case '{':
{
geshi2(kuohao1,geshu);
kuohao1++;
} break;
}
}
printf("%s\n",str1);
}
int geshi1(int kuohao)
{
for(int y=1;y<=4*kuohao;y++)//括号为一开始
{
str1[m]=' ';
m++;
}
str1[m]='{';
m++;
for(int y=1;y<=4*kuohao;y++)//括号为一开始
{
str1[m]=' ';
m++;
}
huanhang=4*kuohao+4;
}
int geshi2(int kuohao1,int geshu)
{
int gh=0;
gh=geshu-kuohao1+1;
for(int h=0;h<=4*gh;h++)
{
str1[m]=' ';
m++;
}
str1[m]='}';
m++;
}
int geshi3(int huanhang)
{
m++;
for(int y=1;y<=huanhang;y++)//括号为一开始
{
str1[m]=' ';
m++;
}
str1[m]='\n';
}