| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖
标题:acm试题求帮忙改错,”代码格式修改程序“
取消只看楼主 加入收藏
shilec
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-5-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
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';
}
搜索更多相关主题的帖子: include 
2013-05-04 19:38
shilec
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-5-2
收藏
得分:0 
输入一行源代码整理成标准格式的代码,
例如input: int main(){。{。。。{a+b=1;}}。。}
output: int main()
{
    {
           {
                  a+b=1;
            }
     }
}
注意:缩进的空格为四个为一个单位。
这就是题目,其他那些废话就不大了

2013-05-04 19:56
shilec
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-5-2
收藏
得分:0 
#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++)//把str中的内容复制到str1中,边复制边判断
{
str1[m]=str[m];
switch(str[m])
{
      case ')':
    {
        m++;
        str1[m]='\n';
    }break;
    case ';':
    {
    geshi3(huanhang);
    }break;
    case '}':
    {    str[m]='\0';
    geshi2(kuohao1,geshu);
    kuohao1++;
    }break;
    case '{':
    {
    str[m]='\0';
        geshi1(kuohao);
kuohao++;
     
    } 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++;
    if(str[m]!='{'&&str[m]!='}')//如果后面为符号则不用添加‘{’和‘}’处理函数已经添加
    for(int y=1;y<=huanhang;y++)//;后添加空格
{
    str1[m]=' ';
    m++;
}
str1[m]='\n';
}
2013-05-04 19:57
shilec
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-5-2
收藏
得分:0 
回复 5楼 weipeng1217
谢谢,参考下思路
2013-05-05 10:40
shilec
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-5-2
收藏
得分:0 
回复 8楼 weipeng1217
非常感谢,我写的是把所有代码格式化后保存到串中输出,你的是直接输出字符并格式,我的太麻烦了,没想到那点,学习了,非常感谢
2013-05-05 11:28
快速回复:acm试题求帮忙改错,”代码格式修改程序“
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029244 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved