c语言的选排列组合,C语言选排列,排列组合问题、

本文介绍了一个使用递归的预处理函数prem,用于对数组进行交换操作,以达到特定个数的元素排列。通过调用swap函数完成元素交换,并在main函数中实现了输入验证和计数功能。关键在于理解递归调用的逻辑及其在数组操作中的应用。
摘要由CSDN通过智能技术生成

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

lkiuoya8

2014.09.13

02ae427d08e371d7e90d5b995e828d6d.png

采纳率: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分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值