满意答案
lkiuoya8
2014.09.13
采纳率:56% 等级:8
已帮助:8人
#include
int counter=0;
int num;///
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
void prem(int x,int y,int *a)//x:要取的数的个数 y数组总个数
{
int i;
if(x==0)
{
for(i=0;i
printf("%d ",a[i]);
printf("\n");
counter++;
}
else
{
for(i=num-x;i
{
swap(&a[i],&a[num-x]);
prem(x-1,y,a);/
swap(&a[i],&a[num-x]);///
}
}
}
void main()
{
int a[200];
int i=0;
printf("请输入要排的数字:\n");
for(;;i++)
{
scanf("%d",&a[i]);
if(a[i]==0){break;}//输入0停止输入,也可以指定其他的数字
}
E1:
printf("请输入要取几个数:");
scanf("%d",&num);
if(num>i)
{
printf("输入数字大于总个数,请重输!\n");
goto E1;
}
prem(num,i,a);/
printf("counter=%d\n",counter);
while(1);
}
加 “//” 为我修改之处,递归调用,请仔细体会下其中的含义即可知道本程序
此外由于考虑到程序的完善,加了检测输入提取个数必须不大于实际个数
00分享举报