当前位置:编程学习 > C/C++ >>

求九宫格c++代码

3*3的正方形表格中有1-8这八个数,另一个是空格。要求将数字往空格中移动,使这八个数按照指定的顺序组成环,空格在中间。
答案:/* 示例输入:1 3 2 5 4 6 7 8 */
#include <stdio.h>
#include <stdlib.h>
void input(char *s){
 int n[8],i;
 printf("Please input original order of numbers:");
 for(i=0;i<8;++i)
  scanf("%d",n+i);
 s[1]=n[0]+'0'; s[2]=n[1]+'0'; s[3]=n[2]+'0';
 s[8]=n[3]+'0'; s[0]=' ';  s[4]=n[4]+'0';
 s[7]=n[5]+'0'; s[6]=n[6]+'0'; s[5]=n[7]+'0';
}
void print(char *s){
 system("CLS");
    printf("[%c]-[%c]-[%c]\n",s[1],s[2],s[3]);
 printf(" | \\ | / | \n");
 printf("[%c]-[%c]-[%c]\n",s[8],s[0],s[4]);
 printf(" | / | \\ | \n");
 printf("[%c]-[%c]-[%c]\n",s[7],s[6],s[5]);
 printf("==============\t");
 system("PAUSE");
}
void swap(char *s,int a,int b){
    s[a]^=s[b]^=s[a]^=s[b];
 print(s);
}
void moveto(char *array,int src,int tgt){
 int i;
    printf("move %d to %d \n",src,tgt);
    swap(array,src,0);
 for(i=src;i>tgt;--i){
  swap(array,i-1,i);
 }
 swap(array,tgt,0);
}  
int main(){
 char array[9];
 int i,j;
 
 input(array);
 system("CLS");
 print(array);
 for(i=1;i<8;++i){
  if(array[i]-'0'==i)
   continue;
  for(j=i+1;j<9;++j)
   if(array[j]-'0'==i){
    moveto(array,j,i);
    break;
   }  
 }
 printf("Succeed! \n");
 system("PAUSE");
 return 0;
}

上一个:一段C++代码
下一个:怎么在界面上用ajax获取struts2中action中的返回值啊??

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,