c语言如何编组合函数 c语言 组合

【C语言】编写函数(或方法):将某已知数组的奇数项组合成一个新的数组.在主函数(或主方法)

#includestdio.h

创新互联是一家专业提供崇州企业网站建设,专注与网站设计制作、成都网站制作、H5场景定制、小程序制作等业务。10年已为崇州众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

void OddArray (int a[],int b[])

{

int i;

for(i=0;i11;i++)

{

if(i%2==0)

b[i/2]=a[i];

}

}

main()

{

int a[]={1,2,3,4,5,6,7,8,9,10,11},b[6],i;

OddArray(a,b);

for(i=0;i6;i++)

printf("%-5d",b[i]);

}

求C语言组合函数

这题目有点意思,本人这两天研究了一下,针对char类型写了一个小程序,测试成功。大概思路是这样的:要做Cmn的组合,可以用一个有n个元素的指针数组,数组中的元素分别指向给定集合中的n个元素,每次取出这些指针所指的值,再按照一定的规律移动指针,如此循环直至结束。下面附上函数源代码及注释,希望对你有所帮助,至于char以外的其它集合,你也不妨试着写写。

void fun(char *strSrc,char *strDes,int n) //strSrc是源数组,strDes是目标数组,n为要选取的个数

{

int i,j,k,len,flag;

char **pp;

char *pSrc,*pDes;

flag=0;

len=strlen(strSrc);

if(nlen)

return;

pSrc=strSrc;

pDes=strDes;

pp=new char*[n];

for(i=0;in;i++) //初始时n个指针分别指向前n个数据

pp[i]=pSrc++;

while(1)

{

for(i=0;in;i++) //取当前组合数据赋给目标字符串

*pDes++=*pp[i];

*pDes++=' '; //为了看上去方便而加的分隔符

if(flag==1) //若完成则退出

{

*pDes='\0';

break;

}

if( *(pp[n-1]+1)!='\0' ) //若一组中最后一个指针还没有指向源字符串中最后一个数据

pp[n-1]++;

else

{

for(j=n-1;j0;j--) //从后往前寻找应该移动的指针

{

if(pp[j-1]+1!=pp[j]) //找到指针pp[j-1]

{

//如果该指针为第一个,并且与第二个只隔一个位置,说明下一组为最后一组

if((j-1==0)(pp[j-1]+2==pp[j]))

{

pp[j-1]++;

flag = 1;

}

else //否则将找到的指针及其后面的所有指针移动到新位置

{

pp[j-1]++;

for(k=j;kn;k++)

pp[k] = pp[k-1]+1;

}

break;

}

}

}

}

for(i=0;in;i++)

pp[i]=NULL;

delete []pp;

}

C语言编写一个嵌套函数计算组合数

#includestdio.h

int c(int n,int m){

int i,s=1;

for(i=m;i=m-n+1;i--)s*=i;

for(i=n;i=2;i--)s/=i;

return s;}

int f(int k,int m,int n){

int i,s=0;

for(i=k;i=k+n;i++)s+=c(i,m);

return s;}

int main(){

int k,m,n;

printf("输入k,m,n\n");

scanf("%d%d%d",k,m,n);

printf("%d",f(k,m,n));

return 0;}


网页标题:c语言如何编组合函数 c语言 组合
URL分享:http://pwwzsj.com/article/doioopp.html