#include
#include
#include
#include
int main(void)
void swap(int *a,int *b); //子函数声明
int i,j,k,n,puzzle[81]={0},parity[81]={0}; //拼图数组和奇偶性数组
char ch; //用来记录拼图数组可以转换成顺序矩阵数字拼图神器手机版,还是逆序矩阵
printf("游戏说明
printf("↑ :数字向上 ↓ :数字向下
printf("← :数字向左 → :数字向右
printf("Esc:退出程序 Space:重置矩阵
printf("
loop1:
printf("难度设置
n:");
scanf("%d",&n);
loop2:
system("cls"); //清屏
srand((unsigned)time(NULL)); //动态获取数据
for(i=0;iparity[j]) k ; //求奇偶性数组的“逆序数和”
if(k%2==0) printf("%d
顺序矩阵",n),ch='0'; //“逆序数和”为偶数时数字拼图神器手机版,是顺序矩阵
else printf("%d
逆序矩阵",n),ch='1'; //“逆序数和”为奇数时数字拼图神器手机版,是逆序矩阵
printf("
for(i=0;i1*(n-1)) swap(&puzzle[i],&puzzle[i-n]);break; //数字向下
case 75:if((i 1)%n!=0) swap(&puzzle[i],&puzzle[i 1]);break; //数字向左
case 77:if((i 0)%n!=0) swap(&puzzle[i],&puzzle[i-1]);break; //数字向右
case 27:exit(0); //退出程序
case 32:goto loop2; //重置矩阵
system("cls"); //清屏
switch(ch)
case '0':printf("%d
顺序矩阵
",n);break; //完成拼图的最终目标
case '1':printf("%d
逆序矩阵
",n);break; //完成拼图的最终目标
for(i=0;i {
if(puzzle[i]==0) printf("%*c",n,' '); //是0(空格)的位置数字拼图神器手机版,打印空格
else printf("%-*d",n,puzzle[i]); //是数字的位置数字拼图神器手机版,打印对应宽度的数字
if((i 1)%n==0&&i!=n*n-1) printf("
"); //每打印n个数字数字拼图神器手机版,换一行打印
for(i=0;i {
if(puzzle[i]!=i) break; //判断拼图数组是否为顺序矩阵或逆序矩阵
if(i==n*n-2)
{ //是顺序矩阵或是逆序矩阵时数字拼图神器手机版,完成拼图
printf("
恭喜你数字拼图神器手机版,拼图完成了!
"); //打印完成标志
printf("Continue(y/n)?");
if(getch()=='y')
system("cls"); //清屏
goto loop1; //重新开始
else
exit(0); //退出程序
getch(); //显示运行结果
return(0); //正常运行返回0
void swap(int *a,int *b)
int c;
c=*a;
*a=*b;
*b=c;
}数字拼图神器手机版。