趣味C程序100.9 绘制杨辉三角
2015-03-05 17:52
239 查看
说明:1.本问题来源于《C语言经典、趣味、实用程序设计编程百例精解》,所有程序为本人自己编写。与原程序不同之处作有标记。
2.本系列所有程序均使用codeblocks编译,操作系统为Windows XP。
问题:在屏幕上显示杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
………………………………
分析:我以图形的特点出发,设计两个数组,循环输出,代码如下。
输出情况如下:
图1
原书分析如下:
杨辉三角中的数,正是(x+y)的N次幂展开式的各项的系数。从杨辉三角的特点出发,可以总结出:
1)第N行有N+1个值(设起始行为0行);
2)对于第N行的第J个值:(N>=2);
当J=1时或J=N+1时:其值为1;
J!=1且J!=N+1时:其值为第N-1行的第J-1个值和第J个值的和。
将如上特点提炼成数学公式可表示为:
1 x=1或x=N+1
c(x,y)=c(x-1,y-1)+c(x-1,y)
输出情况如下:
图2
2.本系列所有程序均使用codeblocks编译,操作系统为Windows XP。
问题:在屏幕上显示杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
………………………………
分析:我以图形的特点出发,设计两个数组,循环输出,代码如下。
#include <stdio.h> #include <stdlib.h> int main(void) { int i=0, j=0; int a[20]={0}, b[20]={0}; a[0]=1; int rows=1; printf("Please input rows: "); scanf("%d", &rows); //控制输出多少行 for(i=1; i<=rows; i++) { for(j=0; j<rows-i; j++) //控制输出每行前的空格 { printf(" "); } for(j=0; j<rows; j++)//将数组a复制给数组b { b[j] = a[j]; } for(j=1; j<=i-1; j++) //通过数组b给下一行赋值 { a[j] = b[j-1] + b[j]; } for(j=0; j<rows; j++) //输出新一行数组a { if(a[j]!=0) printf("%4d", a[j]); } printf("\n"); } return 0; }
输出情况如下:
图1
原书分析如下:
杨辉三角中的数,正是(x+y)的N次幂展开式的各项的系数。从杨辉三角的特点出发,可以总结出:
1)第N行有N+1个值(设起始行为0行);
2)对于第N行的第J个值:(N>=2);
当J=1时或J=N+1时:其值为1;
J!=1且J!=N+1时:其值为第N-1行的第J-1个值和第J个值的和。
将如上特点提炼成数学公式可表示为:
1 x=1或x=N+1
c(x,y)=c(x-1,y-1)+c(x-1,y)
#include <stdio.h> #include <stdlib.h> int YangHui(int x,int y); int main(void) { int i, j, n=13; printf("N="); while(n>12) scanf("%d", &n); //控制输入正确的值以保证屏幕显示的图形正确 for(i=0; i<=n; i++) //控制输出N行 { for(j=0; j<24-2*i; j++) printf(" "); //控制输出第i行前的空格 for(j=1; j<i+2; j++) printf("%4d", YangHui(i, j)); //输出第i行的第j个值 printf("\n"); } return 0; } int YangHui(int x, int y) { int z; if((y==1)||(y==x+1)) return 1; z=YangHui(x-1,y-1)+YangHui(x-1, y); return z; }
输出情况如下:
图2
相关文章推荐
- (趣味程序)可见光光谱的绘制
- 趣味C程序100.1 .2 绘制正弦曲线
- 趣味C程序100.1 .1 绘制余弦曲线
- android涂鸦程序(在图像上绘制)
- 写程序+控制cpu占用率-4+绘制CPU使用率的正弦曲线2+C#+实现
- 写程序 控制cpu占用率-4 绘制CPU使用率的正弦曲线2 通过C#指定线程运行的 CPU
- C语言小程序 杨辉三角示例代码
- MOOC清华《VC++面向对象与可视化程序设计》第2章:编程作业-渐变图形的绘制(“万花筒”程序)
- MPI分形图像高精度绘制程序和PC端Mandelbrot-Julia分形集预览程序
- 图形编辑器, 画图程序, 绘制, 设计, 打印, 矢量图转换, VC++, VB, 源代码
- HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)
- C语言趣味程序(10)
- 中国象棋程序的设计与实现(十)--棋盘的定义和绘制
- JAVA中用程序绘制国际象棋与中国象棋棋盘
- VS2012下基于Glut OpenGL绘制直线示例程序:
- 小程序码生成及分享图绘制
- 中国象棋程序的设计与实现(十)--棋盘的定义和绘制
- C# 趣味小程序(2)——用字母表示的26进制数
- OpenGL绘制纹理时,glGenTextures()函数带来的内存泄露,使程序被杀死。
- 用j2me开发GIS程序-地图绘制1