未穿今脸盲的自我修养:c语言求救

来源:百度文库 编辑:杭州交通信息网 时间:2024/03/29 01:04:09
#include<stdio.h>
void Input(int t);
int b[20],a[20],n,flag;
void main()
{
int i,j,m,Number,min;
printf("InPut A Number: ");
scanf("%d",&Number);
flag=0;
if(Number<0)
{
flag=1;
Number=-Number;
}
/*n是控制输入数值的位数的*/
for(n=0;Number&& n<20;n++)
{
a[n]=Number%10;
Number/=10;
}
/*对输入的数每一位排序*/
for(i=0;i<n-1;i++)
{
min=a[i];
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
m=a[j];
a[j]=a[i];
a[i]=m;
}
}
}
for(i=0;i<20;i++) b[i]=-1;
if(n)Input(0);
getch();
}
void Input(int t)
{
int i,j;

for(i=0;i<n;i++)
{
if(b[i]==-1)
{
b[i]=a[t];
if(t>=n-1)
{
if(flag)printf("\n-");
for(j=0;j<n;j++)
printf("%d ",b[j]);
}
else
Input(t+1);
b[i]=-1;
}/*if*/
}/*for*/
}
这个程序的功能是实现排列,可小弟不懂input() 这个函数的算法或思想,谁能告诉小弟,将不胜感激!!!

递归调用,你拿一组实例自己逐步运行一下就知道为什么了,比我们这样给你说深刻