CSDN话题挑战赛第1期
活动详情地址:活动地址
参赛话题:大学学习月/季度总结
话题描述:对自己大学的月/季度学习的复盘及展望


杨辉三角及其变形

  • 前言
  • 1、杨辉三角之左对齐
    • 1.1 写法1
    • 1.2 写法2
    • 1.3 写法3
  • 2、杨辉三角之右对齐
  • 3、杨辉三角之中间对齐
  • 总结

前言

本文主要是写关于杨辉三角的练习题,杨辉三角的介绍见百度百科:

在屏幕上打印杨辉三角,杨辉三角的两个特点:
1、元素等于上一行特定位置的两个元素之和
2、每一行的第一列和最后一列都是1

例如:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……

1、杨辉三角之左对齐

1.1 写法1

//杨辉三角
int main()
{int arr[7][7] = { 0 };for (int i = 0; i < 7; i++){for (int j = 0; j <= i; j++){if (j == 0)//第一行第一列的元素是1{arr[i][j] = 1;}if (j == i)//行列相等时,输出1{arr[i][j] = 1;}if ((i >= 2) && (j >= 1))//元素是上一行对应两位置的元素之和{arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

1.2 写法2

int main()
{int a[7][7] = { 1 }; //初始化为1int i = 0;int j = 0;for (i = 1; i < 7; i++) //从第二行开始{a[i][0] = 1; //每行的第一列都是1。for (j = 1; j <= i; j++) //从第二列开始{a[i][j] = a[i - 1][j] + a[i - 1][j - 1]; //元素是上一行对应两位置的元素之和}}for (i = 0; i < 7; i++) //打印{for (j = 0; j <= i; j++){printf("%d ", a[i][j]);}putchar('\n');}
}

1.3 写法3

int main()
{int a[7] = { 1 };int i, j;printf("1\n"); //第一行就直接打印了for (i = 1; i < 7; i++) //从第二行开始{for (j = i; j > 0; j--) //从后向前填,避免上一行的数据在使用前就被覆盖{a[j] += a[j - 1]; //公式同上,由于变成了一维,公式也变简单了。}for (j = 0; j <= i; j++) //这一行填完就直接打印了。{printf("%d ", a[j]);}putchar('\n');}
}

3种方法的结果一样,见下图所示:


其中方法3 难以想到,代码定义了一维数组,调试过程见下图:

2、杨辉三角之右对齐

//右对齐
int main()
{int arr[7][7] = { 0 };for (int i = 0; i < 7; i++){if (i>=0 && i < 5){for (int k = 0; k < 15 - 2 * i; k++){printf(" ");}}if (i >= 5 && i < 6){for (int k = 0; k < 15 - 2 * i-2; k++){printf(" ");}}for (int j = 0; j <= i; j++){if (j == 0)//第一列的元素都是1{arr[i][j] = 1;}if (j == i)//行列相等时,输出1{arr[i][j] = 1;}if ((i >= 2) && (j >= 1))//元素是上一行对应两位置的元素之和{arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

写完才意识到代码不具有通用性,个位数、两位数、三位数所占的位数不同,蚌埠住了(实际上是不知道搞了emo)。

但是写都写了,硬着头皮也要上代码,结果见下图,求轻喷:

3、杨辉三角之中间对齐

//右对齐
int main()
{int arr[7][7] = { 0 };for (int i = 0; i < 7; i++){for (int k = 0; k < 7-i-1;k++ ){printf(" ");}for (int j = 0; j <= i; j++){if (j == 0)//第一列的元素都是1{arr[i][j] = 1;}if (j == i)//行列相等时,输出1{arr[i][j] = 1;}if ((i >= 2) && (j >= 1))//元素是上一行对应两位置的元素之和{arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}printf("%d ", arr[i][j]);}printf("\n");    }return 0;
}

结果见下图,由于个位数和两位数占位不同,看最后一列可观察到,实际并不是中间对齐,还凑合着看吧(实际上也是不知道搞了emo):


总结

左对齐、右对齐、中间对齐是word等文档里常用到的对齐格式。

本文是杨辉三角的练习题,代码写的比较啰嗦,而且限制了数组的维度,代码不具有通用性。等后续学习得深入再进行修改,也请大佬们能够指点一下。

C语言还是要多练习,多看别人的代码。

CSDN话题挑战赛第1期
活动详情地址:活动地址

【C语言练习——打印杨辉三角及其变形】相关推荐

  1. 【C语言】打印杨辉三角

    题目描述 输入数字 n ,打印 n 行杨辉三角 1 1 1 1 2 1 1 3 3 1 -- 小贴士:什么是杨辉三角? 定义: 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行 ...

  2. C语言杨辉三角的程序分析,C语言:打印杨辉三角

    打印出以下的杨辉三角(要求打印出十行) 1 1  1 1  2  1 1  3  3  1 1  4  6  4  1 1  5  10  10  5  1 ...... 一.分析规律: 1.每一行的 ...

  3. 利用C语言打印杨辉三角

    利用C语言打印杨辉三角 此次打印的杨辉三角格式如下: 我们此次以15行的杨辉三角为例. 首先来说一下基本的思路 通过观察可知,如果把杨辉三角看成是一个大的三角形,其第一列和对角线的值均为1. 从第3行 ...

  4. C语言每日一练——第72天:打印杨辉三角(使用两种方法)

    C语言每日一练 2022年1月5日 文章目录 题目描述 问题分析 1. 使用数组法(打印直角三角) 2. 使用数组法(打印等腰三角) 3. 使用公式法(打印等腰三角) 网上参考 题目描述 打印杨辉三角 ...

  5. 多种语言多种方法打印杨辉三角(二项式展开式各项系数)

    打印杨辉三角&二项式展开式各项系数 C语言实现 法一:数学排列组合公式法 法二:找规律法,二维数组,通俗易懂 法三:法二优化,一维数组 法四:递归 Java实现 Python实现 (a + b ...

  6. 杨辉三角c语言编程报告,C语言打印杨辉三角示例汇总

    杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一. ...

  7. 用linux编译打印杨辉三角形,C语言打印杨辉三角代码及解析

    杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一. ...

  8. 如何用C语言打印杨辉三角

    用C语言在屏幕上打印杨辉三角 杨辉三角 运行结果图 代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<a ...

  9. [C语言] [典例详解] 打印杨辉三角(找规律简单实现)

    题目>>> 用C语言打印杨辉三角.杨辉三角参考图如下: 分析>>> 于是不清楚杨辉三角的同学们可以上网查查,可以立刻知道它的相关推理归纳和公式总结.它的简介如下: ...

最新文章

  1. 蚂蚁金服×西安银行 | 西安银行手机银行App的智能升级之路
  2. Stanford UFLDL教程 卷积特征提取
  3. 【PAT乙级】1030 完美数列 (25 分)
  4. Python Revisited Day 07 (文件处理)
  5. C++模板类的虚函数成员
  6. h5的横线_CSS文字两边添加横线的几种方法
  7. 交流信号叠加直流偏置_接收无线电信号利器,一款无线有源环形收音机接收天线放大器...
  8. Can‘t resolve ‘core-js NPM 引入 core js 失败 解决
  9. VS2008 SP1 安装卡在 VS90sp1-KB945140-X86-CHS的解决方法
  10. golang dep 导入报错问题
  11. 什么叫结构化程序设计,他的主要内容是什么?
  12. 进程间通信方式有哪些?各自有哪些优缺点?
  13. 停车还能360全方位影像_什么是360全景?
  14. hexo next主题去掉码市的Coding Pages等待页
  15. 码住,这4个宝藏资源网站,让你工作娱乐两不误
  16. 动态规划-背包问题、兑换零钱问题、旅行商问题
  17. c语言复制粘贴快捷键_大家还知道哪些快捷键方法?如:ctrl+c复制,ctrl+v粘贴
  18. 再见了 Docker!K8S 云原生架构已成气候!
  19. linux gvim使用教程,Vim编辑器使用教程
  20. 物料管理系统最基本的功能有哪些?

热门文章

  1. Android 65536错误:Cannot fit requested classes in a single dex file
  2. contiki-进程
  3. STP生成树协议(超详细小白也能看懂)
  4. 一个域名引发的血案……
  5. 如何卸载电脑中linux系统软件,Linux下如何卸载软件
  6. 生产环境服务端报错:阿里云IOT连接中断
  7. 爬虫处理payload请求
  8. Python量化交易平台开发教程系列5-底层接口对接
  9. linux yum ku,Linux基础知识:Linux yum 配置与使用
  10. Android Studio获取数字签名(SHA1)