鱼C论坛

 找回密码
 立即注册
查看: 2930|回复: 4

[已解决]求助!汉诺塔

[复制链接]
发表于 2021-4-25 14:48:39 | 显示全部楼层 |阅读模式

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

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

x
红色字体是问题

#include<stdio.h>
/*
汉诺塔问题 ;原来a上有n个盘子将之放到另一个柱子上,一直都是小上大下,可以使用三个柱子。需要打印移动次数和流程
a b c
*/
void hanoi(int n,char a,char b,char c);
void print(char x,char y);  //打印流程
int count=1;//纪录次数

int main()
{
        int num;
        printf("Please enter the number of plate:\n");
        scanf("%d",&num);
        hanoi(num,'a','b','c');     这一步加单引号是什么意思
        return 0;
}

void hanoi(int n,char a,char b,char c)      //这里代表将a柱子上的盘子借助b柱子移动到c柱子
{
        if(n==1)
        {
                print(a,c); //如果是一个盘子直接将a柱子上的盘子移动到c
         }
         else
         {
                 hanoi(n-1,a,c,b);//将a柱子上n-1个盘子借助c柱子,移动到b柱子
                 print(a,c);         //再直接将a柱子上的最后一个盘子移动到c
                 hanoi(n-1,b,a,c);          //然后将b柱子上的n-1个盘子借助a移动到c
         }
}

void print(char x,char y)
{
        printf("第%d次移动:%c to %c\n",count++,x,y);
}
最佳答案
2021-4-25 18:19:56
void hanoi(int n,char a,char b,char c);
hanoi(num,'a','b','c');
平常我们先定义变量类型和调用参数
这里为了节省代码,将三个调用参数('a','b','c')直接调入函数 hanoi
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-25 18:19:56 | 显示全部楼层    本楼为最佳答案   
void hanoi(int n,char a,char b,char c);
hanoi(num,'a','b','c');
平常我们先定义变量类型和调用参数
这里为了节省代码,将三个调用参数('a','b','c')直接调入函数 hanoi
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-27 10:27:48 | 显示全部楼层
Uair梦云 发表于 2021-4-25 18:19
void hanoi(int n,char a,char b,char c);
hanoi(num,'a','b','c');
平常我们先定义变量类型和调用参数
...

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

使用道具 举报

 楼主| 发表于 2021-4-27 10:38:37 | 显示全部楼层
Uair梦云 发表于 2021-4-25 18:19
void hanoi(int n,char a,char b,char c);
hanoi(num,'a','b','c');
平常我们先定义变量类型和调用参数
...

请问如果不用这个单引号应该怎么写呢,还是不太懂这个调用参数的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 11:42:52 From FishC Mobile | 显示全部楼层
本帖最后由 Uair梦云 于 2021-5-1 11:59 编辑

单引号是传入函数的参数,如果不用单引号,那就设置三个字符串变量,类型也可以是浮点等
总之可以改成:
char a='A',b='B',c='C';//这里的内容就随便改了
hanoi(num,a,b,c)
或者:
char u[]='第一个盘子',t[]='第二个盘子',s[]='第三个盘子'//u[]字符串,如果编译器不显示中文就换英语
hanoi(num,u,t,s)//变量名为u,t,s那么这里也用u,t,s

void hanoi(int n,char a,char b,char c) //这里的a,b,c是形参,即使上面变量名改成u,t,s这里也不用改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-9 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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