生姜ZYX 发表于 2021-4-25 14:48:39

求助!汉诺塔

红色字体是问题

#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);
}

Uair梦云 发表于 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

生姜ZYX 发表于 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');
平常我们先定义变量类型和调用参数
...

谢谢{:5_109:}

生姜ZYX 发表于 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');
平常我们先定义变量类型和调用参数
...

请问如果不用这个单引号应该怎么写呢,还是不太懂这个调用参数的意思

Uair梦云 发表于 2021-5-1 11:42:52

本帖最后由 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这里也不用改
页: [1]
查看完整版本: 求助!汉诺塔