题目要求:

输入一个数字序列{a1,a2,…,an},将该序列进行排列,并输出每一种排列方式。

#include "stdio.h" getStep(int m[]) /*显示数阵中数字移动的步骤*/ { int i,j,tmp; for(i=0;i<7;i ) /*冒泡排序*/ for(j=0;j<7-i;j ) if(m[j]>=m[j 1]) { tmp = m[j]; m[j] = m[j 1]; m[j 1] = tmp; /*数据的交换*/ printf("(%d# --> 0#)\n",j 1); printf("(%d# --> %d#)\n",j 2,j 1); printf("(0# --> %d#)\n",j 2); /*输出移动步骤*/ } printf("\n"); } Print(int m[]) /*打印出当前数阵的状态*/ { printf(" [%d]--[%d]--[%d]\n",m[0],m[1],m[2]); printf(" | %c | %c | \n",92,47); printf(" [%d]--[ ]--[%d]\n",m[7],m[3]); printf(" | %c | %c | \n",47,92); printf(" [%d]--[%d]--[%d]\n",m[6],m[5],m[4]); } main() { int i , m[8]; printf("Please input 8 integer (1~8) to arrange this matrix\n"); for(i=0;i<8;i ) scanf("%d",&m[i]); printf("The initial data matrix is like\n"); Print(m); printf("\nMove Step:\n"); getStep(m); printf("The result of moving is\n"); Print(m); getche(); }

运行结果:

c语言如何将数字从小到大排列(c语言计算数字的排列)(1)

运行结果

,