解题思路:
①编写C(n,k)函数,并不难,这里不再赘述
②编写生成Pascal三角的函数,按照格式输出即可
注意事项:
本题最难的部份应该就是格式输出问题
主要有两个格式问题
①每行中第一个输出的1前面有多少空格
②每行中除了第一个输出1之外的数的格式控制
解决:
①观察规律可发现,每行的第一个输出1前面的空格有(3*n+2 - i*3)个(n为阶数,i为行数)
②观察规律发现,每行中除了第一个输出1之外的数一共占据6个宽度,用format控制"{:>6}".format(Cnk(i,j))
参考代码:
def Cnk(n,k): #编写C(n,k)函数 num = 1 for i in range(0,k): num = num*((n-i)/(i+1)) return round(num) def Pascal(n): print('{}{}'.format(' '*(3*n+2),1)) #首先输出第0行 for i in range(1,n+1): for j in range(i+1): if j == 0: print('{}{}'.format(' '*(3*n+2 - i*3),1),end = '') #控制每行第一个输出1的格式 else: print("{:>6}".format(Cnk(i,j)),end = '') #控制每行其他输出的数的格式 print() if __name__ == '__main__': n = int(input()) Pascal(n)
0.0分
5 人评分
#include <bits/stdc++.h> using namespace std; int f[10000],tx[10000]; int main(){ //滚动数组思想 int n; cin>>n; f[1]=1; for(int i=1;i<=n+1;i++){ for(int k=0;k<=n-i;k++){ cout<<" "; } for(int j=1;j<=i;j++){ cout<<std::right<<setw(3)<<f[j-1]+f[j]<<" "; tx[j]=f[j-1]+f[j]; } memcpy(f,tx,sizeof(tx));; cout<<endl; } return 0; }
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:556 |
不容易系列2 (C语言代码)浏览:641 |
【偶数求和】 (C语言代码)浏览:588 |
Cylinder (C语言描述+详细分析)浏览:3375 |
K-进制数 (C语言描述,蓝桥杯)浏览:955 |
简单的a+b (C语言代码)浏览:574 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:654 |
永远的丰碑 (C语言代码)浏览:608 |
Pascal三角 (C语言代码)浏览:707 |
一元一次方程 (C语言代码)浏览:4245 |