使用二维数组输出杨辉三角!
2018-03-26 22:53
253 查看
假设打印9行
首先我们可以分析一下: 杨辉三角的形式为 : 1 1 1 1 2 1 ......可以看出如果只有3行的话 , 第一行的1前面就有3个空格,第二行的1后面就有2个空格,以此类推。而每两个数之间也有一个空格。所以我们可以用二维数组的形式先输出:111121......然后再加入空格。可以看出没一行的第一个数都是1,并且对角线上也都是1(可以看成为下三角行列式),所以我们可以直接从第三行开始,并且可以看出来从第三行开始不为1的数就等于上一行前面两个数之和(例:2=1+1)。以下就为该方法的代码:
#define _CRT_SECURE_NO_WARNINGS 1#include<windows.h>
#include<stdio.h>
int main()
{
int arr[9][9] = { 0 };
int i, j, k; {i表示的是行数,j表示的是列数}
for (i = 0; i < 9; i++)
{
for (k = 9 - i; k > 0; k--) {这里的操作为输出每一行1前面的空格}
{
printf("%c", ' ');
}
for (j = 0; j < 9; j++)
{
if (j == 0) {这一部分输出的是每一行的第一个1}
{
arr[i][j] = 1;
}
if (i == j) {这一部分输出的是对角线上的1}
{
arr[i][j] = 1;
}
if ((i>1) && (j > 0)) {这一部分输出的是第三行之后的其他数字}
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
if (arr[i][j] == 0) {因为是二维数组,所以我们不将0输出,即:遇0直接换行}
{
printf("\n");
break;
}
if (arr[i][j] != 0) {这一部分为每个数之前都有一个空格}
{
printf("%c", ' ');
}
printf("%2d", arr[i][j]);
}
}
printf("\n");
system("pause");
return 0;
}
// 1
// 1 1
// 1 2 1
//1 3 3 1
首先我们可以分析一下: 杨辉三角的形式为 : 1 1 1 1 2 1 ......可以看出如果只有3行的话 , 第一行的1前面就有3个空格,第二行的1后面就有2个空格,以此类推。而每两个数之间也有一个空格。所以我们可以用二维数组的形式先输出:111121......然后再加入空格。可以看出没一行的第一个数都是1,并且对角线上也都是1(可以看成为下三角行列式),所以我们可以直接从第三行开始,并且可以看出来从第三行开始不为1的数就等于上一行前面两个数之和(例:2=1+1)。以下就为该方法的代码:
#define _CRT_SECURE_NO_WARNINGS 1#include<windows.h>
#include<stdio.h>
int main()
{
int arr[9][9] = { 0 };
int i, j, k; {i表示的是行数,j表示的是列数}
for (i = 0; i < 9; i++)
{
for (k = 9 - i; k > 0; k--) {这里的操作为输出每一行1前面的空格}
{
printf("%c", ' ');
}
for (j = 0; j < 9; j++)
{
if (j == 0) {这一部分输出的是每一行的第一个1}
{
arr[i][j] = 1;
}
if (i == j) {这一部分输出的是对角线上的1}
{
arr[i][j] = 1;
}
if ((i>1) && (j > 0)) {这一部分输出的是第三行之后的其他数字}
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
if (arr[i][j] == 0) {因为是二维数组,所以我们不将0输出,即:遇0直接换行}
{
printf("\n");
break;
}
if (arr[i][j] != 0) {这一部分为每个数之前都有一个空格}
{
printf("%c", ' ');
}
printf("%2d", arr[i][j]);
}
}
printf("\n");
system("pause");
return 0;
}
// 1
// 1 1
// 1 2 1
//1 3 3 1
相关文章推荐
- java数组学习之二:使用二维数组输出杨辉三角
- 二十三、杨辉三角 【使用二维数组输出】
- 使用for循环输出杨辉三角
- 二维数组输出10行杨辉三角
- java 使用二维数组打印一个10行杨辉三角;
- 使用for循环输出杨辉三角
- 08-使用for循环输出杨辉三角(循环)
- 使用二维数组打印一个 10 行杨辉三角.
- 使用for()嵌套循环输出二维数组
- 使用Struts标签输出二维数组
- 第二次实验第五题。使用二维数组输出表格
- java使用一维数组输出杨辉三角
- 使用java实现杨辉三角的输出
- 使用strtuts2的iterator标签循环输出二维数组
- 杨辉三角的输出。二维数组的遍历方法
- 利用二维数组输出杨辉三角
- python 学习-使用生成器输出杨辉三角和斐波拉契数列
- 使用for循环输出杨辉三角
- C语言:利用二维数组输出杨辉三角的前10行 程序是怎样的
- python学习习题总结(8)——简单选择排序,列表解析式使用(格式化输出杨辉三角,九九乘法表)