回 帖 发 新 帖 刷新版面

主题:大家帮忙看一下

#include"iostream"
#define debug_mode
using namespace std;
void move(char x,char z);
void hanoi(int n,char x,char y,char z);
void main()
{    int num;
     cout<<"请输入盘子数:";
     cin>>num;
     cout<<"按\"汉罗塔\"的规则,把"<<num
         <<"个盘子从A针搬到C针的步骤是:"<<endl;
     hanoi(num,'A','B','C');
}
void move(char x,char z)
{    static int i;
     i++;
     cout<<i<<": "<<x<<" → "<<z<<endl;
}
void hanoi(int n,char x,char y,char z)
{    #ifdef debug_mode
         cout<<n<<" "<<x<<" "<<y<<" "<<z<<endl;
     #endif
     if(n==1)
         move(x,z);
     else{
         hanoi(n-1,x,z,y);
     move(x,z);
         hanoi(n-1,y,x,z);
     }
}
我从书上抄的 可老是报错 大家帮忙看看怎么回事

回复列表 (共3个回复)

沙发

void hanoi(int n,char x,char y,char z)
{    [color=FF0000]#ifdef debug_mode[/color]      // 往下移一行,预编译命令前面不能有东西。
         cout<<n<<" "<<x<<" "<<y<<" "<<z<<endl;
     #endif
     if(n==1)
         move(x,z);
     else{
         hanoi(n-1,x,z,y);
     move(x,z);
         hanoi(n-1,y,x,z);
     }
}

板凳

同意楼上的:

void hanoi(int n,char x,char y,char z)
{    
[color=FF00FF]#ifdef debug_mode   [/color]  
     [color=000000]cout<<n<<" "<<x<<" "<<y<<" "<<z<<endl;[/color]
[color=FF00FF]#endif[/color]
     if(n==1)
     {    
       move(x,z);
     }
     else
     {
         hanoi(n-1,x,z,y);
         move(x,z);
         hanoi(n-1,y,x,z);
     }
}

一般使用ifdef/else/endif时,尽量使用这种格式

3 楼

谢谢大家啦!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册