注册 登录
编程论坛 意见和建议

初学c语言,花两天编了一个程序,可是不能运行出想要的结果

xxxc 发布于 2013-12-25 18:13, 4861 次点击
题目:输入盘子数n(n>=2),演示汉诺塔的移动过程,要求:
(1)盘子A,B,C 柱使用字符来绘制,初始时盘子在A 柱上,通过B 柱最终移
动到C 柱上
(2)显示出盘子在几个柱之间的移动过程。
我编的程序:
#include<stdio.h>
#define N 5
void main()
{
    void move(int p,int q);
    void daxiao(int n);
    void kong(int n);
    int n=N,p=1,q=0,i;
    daxiao(n);
    printf("A\n");
    kong(n);
    printf("B\n");
    kong(n);
    printf("C\n");
    for(i=2^N-1;i<=1;i--)
    {
        move(p,q);
        p++;
    }
}
void move(int p,int q)
{   
    int n;
    void yige(int n);
    void daxiao(int n);
    void kong(int n);
    void half(int m,int n);
    if(p%2==0)
    {
        p++;
        n--;
    }
    else
    {
        p=p;
        n=n;
    }
    while(p%2!=0&&q%2==0)
    {
        yige(n);
        printf("A\n");
        daxiao(n-1);
        printf("B\n");
        half(n+1-q,N);
        printf("C\n");
    }
    while(p%2==0&&q%2!=0)
    {
        kong(n);
        printf("A\n");
        daxiao(n-1);
        printf("B\n");
        half(n+1-q,N);
    }
    while(p%2!=0&&q%2!=0)
    {
        daxiao(n-2);
        printf("A\n");
        yige(n-1);
        printf("B\n");
        half(n+1-q,N);
    }
    while(p%2==0&&q%2==0)
    {
        daxiao(n-2);
        printf("A\n");
        kong(N);
        printf("B\n");
        half(n+1-q,N);
    }
}
void daxiao(int n)
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        printf("|");
        for(j=1;j<=i;j++)
            printf("__");
        printf("|");
        printf("\n");
    }
}
void kong(int n)
{
    int i;
    for(i=1;i<=n;i++)
        printf("\n");
    printf("\n");
}
void yige(int n)
{
    int i;
    printf("|");
    for(i=1;i<=n;i++)
        printf("__");
    printf("|");
    printf("\n");
}
void half(int m,int n)
{
    int i,j;
    for(i=m;i<=n;i++)
    {
        printf("|");
        for(j=1;j<=i;j++)
            printf("__");
        printf("|");
        printf("\n");
    }
}
我的思路真的很混乱,可是我也不知道该怎么写
0 回复
1