




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杨辉三角 用c语言怎么编程#includemain() long i,j,n,k; scanf(%ld,&n); for(i=1;i=n;i+) k=1; for(j=1;ji;j+) printf(%ld ,k); k=k*(i-j)/j; printf(1n); #define N 13 /定义三角最大行,可自行设定,但最大不要超过65536; #include main() int n,i,j; int aN+12*N+4; printf(How Many Rows Do You Want:(Number Must Below Or Equal %d)n,N); scanf(%d,&n); if(nN) printf(What You Input Is Big Than What We Provide!n); exit(1); /初始化数组; for(i=1;i=n;i+) for(j=-1;j2*n+2;j+) aij=0; a1n=1; /设置杨辉三角的数值; for(i=1;i=n;i+) for(j=1;j2*n;j+) if(aij!=0) ai+1j-1=aij-2+aij; ai+1j+1=aij+2+aij; /打印杨辉三角; for(i=1;i=n;i+) for(j=1;j2*n;j+) if(aij!=0) printf(%3d,aij); /打印格式自设,如加“t”或空格等; /主要是为了打印的图像美观; else printf( ); if(j=(2*n-1) printf(n); #include #include void main() int i,j,k,n; static int a5050; printf(Input linesn,&n); scanf(%d,&n); a11=a21=a22=1; for(i=3;i=n;i+) for(j=1;j=i;j+) aij=ai-1j-1+ai-1j; for(i=1;i=n;i+) for (k=1;k=n-i;k+) printf( ); for(j=1;j=i;j+) printf(%2d ,aij); 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行,col列的元素 return factorial(n)/(factorial(n-k)*factorial(k); /getelem void output(long n) /输出杨辉三角,n为杨辉三角的阶数 int row,col; for(row=0;row=n;row+) for(col=0;col=row;col+) printf( %5ld,getelem(row,col); printf(n); /for /output 2.利用递归 观察下面的杨辉三角(你也可以用上面的性质,通过数学方法推导出来) 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. 边界上的元素都是1 2. 中间的任何一个元素都是他的上一行的两个相邻元素的和 如果我们用f(n,k)表示杨辉三角的第n行的第k个元素,则上边的性质可以表示成 f(n,k) =1 (k=0或者n=k) f(n,k) =f(n-1,k-1)+f(n-1,k) 即 Ckn akbn-k = 1 (k=0或者n=k) Ckn akbn-k = Ckn akbn-k + 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行,col列的元素 if (k=0|n=k) return 1; else return getelem(n-1,k-1)+getelem(n-1,k); /getelem void output(long n) /输出杨辉三角,n为杨辉三角的阶数 int row,col; for(row=0;row=n;row+) for(col=0;col=row;col+) printf( %5ld,getelem(row,col); printf(n); /for /output 杨辉三角的形状如下(因为百度知道不支持输出空格,故以空格间隔。) *1*(a+b)0(表示次方) *1*1*(a+b) *1*2*1*(a+b) *1*3*3*1*(a+b) *1*4*6*4*1*(a+b)4 我们知道,杨辉三角形的特点是:每行的第一列为1,最后一列为1。从第三行开始,中间各列等于上一行中前列与本列的和。 可以看出,最后一列的列数正好等于行数(第n行有n个数)。 我们首先就想到,使用一个二重循环就可解决这个问题,但是其中有个问题需要解决,就是数字的位置。C语言中不能象PASCAL语言那样确定打印的坐标,但可以用空格来间接实现。认真观察一下就会发现,从第二行开始,每行的第一个数都比上一行左移一个位置,也就是说,每行第一个数之前的空格数逐行减去一个数字所占的列数。turbo c 2.0 以字符输出时,每行80个字符,我们把第一行的第一个数(本行就一个数即1)放在第40个字符的位置处,且规定第个数字占4列,第二行的第一个数要向左移8列(因为下一行的第n个数和上一行的第n个数不在同一列,即并不对齐,而是刚好错开一个字符的距离)代码如下:#define M 10num(i,j)int i,j;if(i=j|j=0) return(1);else return(num(i-1,j-1)+num(i-1,j);main()int n,i,j,k;clrscr();printf(输入要打印的行数n:(n=M);scanf(%d,&n);for(i=0;in;i+) for(k=0;k36-2*i;k+)/*因为每个数占4列,所以下一行要少打2个空格就刚好错开*/ printf( ); for(j=0;j=i;j+) printf(%4d,num(i,j); printf(n); getch(); 有很多可行的办法,用数组定义后用PUTS输出,也可以计算后用输出.如果你对算法不太熟、建议你去看一下这本书,可以很好帮助你设计算法!给你个实例吧:#include main() long i,j,n,k; scanf(%ld,&n); for(i=1;i=n;i+) k=1; for(j=1;ji;j+) printf(%ld ,k); k=k*(i-j)/j; printf(1n); 杨辉三角百科名片 杨辉三角杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。目录性质 介绍 历史 1. 杨辉三角历史 2. 历史上曾经独立绘制过这种图表的数学家 3. 杨辉三角前12行C语言输出杨辉三角 1. 直角三角形杨辉三角VB输出杨辉三角 Java实现 C+输出杨辉三角性质 介绍 历史 1. 杨辉三角历史 2. 历史上曾经独立绘制过这种图表的数学家 3. 杨辉三角前12行C语言输出杨辉三角 1. 直角三角形杨辉三角VB输出杨辉三角 Java实现 C+输出杨辉三角展开编辑本段性质 1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。 2、第n行的数字个数为n个。 3、第n行数字和为2(n1)。 4、每个数字等于上一行的左右两个数字之和。可用此性质写出整个帕斯卡三角形。 5、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数连成一线,这些数的和是第2n个斐波那契数。将第2n行第2个数,跟第2n+1行第4个数、第2n+2行第6个数这些数之和是第2n-1个斐波那契数。 6、第n行的第1个数为1,第二个数为1(n-1),第三个数为1(n-1)(n-2)/2,第四个数为1(n-1)(n-2)/2(n-3)/3依此类推。 编辑本段介绍其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而贾宪三角的发现就是十分精彩的一页。 编辑本段历史杨辉三角历史北宋人贾宪约1050年首先使用“贾宪三角”进行高次开方运算。 13世纪中国宋代数学家杨辉在详解九章算术里讨论这种形式的数表,并说明此表引自11世纪前半贾宪的释锁算术,并绘画了“古法七乘方图”。故此,杨辉三角又被称为“贾宪三角”。 元朝数学家朱世杰在四元玉鉴(1303年)扩充了“贾宪三角”成“古法七乘方图”。 意大利人称之为“塔塔利亚三角形”(Triangolo di Tartaglia)以纪念在16世纪发现一元三次方程解的塔塔利亚。 在欧洲直到1623年以后,法国数学家帕斯卡在13岁时发现了“帕斯卡三角”。 布莱士帕斯卡的著作Trait du triangle arithmtique(1655年)介绍了这个三角形。帕斯卡搜集了几个关于它的结果,并以此解决一些概率论上的问题,影响面广泛,Pierre Raymond de Montmort(1708年)和亚伯拉罕棣美弗(1730年)都用帕斯卡来称呼这个三角形。 历史上曾经独立绘制过这种图表的数学家贾宪 中国北宋 11世纪 释锁算术 杨辉 中国南宋 1261详解九章算法记载之功 朱世杰 中国元代 1299四元玉鉴级数求和公式 阿尔卡西 阿拉伯 1427算术的钥匙 阿皮亚纳斯 德国 1527 施蒂费尔 德国 1544综合算术二项式展开式系数 薛贝尔 法国 1545 B帕斯卡 法国 1654论算术三角形 杨辉三角的三个基本性质主要是二项展开式的二项式系数即组合数的性质,它是研究杨辉三角其他规律的基础。杨辉三角横行的数字规律主要包括横行各数之间的大小关系。组合关系以及不同横行数字之间的联系。 杨辉,字谦光,南宋时期杭州人。在他1261年所著的详解九章算法一书中,辑录了如上所示的三角形数表,称之为“开方作法本源”图。 同时,这也是多项式(a+b)n 打开括号后的各个项的二次项系数的规律。 因此,杨辉三角第x层第y项直接就是(y nCr x)。我们也不难得到,第x层的所有项的总和为2(x-1) (即(a+b)x中a,b都为1的时候) 。上述yx 指y的x次方,(a nCr b) 指组合数。 而这样一个三角在我们的奥数竞赛中也是经常用到,最简单的就是要找规律。 简单的说,就是两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方=x的平方+2xy+y的平方,这样系数就是1,2,1这就是杨辉三角的其中一行,立方,四次方,运算的结果看看各项的系数,你就明白其中的道理了。 这就是杨辉三角,也叫贾宪三角,在外国被称为帕斯卡三角。 他于我们现在的学习联系最紧密的是2项式乘方展开式的系数规律。如图,在贾宪三角中,第3行的第三个数恰好对应着两数和的平方公式(在此就不做说明了)依次下去, 杨辉三角前12行第 1 行: 1 第 2 行: 1 1 第 3 行: 1 2 1 第 4 行: 1 3 3 1 第 5 行: 1 4 6 4 1 第 6 行: 1 5 10 10 5 1 第 7 行: 1 6 15 20 15 6 1 第 8 行: 1 7 21 35 35 21 7 1 第 9 行: 1 8 28 56 70 56 28 8 1 第 10 行: 1 9 36 84 126 126 84 36 9 1 第 11 行: 1 10 45 120 210 252 210 120 45 10 1 第 12 行: 1 11 55 165 330 462 462 330 165 55 11 1 常用公式:(a²+b²)=a²+2ab+b² 根据杨辉三角 可得 (a³+b³)=a³+3a²b+3ab²+b 以此类推 分别将a降幂 b升幂 例如: ,它的两项的系数是1和1; ,它的三项系数依次是1、2、1; ,它的四项系数依次1、3、3、1 点击此处添加图片说明 。 编辑本段C语言输出杨辉三角直角三角形杨辉三角#include #define M 10 void main() int aMM, i , j ; for(i=0;iM;i+) for(j=0;j=i;j+) if(i=j|j=0) aij=1; else aij=ai-1j+ai-1j-1; printf(%5d,aj); if(i=j)printf(n); 使用数组打印金字塔型杨辉三角 #include void main() int a1010,i,j; for(i=0;i=i;j-) printf(%2c, );/*两个空格*/ for(j=0;j=i;j+) if(i=j|j=0) aij=1; else aij=ai-1j+ai-1j-1; printf(%3d ,aj); /*%3d后一个空格*/ if(i=j) printf(n); 不用数组输出金字塔形杨辉三角 #include #define N 10 void main() unsigned int i,j,k; unsigned int b,c; for(i=0;ii;j-) printf( ); for(j=0;j=1) for(k=i-j+1;k=i;k+) b*=k; for(k=1;k=j;k+) c*=k; printf(%4d,b/c); printf(n); 注解: 在打印杨辉三角时通常用到杨辉三角的两个性质。 第一个就是杨辉三角中除了最外层(不包括杨辉三角底边)的数为1外,其余的数都是它肩上两个数之和。用数组输出杨辉三角就用这个性质。 第二个性质是杨辉三角的第n行恰好是C(n,0)C(n,n)。这里的C表示组合。不用数组输出杨辉三角就用这个性质。把杨辉三角的前15行保存在文本文件中#include #include #define M 15 void main() FILE *out; if(out=fopen(D:text_1.txt,w)=NULL) printf(Error!n); exit(0); int aMM,i,j; for(i=0;iM;i+) for(j=0;j=i;j+) if(i=j|j=0) aij=1; else aij=ai-1j+ai-1j-1; fprintf(out,%5d,aj); if(i=j) fputc(n,out); fclose(out); 编辑本段VB输出杨辉三角Private Sub Form_click() n = Val(Text1.Text) ReDim a(n + 1, n + 1), b(n + 1, n + 1) Cls k = 8 For i = 1 To n Print String(n - i) * k / 2 + 1, ); For j = 1 To i a(i, 1) = 1 a(i, i) = 1 a(i + 1, j + 1) = a(i, j) + a(i, j + 1) b(i, j) = Trim(Str(a(i, j) Print b(i, j); String(k - Len(b(i, j), ); Next j Print Next i End Sub 创建一个text和command,在text中输入所需行数,点击command即可。一个数在杨辉三角出现的次数由1开始,正整数在杨辉三角形出现的次数为:1, 2, 2, 2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年日用及医用橡胶制品项目申请报告
- 2025年5月新疆八师石河子市公益性岗位人员招聘92人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025德曼节能科技(山东)有限公司招聘10人模拟试卷带答案详解
- 2025年借贷金融项目申请报告模板
- 2025年中国便携气泵行业市场分析及投资价值评估前景预测报告
- 旅店防震应急预案
- 碳化硅功率模块生产线项目风险评估报告
- 楼墙面楼顶加固施工方案
- 草原生态合同
- 传统村落保护利用及高效农业设施项目环境影响报告书
- 潮汕美食课件
- 高三物理放射性元素的衰变省公开课一等奖全国示范课微课金奖
- 医院保洁服务投标方案(技术方案)
- 信息安全与知识产权保护课件
- 新概念英语第二册+Lesson+46+A+clear+conscience+讲义
- 【获奖教学课件】小学综合实践活动创建自己的阅读银行-“阅读存折”设计方案2
- 中北大学简介
- GB/T 5656-2008离心泵技术条件(Ⅱ类)
- 原发性肝癌规范化病理诊断指南课件
- 剑桥少儿英语三级 词汇表
- (完整版)污水处理厂施工组织设计
评论
0/150
提交评论