C语言之函数调用06—彩球排列

//函数调用+递归法

/*

==========================================================

题目:将4个红球,3个白球,3个黄球排成一排,共有多少种排法?球无编号!

==========================================================

*/

#include<stdio.h>

int J(int n)

{

if(n==0||n==1)

return 1;

else

return n*J(n-1);

}

int PL(int m,int n)

{

return J(m)/J(m-n)/J(n);

}

main()

{

int k,h;

k=PL(10,4)*PL(6,3)*PL(3,3);

printf("共有%d种排法!\n",k);

}

/*

==========================================================

评:排列组合题目,关键是要理解排列和组合的含义,知道其公式:

A(m,n)=m!/(m-n)!

C(m,n)=m!/(m-n)!/n!

==========================================================

*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 17:04:03

C语言之函数调用06—彩球排列的相关文章

C语言之函数调用19—总结

C程序的函数调用共涵盖18个例题,包含了递归.递推.字符串操作.矩阵操作.格式输出等内容. 相比之前的基本算法,函数调用已经初见其效率,至此,相信大家对函数调用也有了比较好的认识,就是先表达出功能,当要解决问题时,只要简单调用即可.我们常常会听说C的强大,也是因为她有着调用函数的功能,而且函数可以自己实现. 接下来作者会推出文件操作的基础编程方法,希望大家能够共同进步. 不积跬步无以至千里!共勉! 二〇一五年八月二日  夜 附: C语言之函数调用18-多字符串排序 2015-08-02 01:0

深入理解C语言的函数调用过程 【转】

转自:http://blog.chinaunix.net/uid-25909619-id-4240084.html 原文地址:深入理解C语言的函数调用过程 作者:wjlkoorey258 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程,以加深对一些基础知识的理解.    先看一个最简单的程序: 点击(此处)折叠或打开 /*test.c*/ #include <stdio.h> int foo1(int m,int n,int p) { int x = m + n + p; ret

c语言中函数调用的本质从汇编角度分析

今天下午写篇博客吧,分析分析c语言中函数调用的本质,首先我们知道c语言中函数的本质就是一段代码,但是给这段代码起了一个名字,这个名字就是他的的这段代码的开始地址 这也是函数名的本质,其实也就是汇编中的标号.下面我们会接触到一些东西 比如 eip 就是我们常常说的程序计数器,还有ebp和esp (这里是俩个指针,记得我们以前学8086也就一个sp堆栈指针)分别为EBP是指向栈底的指针,在过程调用中不变,又称为帧指针.ESP指向栈顶,程序执行时移动,ESP减小分配空间,ESP增大释放空间,ESP又称

C++语言学习(十二)——C++语言常见函数调用约定

C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数就会出现堆栈异常等现象.上述现象出现在C和C++的代码混合使用的情况下或在C++程序中使用第三方库(非C++语言开发)的情况下,原因是函数调用约定(Calling Convention)和函数名修饰(Decorated Name)规则导致的.函数调用约定决定函数参数入栈的顺序,以及由调用者函数还是被

c语言基础学习06

=============================================================================涉及到的知识点有:1.C语言库函数.字符输入函数:gets和fgets.字符输出函数:puts和fputs.求字符串长度函数strlen.字符串追加函数strcat.字符串有限追加函数strncat.字符串比较函数strcmp.字符串有限比较函数strcmp.字符串拷贝函数strcpy.字符串有限拷贝函数strncpy.格式化字符串函数spri

嵌入式C语言自我修养 06:U-boot镜像自拷贝分析:section属性

6.1 GNU C 的扩展关键字:attribute GNU C 增加一个 atttribute 关键字用来声明一个函数.变量或类型的特殊属性.声明这个特殊属性有什么用呢?主要用途就是指导编译器在编译程序时进行特定方面的优化或代码检查.比如,我们可以通过使用属性声明指定某个变量的数据边界对齐方式. attribute 的使用非常简单,当我们定义一个函数.变量或类型时,直接在它们名字旁边添加下面的属性声明即可: __atttribute__((ATTRIBUTE)) 这里需要注意的是:attrib

C语言之函数调用07—求4个数的最大公约数和最小公倍数

//函数调用 /* ========================================================== 题目:求4个数的最大公约数和最小公倍数. ========================================================== */ #include<stdio.h> long gys(long m,long n) { int t,r; if(m<n) {t=m;m=n;n=t;} while((r=m%n)!=0)

C语言之函数调用18—多字符串排序

//字符串排序***** /* =============================================================== 对任意个字符串升序排列! =============================================================== */ #include<stdio.h> #include<string.h> #define N 3          //控制排序数量 #define M 100  

C语言之函数调用09—判断一个数是否为素数

//函数调用 /* ========================================================== 题目:判断一个数是否为素数.如3是素数,4不是素数. ========================================================== */ #include<stdio.h> #include<stdlib.h> int sushu(int n) { int i,k; k=n/2;//控制结束位置! for(