谭浩强C程序设计习题6-6思考
Posted teamcolt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谭浩强C程序设计习题6-6思考相关的知识,希望对你有一定的参考价值。
题目:输出以下的杨辉三角形(要求输出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
.. .. .. .. .. ..
观察该数列,可以发现三个特征:①每一行的第一个元素是1;②每一行的最后一个元素是1;③中间的元素是其正上方和左上方元素之和。根据这些特征可以求得N行的杨辉三角形。代码如下:
1 #include<stdio.h> 2 #define N 10 3 4 int main() 5 { 6 void yang_hui(); //声明杨辉函数 7 yang_hui(); //调用此函数 8 return 0; 9 } 10 11 void yang_hui() //函数定义 12 { 13 int yh[N][N] = { 0 }; //杨辉三角形以一个二维数组存放 14 for(int i = 0; i<N; i++) 15 for (int j = 0; j <= i; j++) //i==j之后的元素默认为 0 ,不处理 16 { 17 if (j == 0) yh[i][j] = 1;//每行第一个元素是 1 18 else if (i == j) yh[i][j] = 1;//每行最后一个元素是 1 19 else 20 { 21 yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j];//其他的元素是其正上方和左上方元素之和 22 } 23 } 24 /*输出杨辉三角形*/ 25 for (int i = 0; i < N; i++) 26 { 27 printf(" "); 28 for (int j = 0; j <= i; j++) 29 { 30 printf("%d ", yh[i][j]); 31 } 32 } 33 }
学习辅导的参考答案和我这的思路是一样的,附上参考代码:
1 #include<stdio.h> 2 #define N 10 3 int main() 4 { 5 int i, j, a[N][N]; //数组为10行10列 6 for (i = 0; i < N; i++) 7 { 8 a[i][i] = 1; //使对角线元素的值为1 9 a[i][0] = 1; //是第一列元素的值为1 10 } 11 for (i = 2; i < N; i++) //从第3行开始处理 12 for (j = 1; j <= i - 1; j++) 13 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 14 for (i = 0; i < N; i++) 15 { 16 for (j = 0; j <= i; j++) 17 printf("%6d", a[i][j]);//输出数组各元素的值 18 printf(" "); 19 } 20 printf(" "); 21 return 0; 22 }
以上是关于谭浩强C程序设计习题6-6思考的主要内容,如果未能解决你的问题,请参考以下文章
谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社