将1234依次存入一个char型数组内,自定义一个全排列列函数进行4个数字的全排列运算,但每次输出时只取后3位即可达到目的。代码如下:
#include "stdio.h"
void myfun(char *p,int i,int n){//自定义全排列函数
int j,t;
if(i-n)
for(j=i;j<=n;j++){
t=p[i],p[i]=p[j],p[j]=t;
myfun(p,i+1,n);//全排列递归调用
t=p[i],p[i]=p[j],p[j]=t;
}
else
printf(++p[5]%10 ? "%s " : "%s\n",p+1);
}
int main(int argc,char *argv[]){
char a[6]="1234";//多声明一个元素a[5]用来控制每行输出10个数
myfun(a,0,3);//用数组名和起末下标调用
if(a[5]%5)
printf("\n");
return 0;
}
运行结果: