c语言杨辉三角的知识点,杨辉三角_用c语言的一些整理.doc

杨辉三角_用c语言的一些整理

杨辉三角 用c语言怎么编程

#include

main()

{

long i,j,n,k;

scanf("%ld",&n);

for(i=1;i<=n;i++)

{

k=1;

for(j=1;j

{

printf("%ld ",k);

k=k*(i-j)/j;

}

printf("1\n");

}

}

#define N 13 //定义三角最大行,可自行设定,但最大不要超过65536;

#include main(){

int n,i,j;

int a[N+1][2*N+4];

printf("How Many Rows Do You Want:(Number Must Below Or Equal %d)\n",N);

scanf("%d",&n);

if(n>N){

printf("What You Input Is Big Than What We Provide!\n");

exit(1);

}

//初始化数组;

for(i=1;i<=n;i++){

for(j=-1;j<2*n+2;j++){

a[i][j]=0;

}

}

a[1][n]=1;

//设置杨辉三角的数值;

for(i=1;i<=n;i++){

for(j=1;j<2*n;j++){

if(a[i][j]!=0){

a[i+1][j-1]=a[i][j-2]+a[i][j];

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

}

}

}

//打印杨辉三角;

for(i=1;i<=n;i++){

for(j=1;j<2*n;j++){

if(a[i][j]!=0){

printf("%3d",a[i][j]); //打印格式自设,如加“\t”或空格等;

} //主要是为了打印的图像美观;

else{

printf(" ");

}

if(j==(2*n-1)){

printf("\n");

}

}

}

}

#include

#include

void main()

{

int i,j,k,n;

static int a[50][50];

printf("Input lines\n",&n);

scanf("%d",&n);

a[1][1]=a[2][1]=a[2][2]=1;

for(i=3;i<=n;i++)

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

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

for(i=1;i<=n;i++)

{for (k=1;k<=n-i;k++)

printf(" ");

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

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

printf("\n");

}

getch();

}

在80字符的屏幕上输出杨辉三角,要求1在中间,形如 1 /*第0行 */

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. 利用公式

学了高中数学我们就知道有公式(a+b)n =C0n a0bn+…+ Ckn akbn-k…+ Cnn anb0

杨辉三角的每一个元素都可以由公式计算出来Ckn akbn-k,有了这个公式我们就可以很快写出程序来。

/***************************************************

* 利用公式输出杨辉三角

* 编程:zheng 2004.10.27

* 程序在BCB6.0下编译通过

***************************************************/

#include "stdio.h"

static long factorial(long n)

{//n的阶乘

return n==0||n==1?1:n*factorial(n-1);

}//factorial

static long getelem(long n,long k)

{//利用公式计算杨辉三角的第row行,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值