精华内容
下载资源
问答
  • 2021-10-29 14:18:13

    题目描述

    使用数组打印杨辉三角,杨辉三角是一个由数字排列而成的三角形数表,其最本质的特征就是它的两条边都是由数字1组成的,其余数字等于它上方两数之和。

    代码实现

    using System;
    namespace dotnetworkspace
    {
        class yanghui{
            static void Main(string[] argc){
                int[][]Array_int=new int[10][];
                for(int i=0;i<Array_int.Length;i++){
                    Array_int[i]=new int[i+1];
                    for(int j=0;j<Array_int[i].Length;j++){
                        if(i<=1){
                            Array_int[i][j]=1;
                            continue;
                        }
                        else{
                            if(j==0||j==Array_int[i].Length-1)
                                Array_int[i][j]=1;
                            else
                                Array_int[i][j]=Array_int[i-1][j-1]+Array_int[i-1][j];
                        }
                    }
                }
                for(int i=0;i<=Array_int.Length-1;i++){
                    for(int k=0;k<Array_int.Length-i;k++){
                        Console.Write("  ");
                    }
                    for(int j=0;j<Array_int[i].Length;j++){
                        Console.Write("{0}  ",Array_int[i][j]);
                    }
                    Console.WriteLine();
                }
                Console.ReadLine();
            }
        }
    }

    效果展示

    每天一个C#小案例,点个关注不迷路~

    更多相关内容
  • C语言程序设计-二维数组的赋值:打印杨辉三角形(要求打印8行)
  • 打印杨辉三角

    2017-03-22 19:45:37
    利用二维数组打印杨辉三角
  • 数据结构课后作业,自己写的,用队列的方法打印杨辉三角
  • 打印杨辉三角形

    2015-06-06 23:30:55
    一个有趣的C语言代码,打印杨辉三角形,有兴趣的同学看看
  • 本文给大家汇总了2种使用C语言实现杨辉三角的方法,不过还是给大家推荐第一种,希望大家能够喜欢。
  • 这个方法可以在执行过程中有效地节约内存和CPU的使用率!用的是数组中的锯齿数组!
  • 主要介绍了使用python打印十行杨辉三角过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 打印杨辉三角的9种方法与解析

    千次阅读 2021-07-23 13:53:27
    打印杨辉三角 杨辉三角科普: 杨辉三角,是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。如图: C语言打印杨辉三角的方法 解法一 #include <stdio.h> int main() { int i, j, n = 0; //...

    打印杨辉三角

    杨辉三角科普:
    杨辉三角,是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。如图:杨辉三角
    C语言打印杨辉三角的方法
    解法一

    #include <stdio.h>
    int main()
    {
        int i, j, n = 0;
        //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化
        int a[100][100] = { 0 };
        //二维数组大小可自定,但切记不可使其超过整形数组的大小
        while (n < 1 || n >100)
            //在输入的值不正确时自动初始化问题,重新输入
        {
            printf("请输入要打印的杨辉三角行数>:");
            scanf("%d", &n);
        }
        for (i = 0; i < n; i++)
            a[i][0] = 1;
            //每一行第一个为1,用第一个for循环的输入
        for (i = 1; i < n; i++)//第一层循环i决定第几行
            for (j = 1; j <= i; j++)//第二层循环借用i限制每行字符数目
                a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
        for (i = 0; i < n; i++)//一个for循环逐行打印叫a的二维数组
        {
            for (j = 0; j <= i; j++)
                printf("%5d", a[i][j]);
            printf("\n");
        }
        return 0;
    }
    

    解法二

    #include <stdio.h>
    int main()
    {
        int i, j, n = 0;
        //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化
        int a[100][100] = { 1 };
        //二维数组大小可自定,但切记不可使其超过整形数组的大小
        while (n < 1 || n >100)
            //在输入的值不正确时自动初始化问题,重新输入
        {
            printf("请输入要打印的杨辉三角行数>:");
            scanf("%d", &n);
        }
        for (i = 1; i < n; i++)//第一层循环i决定第几行
        {
            a[i][0] = 1;
            for (j = 1; j <= i; j++)//第二层循环借用i限制每行字符数目
                a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
        }
        for (i = 0; i < n; i++)//一个for循环逐行打印叫a的二维数组
        {
            for (j = 0; j <= i; j++)
                printf("%5d", a[i][j]);
            printf("\n");
        }
        return 0;
    }
    //把每一行的第一个初始化1的操作包入第一个for循环中,并且改动二维数组初始化值为1
    

    解法三

    #include <stdio.h>
    int main()
    {
        int i, j, n = 0;
        //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化
        int a[100][100] = { 0,1 };
        //只有2个初值,即a[0][0]=1,a[0][1]=2,其余数组元素的初值均为0
        //二维数组大小可自定,但切记不可使其超过整形数组的大小
        while (n < 1 || n >100)
            //在输入的值不正确时自动初始化问题,重新输入
        {
            printf("请输入要打印的杨辉三角行数>:");
            scanf("%d", &n);
        }
        for (i = 1; i < n; i++)//第一层循环i决定第几行
            for (j = 1; j <= i; j++)//第二层循环借用i限制每行字符数目
                a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
        for (i = 1; i < n; i++)//一个for循环逐行打印叫a的二维数组
        {
            for (j = 1; j <= i; j++)
                printf("%5d", a[i][j]);
            printf("\n");
        }
        return 0;
    }
    //优化于方法一二,取消二维数组中第一列赋值为1的做法,且在最后输出时略有改动
    

    解法四

    #include <stdio.h>
    int main()
    {
    	int i, j, n = 0;
    	//首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化
    	int a[100][100] = { 0,1 };
    	//二维数组大小可自定,但切记不可使其超过整形数组的大小
    	while (n < 1 || n >100)
    		//在输入的值不正确时自动初始化问题,重新输入
    	{
    		printf("请输入要打印的杨辉三角行数>:");
    		scanf("%d", &n);
    	}
    	for (i = 1; i < n; i++)//第一层循环i决定第几行
    	{
    		for (j = 1; j <= i; j++)//第二层循环借用i限制每行字符数目
    		{
    			a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
    			printf("%5d", a[i][j]);
    		}
    		printf("\n");
    	}
    	return 0;
    }
    //优化于解法三,仅将赋值输出同时进行,且注意换行符的位置更替。
    

    解法五

    #include <stdio.h>
    int main()
    {
    	int i, j, n = 0;
    	//首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化
    	int a[100] = { 1 };
    	int b[100] = { 0 };
    	while (n < 1 || n >100)
    		//在输入的值不正确时自动初始化问题,重新输入
    	{
    		printf("请输入要打印的杨辉三角行数>:");
    		scanf("%d", &n);
    	}
    	for (i = 0; i < n; i++)
    	{
    		b[0] = a[0];
    		for (j = 1; j <= i; j++)
    			b[j] = a[j - 1] + a[j];
    		for (j = 0; j <= i; j++)
    		{
    			a[j] = b[j];
    			printf("%5d", a[j]);
    		}
    		printf("\n");
    	}
    	return 0;
    }
    //解法五不同于前者,使用两个一维数组能够较好的节省空间,方法可行,but运行方式有待我仔细酌定。
    

    解法六

    #include <stdio.h>
    int main()
    {
    	int i, j, n = 0;
    	int l, r;
    	//首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化
    	int a[100] = { 0,1 };
    	while (n < 1 || n >100)
    		//在输入的值不正确时自动初始化问题,重新输入
    	{
    		printf("请输入要打印的杨辉三角行数>:");
    		scanf("%d", &n);
    	}
    	for (i = 1; i < n; i++)
    	{
    		l = 0;
    		for (j = 1; j <= i; j++)
    		{
    			r = a[j];
    			a[j] = l + r;
    			l = r;
    			printf("%5d", a[j]);
    		}
    		printf("\n");
    	}
    	return 0;
    }
    //解法六使用一个一维数组,再加两个临时变量进行操作
    

    解法七:使用一维数组,占用内存少

    #include <stdio.h>
    int main()
    {
        int i, j, n, k, t; 
    	long Buf[21]={0,1};    //用于保存一行数据
    	printf("请输入杨辉三角形的行数(1 ~ 20):");
    	scanf("%d",&n);
        for( i = 1; i <= n; i++)	//输出n行
        {
    		for( j = 0; j < n - i; j++)	//每行前面补空格,形成等腰三角图案	
    			printf("   ");
    		t = 0;
            for( j = 1; j <= i; j++)//计算并输出杨辉三角形
            {
    			k = Buf[j];
    			Buf[j] = t + k;		//每个数是上面两数之和(三角计算)
    			t = k;
                printf("%6d", Buf[j]);	
            }
            printf("\n");
        }
    	return 0;
    }
    

    解法八:使用递归函数法,程序最简,占用内存最少,最佳算法

    #include <stdio.h>
    long Tri(int r, int c) //杨辉三角算法函数	   
    {
    	return (c == 1 || c == r) ? 1 : Tri( r - 1, c - 1 ) + Tri( r - 1, c ); 
    }	
    int main() 
    {
        int i, j, n; 
    	printf("请输入杨辉三角形的行数(1 ~ 20):");
    	scanf("%d", &n);
        for( i = 1; i <= n; i++)	// 输出n行
        {
    		for( j = 0; j < n - i; j++)		//每行前面补空格,显示成等腰三角形	
    			printf("   ");
            for( j = 1; j <= i; j++)
                printf("%6d", Tri(i, j));	//计算并输出杨辉三角形	
            printf("\n");
        }
    	return 0;
    }
    
    

    解法九(来源于百度百科,特此整理记录)

    #include<iostream>
    #include<iomanip>
    using namespace std;
    int main()
    {
        const int n = 15;
        const int m = 2 * n-1;
        int arr[n + 1][m] = { 0 };
        for (int i = 0; i < n; i++)
        {
            arr[i][n - i- 1] = 1;
            arr[i][n + i -1] = 1;
     
        }
        for (int i = 2; i < n; i++)
            for (int j = n - i + 1; j < n-2+i; j = j + 2)
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j + 1];
        int p;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n - i - 1; j++)
                cout << "    ";
            p = 1;
            for (int j = n - i - 1; p < i + 2; j = j + 2)
            {
                cout << setw(4) << arr[i][j] << "    ";
                p = p + 1;
            }
            cout << endl;
        }
        return 0;
    }
    

    例题HDOJ 2032 杨辉三角
    解析HDOJ 2032 杨辉三角解析

    展开全文
  • // 循环队列队列的顺序存储结构 #include<stdio.h> #include<malloc.h> #include<process.h> //exit 的头文件 #define OK 1 #define ERROR 0 #define MAXQSIZE 100// 最大队列长度 #define Status int #define N 10 ...
  • 使用C++语言,数据结构基础从而利用队列实现杨辉三角打印
  • 利用C语言打印杨辉三角

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

    利用C语言打印杨辉三角

    此次打印的杨辉三角格式如下

    在这里插入图片描述

    我们此次以15行的杨辉三角为例.

    首先来说一下基本的思路

    1. 通过观察可知,如果把杨辉三角看成是一个大的三角形,其第一列和对角线的值均为1.

    2. 从第3行第2列开始,当然不包括三角形的边界,其值等于上一行的相邻两数之和.

      因此,我们可以利用二维数组循环语句实现杨辉三角的打印

    • 创建一个二维数组,把该赋值成为1的地方进行赋值
    • 利用数组之间的运算,把能够计算的位置处的值计算出来
    • 打印杨辉三角

    下面是代码的实现

     
    #include <stdio.h>
     
    int main()
    {
    	int i = 0;
    	int j = 0;
    	int arr[15][15] = { 0 };//创建一个二维数组,并进行初始化
    	for (i = 0; i < 15; i++)//遍历行数
    	{
    		for (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];
    			}
    		}
    	}
    	for (i = 0; i < 15; i++)
    	{
    		for (j = 0; j <= i; j++)
    		{
    			printf("%-4d ", arr[i][j]);//这里为了美观性,每个值占4个字符,并且左对齐
    		}
    		printf("\n");//打印完每行的数据之后,进行换行
    	}
    	return 0;
    }
    
    展开全文
  • 杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来。在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和。这就是我们用C语言写杨辉三角的关键之一。在...

    杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来。

    在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和。这就是我们用C语言写杨辉三角的关键之一。在高中的时候我们又知道,杨辉三角的任意一行都是的二项式系数,n为行数减1。也就是说任何一个数等于这个是高中的组合数。n代表行数减1,不代表列数减1。如:第五行的第三个数就为=6。

    现在我们按第一种思路来写:先定义一个二维数组:a[N][N],略大于要打印的行数。再令两边的数为1,即当每行的第一个数和最后一个数为1。a[i][0]=a[i][i-1]=1,n为行数。除两边的数外,任何一个数为上两顶数之和,即a[i][j]=a[i-1][j-1]+a[i-1][j]。最后输出杨辉三角。代码如下:

    #include

    #define N 14

    void main()

    {

    int i, j, k, n=0, a[N][N];  /*定义二维数组a[14][14]*/

    while(n<=0||n>=13){  /*控制打印的行数不要太大,过大会造成显示不规范*/

    printf("请输入要打印的行数:");

    scanf("%d",&n);

    }

    printf("%d行杨辉三角如下:\n",n);

    for(i=1;i<=n;i++)

    a[i][1] = a[i][i] = 1;  /*两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数*/

    for(i=3;i<=n;i++)

    for(j=2;j<=i-1;j++)

    a[i][j]=a[i-1][j-1]+a[i-1][j];  /*除两边的数外都等于上两顶数之和*/

    for(i=1;i<=n;i++){

    for(k=1;k<=n-i;k++)

    printf("  ");  /*这一行主要是在输出数之前打上空格占位,让输出的数更美观*/

    for(j=1;j<=i;j++)  /*j<=i的原因是不输出其它的数,只输出我们想要的数*/

    printf("%6d",a[i][j]);

    printf("\n");  /*当一行输出完以后换行继续下一行的输出*/

    }

    printf("\n");

    }

    运行结果:

    请输入要打印的行数:9

    9行杨辉三角如下:

    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

    e0af7da0c8c8eb21880d2d5ff5eb75d1.png

    上面的这一种方法我们用到了二维数组,下面的这一方法我们将用到自定义函数。

    在高中我们知道,杨辉三角中的任何一个数都等于一个组合数,现在我们用这一公式来做。首先,此方法代码如下:

    #include

    /*

    * 定义阶乘,在这里可能会想。为什么要用float,当我试第一次的时候,

    * 如果用int的话,那么在打印行数多了以后就会出错。

    * 这是因为阶乘的数比较大,如果用int就不够用了。下同

    */

    float J(int i){

    int j;

    float k=1;

    for(j=1;j<=i;j++)

    k=k*j;

    return(k);

    }

    float C(int i,int j){  /*定义组合数*/

    float k;

    k=J(j)/(J(i)*J(j-i));

    return(k);

    }

    void main(){

    int i=0,j,k,n;  /*打印杨辉三角*/

    while(i<=0||i>16){

    printf("请输入要打印的行数:");

    scanf("%d",&i);

    }

    printf("%d行杨辉三角如下:\n",i);

    for(j=0;j

    for(k=1;k<=(i-j);k++)

    printf("  ");

    for(n=0;n<=j;n++)

    printf("%4.0f",C(n,j));

    printf("\n");

    }

    printf("\n\n");

    }

    运行结果:

    请输入要打印的行数:11

    11行杨辉三角如下:

    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  10  45 120 210 252 210 120  45  10  1

    95533e00858822698470f57aadad52de.png

    这个方法主要就是要知道组合数的表示。还有如果自定义函数。但是这种方法产生的数据比较大,不建议用这种方法。

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 打印杨辉三角形:完成队列的应用,逐行打印二项展开式 (a + b)i 的系数。
  • 打印打印杨辉三角形怎么编程?打印杨辉三角形(要求打印10行)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1…各位大虾能不能帮忙把代码写出来,我刚学java没多久!谢谢----------------解决方案-------------...
  • 超简单逻辑打印杨辉三角
  • Python(打印杨辉三角),python杨辉,打印出杨辉三角形(要求打印出10行如下图)杨辉三角(也称帕斯卡三角),它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。题目:打印出...
  • python打印杨辉三角,注释详细

    千次阅读 2022-01-23 23:15:57
    关键:杨辉三角形第i行j列的值 = 第 (i-1) 行 (j-1) 列的值 + 第 (i-1) 行 (j) 列的值 总体思路:循环计算出每个元素的值,用关键公式一层一层的计算,每一层元素存储在列表当中。要注意的是计算过程中的列表访问...
  • /***打印杨辉三角:*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**/function yang_hui_san_jiao($n){$arr=array(1); //$arr记录上一行的元素$return_html=''; //定义一个变量,记录输出的html//外...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,624
精华内容 4,249
关键字:

打印杨辉三角