一道C++问题!
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
在PASCAL三角中的每个数是一个组合C(n,k)。
C(n,k)=(((((((n/1)(n-1))/2(n-2))/3)***(n-k+2))/(k-1))(n-k+1))/k
公式中交替使用乘法和除法,每次将从n开始递减的一个值相乘,然后除以下一个从1开始递增的值。
如果对行和列从0开始计数,则数字C(n,k)在n行k列。例如C(6,2)在第6行第2列。编程输出指定阶数的PASCAL三角矩阵。例如下面给出的是12阶PASCAL三角形矩阵。
编写程序,使运行结果为:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1 展开
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
Press any key to continue
#include <stdio.h>
#define N 12
long combi(int n, int r)
{
int i;
long p = 1;
for(i = 1; i <= r; i++)
p = p * (n-i+1) / i;
return p;
}
void paint()
{
int n, r, t;
for(n = 0; n <= N; n++)
{
for(r = 0; r <= n; r++)
{
int i;
printf("%4d", combi(n, r));
}
printf("\n");
}
}
int main()
{
paint();
return 0;
}
2012-03-23
1.*************************************
Date();
Date(int m=1,int d=1,int y=1992):month(m),day(d),year(y){};
两者都是默认构造,为什么重复定义?保留一个就可以了
这个与下面people里的构造函数有本质区别,你给参数指定了默认值,就是默认构造函数了,Date()也是默认构造,是系统免费送的,一般书上不讲的
2.***************************************
~People()
{
delete this; //敢问你在delete神马?浮云吗?new都没有你delete啥东东着呢
cout<<"Destrutor called."<<endl;
};
3.*******************
People();改为People(){};
另外,peo=peo1这里建议做一个运算符重载