C练习(二)

来源:互联网 发布:斑马网络 上汽撤资 编辑:程序博客网 时间:2024/05/21 16:55

1.假设a,b,c是3个互不相等的整数。取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。

    if(a>b) swap(&a, &b);

    if(b>c) swap(&b, &c);

    if(a>b) swap(&a,&b);

    int m = b;

   

2, 下面函数的目的是求出某个日期是该年度的第几天。试完善之。

如果传入:year=1980,month=1, day=1

则返回 1

如果传入:year=1980,month=2, day=1

则返回 32

int getDayOfYear(int year, int month, int day)

{

        int days  [2][12]={{31,29,31,30,31,30,31,31,30,31,30,31},

                                       {31,28,31,30,31,30,31,31,30,31,30,31}}

        int flag =(year%4==0&& year%100!=0) || year%400 == 0 ? 1 : 0;

        int sum = day ;

        for(int i=0;i<month;i++)    {

            sum += days[flag][i];

        }      

        return sum;    

}

 

3.计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。

int f(int m, int n)

{

    if(m==0 || n==0) return 1;

    return  f(m,n-1)+f(m-1,n);

}

 

1.   代码填空(满分10分)

(a+b)的n次幂的展开式中各项的系数很有规律,对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形:

                 1

               1   1

              1 2  1

            1 3   3   1

          1 4   6   4   1

        1 5  10  10  5   1

 

下列的程序给出了计算第m层的第n个系数的计算方法,试完善之(m,n都从0算起)。

    int f(int m, int n)

    {

        if(m==0) return 1;

        if(n==0 || n==m) return 1;

        return ______f(m-1,n-1)+f(m-1,n)______;

    }

 


0 0
原创粉丝点击