有没有谁有用递归算法演示汉诺塔过程的C语言程序?谢谢了!
基本要求:1.要有欢迎界面,提示用户选择盘子的个数,可以是1到10;2.演示界面要有清晰形象,每一步有移动的起止位置显示;3.可以选择至少两种以上的演示速度。最好有图形说...
基本要求:1.要有欢迎界面,提示用户选择盘子的个数,可以是1到10; 2.演示界面要有清晰形象,每一步有移动的起止位置显示; 3.可以选择至少两种以上的演示速度。 最好有图形说明、按键操作和一些程序语句的解释说明 希望有好心人能帮助小弟,谢谢了
展开
展开全部
#include<stdio.h>
#include<stdlib.h>
void
tim(int
k){
/*延时函数*/
int
i;
for(i=0;i<k;i++)
delay(5000);
}
void
move(char
x,char
y,int
n){/*移动*/
tim(n);
printf("%c-->%c\n",x,y);}
void
hanoi(int
k,int
n,char
one,char
two,char
three){
if(n==1)
move(one,three,k);
else
{
hanoi(k,n-1,one,three,two);
move(one,three,k);
hanoi(k,n-1,two,one,three);}
}
main(){
int
m,k;
printf("Hello!This
is
hanoi
Wrold!\n");
printf("input
the
number(1~10)
of
diskes:");
/*选择盘子个数*/
scanf("%d",&m);
printf("\nchoose
speed
1,2,3
:");/*选择速度*/
scanf("%d",&k);
printf("The
step
tp
moving
%3d
diskes:\n",m);
hanoi(50*k,m,'A','B','C');
/*三个柱分别命名为A,B,C*/
getch();
}
/*还要"最好有图形说明、按键操作和一些程序语句的解释说明"吗?加分先!*/
#include<stdlib.h>
void
tim(int
k){
/*延时函数*/
int
i;
for(i=0;i<k;i++)
delay(5000);
}
void
move(char
x,char
y,int
n){/*移动*/
tim(n);
printf("%c-->%c\n",x,y);}
void
hanoi(int
k,int
n,char
one,char
two,char
three){
if(n==1)
move(one,three,k);
else
{
hanoi(k,n-1,one,three,two);
move(one,three,k);
hanoi(k,n-1,two,one,three);}
}
main(){
int
m,k;
printf("Hello!This
is
hanoi
Wrold!\n");
printf("input
the
number(1~10)
of
diskes:");
/*选择盘子个数*/
scanf("%d",&m);
printf("\nchoose
speed
1,2,3
:");/*选择速度*/
scanf("%d",&k);
printf("The
step
tp
moving
%3d
diskes:\n",m);
hanoi(50*k,m,'A','B','C');
/*三个柱分别命名为A,B,C*/
getch();
}
/*还要"最好有图形说明、按键操作和一些程序语句的解释说明"吗?加分先!*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询