鱼C论坛

 找回密码
 立即注册
查看: 1568|回复: 6

[已解决]c语言初学之-汉诺塔

[复制链接]
发表于 2018-7-29 16:07:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 海绵爱上星 于 2018-7-29 16:14 编辑

#include <stdio.h>
#include <math.h>

void main()
{
        int n;
    char A,B,C;
    void hannota(int n,char,char,char);
   
    printf("请输入汉诺塔的层数n:\n");
    scanf("%d",&n);
    hannota(n,'a','b','c');


}

void hannota(n,A,B,C)
{
    void move(char,char);
    if (1 == n)
    {
        move(A,C);
    }



    else
    {
        hannota(n-1,A,C,B);
        move(A,C);
        hannota(n-1,B,A,C);
    }

}

void move(char x,char y)
{
   
    printf("%c --> %c\n",x,y);
}





为什么我的代码跑出来相对小甲鱼的多了前面4行;
跑出来如下:

最佳答案
2018-7-29 16:49:23
本帖最后由 claws0n 于 2018-7-29 16:51 编辑

您输入的 n 是多少?貌似 5

您的代码有小问题且不可阅读,请适当用空格
不需要 #include <math.h>
函数的声明放在 main() 之前,不要放在 main() 内部或函数内部
稍微整理您的代码

  1. #include <stdio.h>

  2. void hannota(int, char, char, char);
  3. void move(char, char);

  4. void main()
  5. {
  6.     int n;
  7.     char A,B,C;
  8.    
  9.     printf("请输入汉诺塔的层数n:\n");
  10.     scanf("%d", &n);
  11.     hannota(n,'a','b','c');
  12.    
  13. }

  14. void hannota(int n, char A, char B, char C)
  15. {

  16.     if (1 == n)
  17.     {
  18.         move(A, C);
  19.     }

  20.     else
  21.     {
  22.         hannota(n - 1, A, C, B);
  23.         move(A, C);
  24.         hannota(n - 1, B, A, C);
  25.     }

  26. }

  27. void move(char x,char y)
  28. {
  29.    
  30.     printf("%c --> %c\n", x, y);
  31. }

复制代码
c.1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-29 16:10:50 | 显示全部楼层
新手求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-29 16:49:23 | 显示全部楼层    本楼为最佳答案   
本帖最后由 claws0n 于 2018-7-29 16:51 编辑

您输入的 n 是多少?貌似 5

您的代码有小问题且不可阅读,请适当用空格
不需要 #include <math.h>
函数的声明放在 main() 之前,不要放在 main() 内部或函数内部
稍微整理您的代码

  1. #include <stdio.h>

  2. void hannota(int, char, char, char);
  3. void move(char, char);

  4. void main()
  5. {
  6.     int n;
  7.     char A,B,C;
  8.    
  9.     printf("请输入汉诺塔的层数n:\n");
  10.     scanf("%d", &n);
  11.     hannota(n,'a','b','c');
  12.    
  13. }

  14. void hannota(int n, char A, char B, char C)
  15. {

  16.     if (1 == n)
  17.     {
  18.         move(A, C);
  19.     }

  20.     else
  21.     {
  22.         hannota(n - 1, A, C, B);
  23.         move(A, C);
  24.         hannota(n - 1, B, A, C);
  25.     }

  26. }

  27. void move(char x,char y)
  28. {
  29.    
  30.     printf("%c --> %c\n", x, y);
  31. }

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-29 16:54:38 | 显示全部楼层
没错呀,帮你整理了下代码。

  1. #include <stdio.h>

  2. void hannota(int, char, char, char);
  3. void move(char, char);

  4. int main()
  5. {
  6.         int n;
  7.         char A, B, C;

  8.         printf("请输入汉诺塔的层数n:\n");
  9.         scanf("%d", &n);
  10.         hannota(n, 'x', 'y', 'z');

  11.         return 0;
  12. }

  13. void hannota(int n, char A, char B, char C)
  14. {
  15.         if (1 == n)
  16.         {
  17.                 move(A, C);
  18.         }
  19.         else
  20.         {
  21.                 hannota(n - 1, A, C, B);
  22.                 move(A, C);
  23.                 hannota(n - 1, B, A, C);
  24.         }

  25. }

  26. void move(char x, char y)
  27. {
  28.         printf("%c --> %c\n", x, y);
  29. }
复制代码


输出和python上的完全一样,有什么错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-29 17:44:58 | 显示全部楼层
claws0n 发表于 2018-7-29 16:49
您输入的 n 是多少?貌似 5

您的代码有小问题且不可阅读,请适当用空格

打印出来不会多4行吗。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-29 17:49:08 | 显示全部楼层
无符号整形 发表于 2018-7-29 16:54
没错呀,帮你整理了下代码。

一开始不是应该是x--->z,,但是跑出来是z--->y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-29 18:03:58 | 显示全部楼层
海绵爱上星 发表于 2018-7-29 17:49
一开始不是应该是x--->z,,但是跑出来是z--->y

我这里一切正常,你可能没有看全,拉动一下滚动条试一试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 09:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表