C语言练习——打印杨辉三角形
        【摘要】 C语言练习——打印杨辉三角形
    
    
    
    C语言练习——打印杨辉三角形
学须志也,才须学也,非学无以广才,非志无以成学。——诸葛亮
🐼本篇内容简介:一、问题呈现-->二、源码实现(+详细注释)-->三、输出结果展示
一、概念说明
杨辉三角形
先看个例子,打印的是6行杨辉三角形,来看看它长什么模样?
1.模样
       1
      1  1
     1  2  1
   1  3   3  1
  1  4  6   4  1
1  5  10  10  5  1
 
 看完之后会发现,很熟悉,因为中学期间学过杨辉三角的知识。那么根据上面的图,我们可以得出什么规律?
2.规律
①每行的第一个和最后一个为1
看第三行 1 2 1 第四行 1 3 3 1 可以得出
②中间的元素是左上角的元素与右上角的元素之和。
例如第三行1 2 1 中间元素 2 为左上角1和右上角1之和。
③第n行的数字有n项。
第一行 1 有一项 第二行 1 1 有两项 第三行 1 2 1 有三项…第n行 有n项
当然规律不止这些,有很多,不过以上三个规律足够解决本题了。其它的规律大家如有想法,可以自己探索或者查询一下,此处就不再一一描述了。
了解了一些概念后,下面我们一起来看一下问题吧!
二、问题呈现
1.问题描述
Problem Description
打印10行杨辉三角形
2.输入输出
Input
无
Output
10行杨辉三角形
3.测试样例
Sample Input
无
 
 Sample Output
                                1
                             1     1
                          1     2     1
                       1     3     3     1
                    1     4     6     4     1
                 1     5    10    10     5     1
              1     6    15    20    15     6     1
           1     7    21    35    35    21     7     1
        1     8    28    56    70    56    28     8     1
     1     9    36    84   126   126    84    36     9     1
 
 三、源码实现(+详细注释)
1.注释版
//编程及注释:Code_流苏
//定义头文件
#include<stdio.h>
#include<stdlib.h>
//主函数
int main()
{
    //定义三个整型变量i,j,k用于循环实现 
    int i, j, k;
    int a[11][11]; //定义二维数组a[11][11]
    printf("10行杨辉三角如下:\n");
    //杨辉三角 实现 规律①(见概念说明)
    for(i=1;i<=10;i++){
      //两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数
		a[i][1] = a[i][i] = 1;  
	}
    //杨辉三角 实现 规律②(见概念说明)
    for(i=3;i<=10;i++){
		 for(j=2;j<=i-1;j++){
         //除两边的数外都等于上两顶数之和
				a[i][j]=a[i-1][j-1]+a[i-1][j];  
		}
	}
    //界面美化 以及 打印输出        
    for(i=1;i<=10;i++){
        for(k=1;k<=10-i;k++){
			//这一行主要是在输出数之前打上空格占位,让输出的数更美观
            printf("   ");  
		}
        //j<=i的原因是不输出其它的数,只输出我们想要的数
        for(j=1;j<=i;j++){
			printf("%6d",a[i][j]);
		}  
        //当一行输出完以后换行继续下一行的输出
        printf("\n");  
    }
    //整体执行结束后,输出换行,保持整体界面
    printf("\n");
    //返回0,代表程序执行结束
    return 0;
}
 
 2.纯源码版
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i, j, k, a[11][11];  
    printf("10行杨辉三角如下:\n");
    
    for(i=1;i<=10;i++){
		a[i][1] = a[i][i] = 1;  
	}
    
    for(i=3;i<=10;i++){
		 for(j=2;j<=i-1;j++){
				a[i][j]=a[i-1][j-1]+a[i-1][j]; 
		}
	}
            
    for(i=1;i<=10;i++){
        for(k=1;k<=10-i;k++){
			printf("   ");  
		}
        for(j=1;j<=i;j++){
			printf("%6d",a[i][j]);
		}  
        printf("\n");  
    }
    printf("\n");
    return 0;
}
 
 四、输出结果展示
1.输出结果
10行杨辉三角如下:
                                1
                             1     1
                          1     2     1
                       1     3     3     1
                    1     4     6     4     1
                 1     5    10    10     5     1
              1     6    15    20    15     6     1
           1     7    21    35    35    21     7     1
        1     8    28    56    70    56    28     8     1
     1     9    36    84   126   126    84    36     9     1
--------------------------------
Process exited after 0.2986 seconds with return value 0
请按任意键继续. . 
 
 2.输出结果(图示版)

ps:这道题的方法,本文虽然只写出这一种,但是思路方法其实不止这一种,其它的方法可自行尝试一下,比如借助函数实现等都是可以的。
作者:Code_流苏(一个喜欢古诗词和编程的Coder😊)
 ★喜欢的话,还请多多点赞与关注! 感谢支持!
 C语言100题练习专栏计划持续进行,欢迎评论交流学习!
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)