c语言自定义函数排列组合 c语言选择排列函数

C语言基础,数组的排列组合

答:因为解决组合问题要用到阶乘,计算机系统不可能直接计算较大数的阶乘。如:本机: ULLONG_MAX = 18446744073709551615 为20位数,最大可计算 20! = 2432902008176640000 为19位数,以上是64位计算机、windows7(32位)、gcc10编译器的情况,所以不可能解决输入任意多个元素的问题。必须根据自己的系统来决定最多可以求多少元素的组合问题。

创新互联2013年开创至今,先为忻州等服务建站,忻州等地企业,进行企业商务咨询服务。为忻州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

c语言怎么用自定义函数排序

#include stdio.h

#include string.h#define NUM 3

struct student

{

char name[20]; /*姓名*/

long num; /*12位学号*/

double sum; /*总分*/

};

void Create_Students(struct student stu[NUM])

{

struct student *p;

printf("请输入学生姓名 学号(12位) 总分:\n");

for( p = stu; p stu+NUM; p++)

{

scanf("%s %d %lf",p-name,p-num,p-sum); }

}

void Order_Students(struct student stu[NUM])//起泡法

{

int i,j;

struct student temp;

for(i=NUM-1;i=0;i--)

for(j=0;ji;j++)

if(stu[j].sumstu[j+1].sum)

{

temp = stu[j];

stu[j] = stu[j+1];

stu[j+1]=temp;

}

}

void main()

{

int i=1;

struct student *p;

struct student stu[NUM];

Create_Students(stu);

Order_Students(stu);

printf("%-20s %-13s %-6s %4s\n","姓名","学号(12位)","总成绩","名次");

for(p=stu;pstu+NUM;p++,i++)

{

printf("%-20s %-13.0d %-8.2f %2d\n",p-name,p-num,p-sum,i);

}

}//你参考参考,嘿

C语言,输入一组数进行排序,由大到小排列,用自定义函数实现

给你一个直接插入排序

#include "stdio.h"

void InsertSort(int a[], int left, int right) {//对数组a从下标为left到right区域进行直接插入排序

int i, j, tmp;

for(i = left + 1; i = right; i++) {

for(j = i - 1, tmp = a[i]; j = left tmp a[j]; j++)

a[j + 1] = a[j];

a[j + 1] = tmp;

}

}

void main( ) {

int i, n, a[100];

scanf("%d", n);

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

scanf("%d", a[i]);

InsertSort(a, 0, n - 1);

printf("\n");

for(i = 0; i n; i++) printf("%d\t", a[i]);

}

C语言编程创建自定义函数sort(),sort函数中实现选择法升序排序,主函数输出排序后的数组元素

#include stdio.h

//选择排序算法,升序

void sort(int *arr,int n)

{

int i,j,k;

int tmp;

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

{

k=i;  //开始一趟选择排序,假定第i个元素是后面n-i+1个未排序的元素中最小的元素

for(j=i+1;jn;j++)

{

if(arr[k]  arr[j]) //如果发现比当前最小元素还小的元素,则更新记录最小元素的下标k

k=j;

}

//如果最小元素的下标不是后面n-i+1的未排序序列的第一个元素,则需要交换第i个元素和后面找到的最小元素的位置

if(k != i)

{

tmp=arr[k];

arr[k]=arr[i];

arr[i]=tmp;

}

}

}

int main()

{

int a[10]={ -5,-9,-8,3,9,2,-28,101,-395,0};

int i;

sort(a,10);

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

printf("%d ",a[i]);

printf("\n");

return 0;

}

//运行结果

F:\c_worka.exe

-395 -28 -9 -8 -5 0 2 3 9 101

c语言编程排列组合

1、求排列组合没有简单方法。方法只有一个,枚举。有几个位置需要列举,就需要几个循环。如果循环数量太多,可以用函数递归来枚举。

2、例程:

#includestdio.h

int main(){

int a[4]={1,3,4,7};        //第一个位置

int b[4]={2,5,8,10};    //第二个位置

int c[4]={6,9,11,12};    //第三个位置

int i,j,k;

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

for(j=0;j4;j++)

for(k=0;k4;k++)

printf("%d %d %d\n,",a[i],b[j],c[k]);//输出一种排列

getch();

return 0;

}

大一c语言用自定义函数求组合数Cmn 求大神 急

C语言中,每个函数都有返回值类型。可以是void,int,double,等,也可以是struct类型。

在返回值是void类型的函数中,return一般在最后一行,后面不加任何值,而且此时return可以省略。如:

void printResult(int n)

{

printf("%d\n",n);

return;

}

并不是return必须放在最后一行。只要达到这个函数的目的就能够返回:

如寻找学号是200的学生,如果找到就输出学号,找不到就返回的一个函数:

void findStudentByNumber(int n,int sn[],int m)

{//m是学生总数,n是查找的学号,sn是个数组,存放多个学生学号;

int i;

for(i=0;i!=m;i++)

if(sn[i]==n)

{

printf("%d",n);

return;//已经找到,不需要再找;

}

return;//找遍了,没找到,此处返回,此处可省略,因为是void返回类型;

}

非void返回类型的函数返回语句不能省略,并且要返回一个与返回类型相同的值。

如:

int add(int a,int b)

{

return a+b;

}

自定义函数的方法:VC中,定义函数分为两步:

I.声明:在main函数开头定义变量的位置,声明函数:定义上述函数声明是:

int add(int a,int b);

注意分号,声明前部不能有执行语句;

II.把下面的函数定义部分放在main函数外部

int add(int a,int b)

{

return a+b;

}

推荐放在main的后花括号后面,注意此处的int add(int a,int b)后面并没有分号。

VC里面,返回类型是int的函数可以省略声明部分


分享名称:c语言自定义函数排列组合 c语言选择排列函数
URL标题:http://azwzsj.com/article/hicpgj.html