- 文章主题:求两个数二进制中不同位的个数
- 所属专栏:C语言每日一题
- 作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想
- 个人主页:[₽]的个人主页
最近刚在牛客网上刷到了有关杨辉三角的题目,觉得对加强循环和二维数组的应用很有必要,于是在原来版本的基础上进行了外观上的改良后,设计了这个题目。
设计了一个美观化打印杨辉三角的项目。
建立一个二维数组储存杨辉三角中的顺序,通过观察可知,杨辉三角第一列始终为1,第n行n列也始终为1,因此我们先通过循环行数的形式将第一列和和该行相同列的数全部赋值为1,接着我们观察到从第三列开始中间某一数字值总等于上一行同列数和上一行前一列数数值之和,由此在已经赋值完1的基础上,我们从第三行有元素未赋值的条件下开始循环利用前一行已知值,陆续求出下一行的值,直到赋值到想要打印的行数为止。
与代码展示中的逻辑相同这里不作过多解释。
#include
int main()
{
int arr[100][100] = { 0 };
printf("Please enter the number of rows for the Yang Hui triangle:\n");
int n = 0;
scanf("%d", &n);//输入想打印的行数
for (int i = 0; i < n; i++)//给第一列以及对角线全部赋值为1
{
arr[i][0] = 1;
if (i > 0)
{
arr[i][i] = 1;
}
}
for (int i = 1; i < n; i++)//一次循环数组的行与列直至到想要打印的数组行数为止
{
for (int j = 1; j < i; j++)//根据杨辉三角的性质控制每行数的个数和该行行数相同
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
printf("The Yang Hui triangle in %d rows is:\n", n);
for (int i = 0; i < n; i++)//打印杨辉三角
{
for (int k = 0; k < ((n - i - 1) * 6) / 2 + 6; k++)//一行数为变量来控制一行数前端所
//打印的空格数
{
printf(" ");
}
for (int j = 0; j <= i; j++)
{
printf("%6d", arr[i][j]);//让杨辉三角输出一个数的域宽为6
}
printf("\n");
}
return 0;
}
以上就是我对美观化打印杨辉三角这个项目的解题思路,代码以及效果展示,希望对你的C语言学习有所帮助!作为刚学编程的小白,可能在一些设计逻辑方面有些不足,欢迎评论区进行指正!看都看到这了,点个小小的赞或者关注一下吧(当然三连也可以~),你的支持就是博主更新最大的动力!让我们一起成长,共同进步!