當前位置:首頁 » 編程語言 » 漢諾塔c語言

漢諾塔c語言

發布時間: 2022-02-10 00:02:31

⑴ 漢諾塔c語言

我給你個最經典的解法:
#include<stdio.h>
void main()
{
void hanoi(int n,char one,char two,char three);bsp; &nbs
int m;
printf("input the number of diskes:\n");
scanf("%d",&m);#include<stdio.h&
printf("The step to moveing %d diskes:\n",m);
hanoi(m,'A','B','C');
system("pause");char one,char two,ch
}
void hanoi(int n,char one,char two,char three)
{gt; void main() { &n<br/> void move(char x,char y);<br/> if(n==1)<br/> move(one,three);bsp; &nbs<br/> else<br/> {<br/> hanoi(n-1,one,three,two);p; void hanoi(int n,<br/> move(one,three);<br/> hanoi(n-1,two,one,three);<br/> }bsp; &nbs
}
void move(char x,char y)
{#include<stdio.h&
printf("%c-->%c\n",x,y);
}

⑵ 漢諾塔c語言高手進

你要Pascal的我還能幫幫你,C的我壓根不會

⑶ C語言漢諾塔程序

將以下內容全部復制到新建的源文件中:(本人自己寫的,因為你那課本上的代碼,沒解釋,書寫不規范,很難理解清楚,所以我直接新寫了一個完整的代碼,附帶詳細說明)
#include <stdio.h>
//漢諾塔x層塔從A塔整體搬到C塔,中間臨時B塔。
//x層塔是從大到小往上疊放。每次移動只能移動一層塔。並且在移動過程中必須保證小層在上邊
//藉助B塔可以將x層塔全部從A搬到C上,並且符合要求(在移動過程中大的那塊在下邊,小的那塊在上邊)
int main()
{
void tower(int x,char a,char b,char c); //聲明函數
int x=5,a='A',b='B',c='C'; //x表示有5層塔,具體要多少層自己修改這個值。abc分別表示ABC塔。

tower(x,a,b,c); //x層塔從a移動到c的全過程,主程序只有這條有效語句

return 0;
}

//以下是tower函數的定義
//參數解析:x層塔放在a上,b是中間塔,c是目標塔。即x層塔要從a搬到c上。
//此函數實現x層塔從a整體轉移到c上。以及這個過程是怎麼搬的全部過程。
void tower(int x,char a,char b,char c)
{
if(x==1)printf("將%d從%c放到%c\n",x,a,c); //只有1層塔時,直接從a搬到c上。
else //不止1層塔,則先將x-1層塔從a按照規律搬到b上,再將最後一塊從a搬到c上,最後再將b上的x-1層塔按照規律搬到c上。
{
tower(x-1,a,c,b); //先將x-1層塔從a按照規律搬到b上,注意參數b放在最後,因為放在最後的參數是准備搬過去的目標塔。
printf("將%d從%c放到%c\n",x,a,c); //將最後一塊從a搬到c上
tower(x-1,b,a,c); //最後再將b上的x-1層塔按照規律搬到c上,注意參數b放在開頭,因為x-1層是要從b上搬過去的。
}
}

⑷ 用C語言編漢諾塔

a,b,c就表示三個桿子而已,你寫d,e,f也沒什麼啊,這個就不用糾結了

⑸ 漢諾塔C語言程序

還要動畫?那個需要用到圖形庫的;
你用的是什麼開發環境啊

⑹ c語言漢諾塔.

# include <stdio.h>

void hannuota(int n,char A,char B, char C);

int main(void)
{

char ch1 = 'A';
char ch2 = 'B';
char ch3 = 'C';
int n;

printf("請輸入要移動的盤子的個數:");
scanf("%d",&n);

hannuota(n,'A','B','C');

return 0;
}

//將A柱子上的n個盤子藉助於B移動到C柱子上,
//每次移動時,必須保證大盤子在小盤子下面
//最大值不能是64
void hannuota(int n,char A,char B,char C)
{
/*
如果是1個盤子
直接將A柱子上的盤子從A移動到C
否則
先將A柱子上的n-1個盤子藉助於C從A移動到B
直接將A柱子上的盤子從A移動到C
最後將B柱子上的n-1個盤子藉助於A從B移動到C
*/

if (1 == n)
{
printf("將編號為%d的盤子從%c柱子移動到%c柱子\n",n,A,C);
}
else
{
hannuota(n-1,A,C,B);
printf("將編號為%d的盤子從%c柱子移動到%c柱子\n",n,A,C);
hannuota(n-1,B,A,C);

}
}

/*
在vc++6.0中的輸出結果:
------------------
請輸入要移動的盤子的個數:3
將編號為1的盤子從A柱子移動到C柱子
將編號為2的盤子從A柱子移動到B柱子
將編號為1的盤子從C柱子移動到B柱子
將編號為3的盤子從A柱子移動到C柱子
將編號為1的盤子從B柱子移動到A柱子
將編號為2的盤子從B柱子移動到C柱子
將編號為1的盤子從A柱子移動到C柱子
-------------------
*/

/*
供參考! 呵呵
*/

⑺ 用c語言編寫程序求漢諾塔的移動步驟

#include<stdio.h>
void move(char a,char b)
{
printf("%c->%c\n",a,b);
}
void f(int n,char a,char b,char c)
{
if(n==1) move(a,c);
else
{
f(n-1,a,c,b);
move(a,c);
f(n-1,b,a,c);
}
}
void main()
{
int n;
scanf("%d",&n);
f(n,'a','b','c');
}
這是我的代碼 前面的是定義一個函數 這里遞歸體現在函數裡面還有函數 於是會一次又一次的計算 直到最後把N-1以前的都移到B,最下面的移到C,再把其他的從B移到C。。 無返回的話 應該是這里用void 沒有return返回數值

⑻ C語言漢諾塔問題

哥們,你還沒明白什麼叫遞歸,用tc單步執行一遍看看你就會明白了,這里說太麻煩。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:333
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:374
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:609
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:29
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:103
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:939
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:736
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:800
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:507
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:369