先上效果图
再附上源代码:
汉诺塔:
#include "stdio.h"
#include "math.h"
int arrA[15], arrB[15], arrC[15]; // 分别为A、B、C
int length;
int lenA, lenB, lenC;
char plate[32];
// Make
void makeplate(int n)
{
int i;
if (n == length + 1)
{
for (i = 0; i < 2 * length + 3; i++)
{
if (i == length + 1)
{
plate[i] = '|';
}
else
{
plate[i] = '_';
}
}
}
else
{
if (n == 0)
{
for (i = 0; i < 2 * length + 3; i++)
{
if (i == length + 1)
{
plate[i] = '|';
}
else
{
plate[i] = ' ';
}
}
}
else
{
for (i = 0; i < 2 * length + 3; i++)
{
if (i == length + 1)
{
plate[i] = '|';
}
else
{
if (i >= length + 1 - n && i <= length || i > length + 1
&& i <= length + 1 + n)
{
plate[i] = '_';
}
else
{
plate[i] = ' ';
}
}
}
}
}
plate[i] = '\0';
}
// Draw
void drawtower()
{
int i;
printf(" ");
for (i = length; i >= 0; i--)
{
if (i <= lenA)
{
makeplate(arrA[i]);
printf("%s", plate);
}
else
{
makeplate(0);
printf("%s", plate);
}
if (i <= lenB)
{
makeplate(arrB[i]);
printf("%s", plate);
}
else
{
makeplate(0);
printf("%s", plate);
}
if (i <= lenC)
{
makeplate(arrC[i]);
printf("%s", plate);
}
else
{
makeplate(0);
printf("%s", plate);
}
&nb