鱼C论坛

 找回密码
 立即注册

火垂るの墓

https://fishc.com.cn/?750

两个月的学习,c语言的基本语法大致掌握了,发个汉诺塔程序纪念一下

已有 557 次阅读2011-5-8 11:35 |个人分类:心情|

#include <string.h>
#include <stdio.h>

void main()
{
 int initialization();//定义初始化图像函数
 int photo(int q00,int q01,int q02,
        int q10,int q11,int q12,
     int q20,int q21,int q22,
     int q30,int q31,int q32,
     int q40,int q41,int q42);//定义图像处理函数
 int number1();//定义图像处理分函数
 int number2();//定义图像处理分函数
 int number3();//定义图像处理分函数
 int number4();//定义图像处理分函数
 int number5();//定义图像处理分函数
    int number(); //定义图像处理分函数
 int manage(int a); //定义数据处理函数
 int master();//定义核心函数
 int ceiling(int a,int q00,int q01,int q02,
  int q10,int q11,int q12,
  int q20,int q21,int q22,
  int q30,int q31,int q32,
  int q40,int q41,int q42); //定义顶层数字监测函数
 int floor(int a,int q00,int q01,int q02,
  int q10,int q11,int q12,
  int q20,int q21,int q22,
  int q30,int q31,int q32, 
  int q40,int q41,int q42); //定义顶层数字监测函数
 int survey(int q00,int q01,int q02,
  int q10,int q11,int q12,
  int q20,int q21,int q22,
  int q30,int q31,int q32,
  int q40,int q41,int q42,int have1);//定义退出函数
 char a;//a:移动次数变量
 char b[10];
 printf("please wait...\n");
 printf("being initialization now\n");
 initialization();//初始化图像
s: printf("please input move number(1-5)\n");
 scanf("%c",&a);//接收移动次数
 if(49<=a&&a<=53)//判断移动次数取值范围
 {
 printf("your input move number is %c\n",a);
 }
 else
 {
  printf("input error,please input again\n");
  goto s;
 }
 printf("confirm,please input yes,no please import other key \n");
 scanf("%s",&b);
 if(0==strcmp("yes",b))//判断输入次数是否正确
 {
  printf("please wait ...\n");
  printf("being processed\n");
  a=a-48;//使a变回移动次数
  manage(a);//调用主函数
 }
 else
 {
  printf("please again import move number\n");
  goto s;
 }
}
int photo(int q00,int q01,int q02,
    int q10,int q11,int q12,
    int q20,int q21,int q22,
    int q30,int q31,int q32,
    int q40,int q41,int q42)
{
 int x=0,y=1,z=0,f=0;
 int q[15]={q00,q01,q02,
  q10,q11,q12,
  q20,q21,q22,
  q30,q31,q32,
  q40,q41,q42};
 while(f!=15)
 {
  while(z!=3)
  {
   if(q[x]!=0)
   {
    if(q[x]==y)
    {
     number1();
     y=1;
     x++;
    }
    else
    {
     y++;
     if(q[x]==y)
     {
      number2();
      y=1;
      x++;
     }
     else
     {
      y++;
      if(q[x]==y)
      {
       number3();
       y=1;
       x++;
      }
      else
      {
       y++;
       if(q[x]==y)
       {
        number4();
        y=1;
        x++;
       }
       else
       {
        number5();
        y=1;
        x++;
       }
      }
     }
    }
   }
   else
   {
    number();
    x++;
   }
   z++;
   f++; 
  }
  printf("\n");
  z=0;
  
 }
}
int initialization()
{
 photo(1,0,0,
  2,0,0,
  3,0,0,
  4,0,0,
  5,0,0);   
}
int number1()
{
 printf("    *    ");
}
int number2()
{
 printf("   * *   ");
}
int number3()
{
 printf("  * * *  ");
}
int number4()
{
 printf(" * * * * ");
}
int number5()
{
 printf("* * * * *");
}
int number()
{
 printf("    |    ");
}
int manage(int a)
{
 static int k=0;//k:跌代阀门
 for(;k!=1;)
 {
       
  if(a==2)
  {
   a--;
   k++;
   break;
  }
  else
  {
   a--;
   manage(a);
  }
 }
   master();//调用核心函数
}
int ceiling(int a,int q00,int q01,int q02,
   int q10,int q11,int q12,
   int q20,int q21,int q22,
   int q30,int q31,int q32,
   int q40,int q41,int q42)
{
 int f=0;
    int q[15]={q00,q01,q02,
  q10,q11,q12,
  q20,q21,q22,
  q30,q31,q32,
  q40,q41,q42,};
 if(a==2)
 {
  a=13;
 }
 else
 {
  a=14;
 }
 for(;q[a]!=0;a=a-3,f++)
 { 
  if(a==-2||a==-1)
  {
   break;
  }
 }
 if(f==0)
 {
  
 }
 else
 {
  a=a+3;
 }
 return a;
}
int floor(int a,int q00,int q01,int q02,
    int q10,int q11,int q12,
    int q20,int q21,int q22,
    int q30,int q31,int q32,
    int q40,int q41,int q42)
{
 int f=0;
 int q[15]={q00,q01,q02,
  q10,q11,q12,
  q20,q21,q22,
  q30,q31,q32,
  q40,q41,q42,};
 for(;q[a]==0||q[12]==0;a=a+3,f++)
 { 
  if(q[12]==0)
  {
   return 12;
  }
 }
 if(f==0)
 {
  
 }
 else
 {
 }
 return a;
}
int survey(int q00,int q01,int q02,
     int q10,int q11,int q12,
     int q20,int q21,int q22,
     int q30,int q31,int q32,
     int q40,int q41,int q42,int have1)
{
 int q[15]={q00,q01,q02,
  q10,q11,q12,
  q20,q21,q22,
  q30,q31,q32,
  q40,q41,q42,};
 int remainder,have3,w;
 remainder=have1%3;
 if(remainder==2)
 {
  have1=14;
  have3=11;
 }
 else
 {
  have1=13;
  have3=10;
 }
 for(;1;)
 {
  w=q[have1]-q[have3];
  if(q[have1]!=0&&have3!=-2)
  {
   if(w==1)
   {
    have1=have1-3;
    have3=have3-3;
    continue;
   }
   else
   {
    break;
   }
  }
  else
  {
   return 1;
  }
 }
 return 0;
}
int master()
{
 int d,z,b,i,v,answer;//d:调换中介变量;z:第一柱柱顶位置变量;b:第二柱柱顶位置变量;i:第三柱柱顶位置变量;v调换签名变量;answer:回复变量
 int t[3]={123,456,789};//初始化签名变量
 static int q[15]={1,0,0,//定义立体图像变量
  2,0,0,
  3,0,0,
  4,0,0,
  5,0,0};
 z=floor(0,q[0],q[1],q[2],
  q[3],q[4],q[5],
  q[6],q[7],q[8],
  q[9],q[10],q[11],
  q[12],q[13],q[14]);
 b=ceiling(2,q[0],q[1],q[2],
  q[3],q[4],q[5],
  q[6],q[7],q[8],
  q[9],q[10],q[11],
  q[12],q[13],q[14]);
 i=ceiling(3,q[0],q[1],q[2],
  q[3],q[4],q[5],
  q[6],q[7],q[8],
  q[9],q[10],q[11],
  q[12],q[13],q[14]);
 if(q[b]==0||q[i]==0)
 {
  if(q[b]==0&&q[i]==0)
  {
   d=q[z];
   q[z]=q[b];
   q[b]=d;
   z=floor(0,q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   photo(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   printf("if ok,please input any key carry on\n");
   getch();
   d=q[z];
   q[z]=q[i];
   q[i]=d;
   v=t[1];
   photo(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   printf("if ok,please input any key carry on\n");
   getch();
  }
  else if(q[b]==0)
  {
   d=q[z];
   q[z]=q[b];
   q[b]=d;
   v=t[0];
   photo(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   printf("if ok,please input any key carry on\n");
   getch();
  }
  else
  {
   d=q[z];
   q[z]=q[i];
   q[i]=d;
   v=t[1];
   photo(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   printf("if ok,please input any key carry on\n");
   getch();
  }
 }
 for(;1;)
 { 
  z=floor(0,q[0],q[1],q[2],
   q[3],q[4],q[5],
   q[6],q[7],q[8],
   q[9],q[10],q[11],
   q[12],q[13],q[14]);
  b=ceiling(2,q[0],q[1],q[2],
   q[3],q[4],q[5],
   q[6],q[7],q[8],
   q[9],q[10],q[11],
   q[12],q[13],q[14]);
  i=ceiling(3,q[0],q[1],q[2],
   q[3],q[4],q[5],
   q[6],q[7],q[8],
   q[9],q[10],q[11],
   q[12],q[13],q[14]);
  if(q[i]==1&&q[b]==0)
  {
   answer=survey(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14],i);
   if(answer==1)
   {
    break;
   }
   else
   {
   }
   
  }
  else if(q[b]==1&&q[i]==0)
  {
   answer=survey(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14],b);
   if(answer==1)
   {
    break;
   }
   else
   {
   }
  }
one:   if(q[z]<q[b]&&q[z]!=0&&v!=t[0]||q[b]==0)//第一柱为起始调换
    {
     if(q[b]!=0)
     {
      b=b-3;
     }
     d=q[z];
     q[z]=q[b];
     q[b]=d;
     v=t[0];
     photo(q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     printf("if ok,please input any key carry on\n");
     getch();
     z=floor(0,q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     b=ceiling(2,q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     i=ceiling(3,q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     if(q[i]==1&&q[b]==0)
     {
      answer=survey(q[0],q[1],q[2],
       q[3],q[4],q[5],
       q[6],q[7],q[8],
       q[9],q[10],q[11],
       q[12],q[13],q[14],i);
      if(answer==1)
      {
       break;
      }
      else
      {
      }
     }
     else if(q[b]==1&&q[i]==0)
     {
      answer=survey(q[0],q[1],q[2],
       q[3],q[4],q[5],
       q[6],q[7],q[8],
       q[9],q[10],q[11],
       q[12],q[13],q[14],b);
      if(answer==1)
      {
       break;
      }
      else
      {
      }
     }
     goto three;
    }
    else if(q[z]<q[i]&&q[z]!=0&&v!=t[1]||q[i]==0)
    {
     if(q[i]!=0)
     {
      i=i-3;
     }
     d=q[z];
     q[z]=q[i];
     q[i]=d;
     v=t[1];
     photo(q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     printf("if ok,please input any key carry on\n");
     getch();
     z=floor(0,q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     b=ceiling(2,q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     i=ceiling(3,q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14]);
     if(q[i]==1&&q[b]==0)
     {
      answer=survey(q[0],q[1],q[2],
       q[3],q[4],q[5],
       q[6],q[7],q[8],
       q[9],q[10],q[11],
       q[12],q[13],q[14],i);
      if(answer==1)
      {
       break;
      }
      else
      {
      }
     
     }
     else if(q[b]==1&&q[i]==0)
     {
      answer=survey(q[0],q[1],q[2],
       q[3],q[4],q[5],
       q[6],q[7],q[8],
       q[9],q[10],q[11],
       q[12],q[13],q[14],b);
      if(answer==1)
      {
       break;
      }
      else
      {
      }
     }
     goto two;
    }
two: if(q[b]<q[i]&&q[b]!=0&&v!=t[2]||q[i]==0)//第二柱为起始调换
  {
   if(q[i]!=0)
   {
    i=i-3;
   }
   d=q[b];
   q[b]=q[i];
   q[i]=d;
   v=t[2];
   photo(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   printf("if ok,please input any key carry on\n");
   getch();
   z=floor(0,q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   b=ceiling(2,q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   i=ceiling(3,q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   if(q[i]==1&&q[b]==0)
   {
    answer=survey(q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14],i);
    if(answer==1)
    {
     break;
    }
    else
    {
    }
   
   }
   else if(q[b]==1&&q[i]==0)
   {
    answer=survey(q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14],b);
    if(answer==1)
    {
     break;
    }
    else
    {
    }
   }
   goto one;
  }
  else if(q[b]<q[z]&&q[b]!=0&&v!=t[0]||(q[z]==0&&v!=t[0]))
  {
   if(q[z]!=0)
   {
    z=z-3;
   }
   d=q[b];
   q[b]=q[z];
   q[z]=d;
   v=t[0];
   photo(q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   printf("if ok,please input any key carry on\n");
   getch();
  
   z=floor(0,q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   b=ceiling(2,q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   i=ceiling(3,q[0],q[1],q[2],
    q[3],q[4],q[5],
    q[6],q[7],q[8],
    q[9],q[10],q[11],
    q[12],q[13],q[14]);
   if(q[i]==1&&q[b]==0)
   {
    answer=survey(q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14],i);
    if(answer==1)
    {
     break;
    }
    else
    {
    }
   
   }
   else if(q[b]==1&&q[i]==0)
   {
    answer=survey(q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14],b);
    if(answer==1)
    {
     break;
    }
    else
    {
    }
   }
   goto three;
  }
three:if(q[i]<q[z]&&q[i]!=0&&v!=t[1]||q[z]==0)//第三柱为起始调换
   {
    if(q[z]!=0)
    {
     z=z-3;
    }
    d=q[i];
    q[i]=q[z];
    q[z]=d;
    v=t[1];
    photo(q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    printf("if ok,please input any key carry on\n");
    getch();
    z=floor(0,q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    b=ceiling(2,q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    i=ceiling(3,q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    if(q[i]==1&&q[b]==0)
    {
     answer=survey(q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14],i);
     if(answer==1)
     {
      break;
     }
     else
     {
     }
    }
    else if(q[b]==1&&q[i]==0)
    {
     answer=survey(q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14],b);
     if(answer==1)
     {
      break;
     }
     else
     {
     }
    }
    goto two;
   }
   else if(q[i]<q[b]&&q[i]!=0&&v!=t[2]||q[b]==0)
   {
    if(q[b]!=0)
    {
     b=b-3;
    }
    d=q[i];
    q[i]=q[b];
    q[b]=d;
    v=t[2];
    photo(q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    printf("if ok,please input any key carry on\n");
    getch();
    z=floor(0,q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    b=ceiling(2,q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    i=ceiling(3,q[0],q[1],q[2],
     q[3],q[4],q[5],
     q[6],q[7],q[8],
     q[9],q[10],q[11],
     q[12],q[13],q[14]);
    if(q[i]==1&&q[b]==0)
    {
     answer=survey(q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14],i);
     if(answer==1)
     {
      break;
     }
     else
     {
     }
    
    }
    else if(q[b]==1&&q[i]==0)
    {
     answer=survey(q[0],q[1],q[2],
      q[3],q[4],q[5],
      q[6],q[7],q[8],
      q[9],q[10],q[11],
      q[12],q[13],q[14],b);
     if(answer==1)
     {
      break;
     }
     else
     {
     }
    }
    goto one;
   }
 }
}


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-5 03:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部