⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数字移动.c

📁 C语言源码
💻 C
字号:
#include<stdio.h>

int a[]={0,1,2,5,8,7,6,3};
int b[9];
int c[9];
int count=0;

main()
{
	int i,j,k,t;
	void print();
	printf("Please enter original order of digits 1~8: ");
	for(i=0;i<8;i++)
		scanf("%d",&b[a[i ] ]);
	printf("The sorting process is as felow:\n");
	print();                   //输出初始矩阵
	for(t=-1,j=0;j<8&&t==-1;j++)//确定1所在的位置
		if(b[a[j] ]==1)t=j;      //t记录1的位置	
	for(j=0;j<8;j++)         //把1的位置定为环首
		c[j]=a[(j+t)%8];
	for(i=2;i<9;i++)          //从2开始依次调整数字
		//i正确的位置是i-1
		for(j=i-1;j<8;j++)
			if(b[c[j]]==i&&j!=i-1)
			{
				b[4]=i;
				b[c[j] ]=0;   //空出来的位置为0
				print();
				for(k=j;k!=i-1;k--)
				{
					b[c[k] ]=b[c[k-1] ];
					b[c[k-1] ]=0;
					print();
				}
				b[c[k] ]=i;
				b[4]=0;
				print();
				break;
			}
			else if(b[c[j] ]==i)break;
}

void print(void)
{
	int c;
	for(c=0;c<9;c++)
		if(c%3==2)printf("%2d\n",b[c]);
		else printf("%2d",b[c]);
	printf("---%2d---\n",count++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -