典型例题补充:C语言求杨辉三角的7种方法.doc

上传人:pu****.1 文档编号:561352179 上传时间:2023-05-11 格式:DOC 页数:4 大小:36KB
返回 下载 相关 举报
典型例题补充:C语言求杨辉三角的7种方法.doc_第1页
第1页 / 共4页
典型例题补充:C语言求杨辉三角的7种方法.doc_第2页
第2页 / 共4页
典型例题补充:C语言求杨辉三角的7种方法.doc_第3页
第3页 / 共4页
典型例题补充:C语言求杨辉三角的7种方法.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《典型例题补充:C语言求杨辉三角的7种方法.doc》由会员分享,可在线阅读,更多相关《典型例题补充:C语言求杨辉三角的7种方法.doc(4页珍藏版)》请在金锄头文库上搜索。

1、杨辉三角形是形如11 11 2 11 3 3 11 4 6 4 1的三角形,其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。这个题目常用于程序设计的练习。下面给出六种不同的解法。解法一#include main() int i,j,n=0,a1717=0; while(n16) printf(请输入杨辉三角形的行数:); scanf(%d,&n); for(i=0;in;i+) ai0=1; /*第一列全置为一*/ for(i=1;in;i+) for(j=1;j=i;j+) aij=ai-1j-1+a

2、i-1j;/*每个数是上面两数之和*/ for(i=0;in;i+) /*输出杨辉三角*/ for(j=0;j=i;j+) printf(%5d,aij); printf(n); 点评:解法一是一般最容易想到的解法,各部分功能独立,程序浅显易懂。解法二#include main() int i,j,n=0,a1717=1; while(n16) printf(请输入杨辉三角形的行数:); scanf(%d,&n); for(i=1;in;i+) ai0=1; /*第一列全置为一*/ for(j=1;j=i;j+) aij=ai-1j-1+ai-1j; /*每个数是上面两数之和*/ for(i=

3、0;in;i+) /*输出杨辉三角*/ for(j=0;j=i;j+) printf(%5d,aij); printf(n); 点评:解窢二是在解法一的基础上,把第一列置为1的命令移到下面的双重循环中,减少了一个循环。注意初始化数组的变化。解法三#include main() int i,j,n=0,a1717=0,1; while(n16) printf(请输入杨辉三角形的行数:); scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=i;j+) aij=ai-1j-1+ai-1j; /*每个数是上面两数之和*/ for(i=1;i=n;i+) /*输出杨辉三角*

4、/ for(j=1;j=i;j+) printf(%5d,aij); printf(n); 点评:解法三是在解法一、二的基础上,把第一列置为1的命令去掉了,注意初始化数组的变化。解法四#include main() int i,j,n=0,a1717=0,1; while(n16) printf(请输入杨辉三角形的行数:); scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=i;j+) aij=ai-1j-1+ai-1j; /*每个数是上面两数之和*/ printf(%5d,aij); /*输出杨辉三角*/ printf(n); 点评:解法四是在解法三的基础上,把

5、计算和打印合并在一个双重循环中。解法五#include main() int i,j,n=0,a17=1,b17; while(n16) printf(请输入杨辉三角形的行数:); scanf(%d,&n); for(i=0;in;i+) b0=a0; for(j=1;j=i;j+) bj=aj-1+aj; /*每个数是上面两数之和*/ for(j=0;j=i;j+) /*输出杨辉三角*/ aj=bj; /*把算得的新行赋给a,用于打印和下一次计算*/ printf(%5d,aj); printf(n); 点评:解法一到解法四都用了二维数组,占用的空间较多。而解法五只使用了两个一维数组。解法六

6、#include main() int i,j,n=0,a17=0,1,l,r; while(n16) printf(请输入杨辉三角形的行数:); scanf(%d,&n); for(i=1;i=n;i+) l=0; for(j=1;j=i;j+) r=aj; aj=l+r; /*每个数是上面两数之和*/ l=r; printf(%5d,aj); /*输出杨辉三角*/ printf(n); 点评:解法六只使用了一个一维数组和两个临时变量。补充:输入等腰三角形形状的杨辉三角:#includevoid fun(int a34,int n) int i,j; for(i=0;in;i+) for(j

7、=0;j=i;j+) if(i=j) aij=1; else if(j=0) aij=1; else aij=ai-1j-1+ai-1j; int main() int i,j,k,n; int a3434; k=1; while(scanf(%d,&n)=1) / 输入你要显示的行数,如1,2,3,4,. fun(a,n); printf(Case %d:n,k+); for(i=0;in;i+) for (j = 0; j n - i; j +) printf( ); for(j=0;j=i;j+) if(j=i) printf(%d,aij); else printf(%d ,aij); printf(n); printf(n); getch(); return 0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号