用C语言实现将盘子从a搬到c,b作为辅助柱
时间: 2023-04-07 21:03:45 浏览: 129
好的,这是一个经典的递归问题,可以使用递归函数来解决。以下是一个示例代码:
```
#include <stdio.h>
void move(int n, char from, char to, char aux) {
if (n == 1) {
printf("Move disk 1 from %c to %c\n", from, to);
return;
}
move(n-1, from, aux, to);
printf("Move disk %d from %c to %c\n", n, from, to);
move(n-1, aux, to, from);
}
int main() {
int n = 3; // 盘子数量
move(n, 'A', 'C', 'B');
return 0;
}
```
这个程序会输出每一步的操作,例如:
```
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
```
希望能帮到你!
相关问题
c语言a,b,c排序由小到大
我可以回答这个问题。c语言中,可以使用if语句和循环语句来实现a,b,c排序由小到大的功能。具体实现方法可以参考以下代码:
```
#include <stdio.h>
int main()
{
int a, b, c, temp;
printf("请输入三个整数:\n");
scanf("%d%d%d", &a, &b, &c);
if (a > b)
{
temp = a;
a = b;
b = temp;
}
if (a > c)
{
temp = a;
a = c;
c = temp;
}
if (b > c)
{
temp = b;
b = c;
c = temp;
}
printf("排序后的结果为:%d %d %d\n", a, b, c);
return 0;
}
```
以上代码可以实现输入三个整数,然后将它们从小到大排序后输出。
定义函数解决汉诺塔问题:将A柱上的盘子通过B柱移动到C柱子,在main函数中输入汉诺塔盘子数n,输出移动路径。输出格式:"%c->%c " c语言代码
以下是C语言代码:
```c
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("%c->%c ", A, C);
} else {
hanoi(n - 1, A, C, B);
hanoi(1, A, B, C);
hanoi(n - 1, B, A, C);
}
}
int main() {
int n;
printf("请输入汉诺塔盘子数n:");
scanf("%d", &n);
printf("移动路径为:");
hanoi(n, 'A', 'B', 'C');
printf("\n");
return 0;
}
```
函数 `hanoi` 是递归实现汉诺塔问题的函数,参数 `n` 表示要移动的盘子数,参数 `A`、`B`、`C` 分别表示三个柱子。当 `n` 等于 1 时,直接将盘子从 A 柱移动到 C 柱;否则,先将 `n-1` 个盘子从 A 柱通过 C 柱移动到 B 柱,再将最后一个盘子从 A 柱移动到 C 柱,最后将 B 柱上的 `n-1` 个盘子通过 A 柱移动到 C 柱。主函数中先输入盘子数 `n`,然后调用 `hanoi` 函数输出移动路径。