精华内容
下载资源
问答
  • 维数组实现: 代码: #include #include int main(){ int row,i,size=0,j=3; printf("Please enter rows(Only integer allowed): "); if(!scanf("%d", &row)) {

     

    展开全文
  • 知识点:杨辉三角形(B站李永乐),二维数组的存储,如何循环遍历二维数组 //编程打印直角杨辉三角形 //知识点:杨辉三角形,二维数组的循环 #include <stdio.h> int main(void) { int i, j, a[6][6]; for...

    时间:2020年9月13日 17:17:16
    知识点:杨辉三角形(B站李永乐),二维数组的存储,如何循环遍历二维数组

    //编程打印直角杨辉三角形
    //知识点:杨辉三角形,二维数组的循环
    
    #include <stdio.h>
    
    int main(void)
    {
    	int i, j, a[6][6];
    	for (i = 0; i <= 5; i++)
    	{
    		a[i][i] = 1;
    		a[i][0] = 1;
    	}
    	for (i = 2; i <= 5; i++)  // 从杨辉三角形第3行开始,一直到第6行为止
    		for (j = 1; j <= i - 1; j++)  // 从杨辉三角形第2列开始,一直到第5列
    			a[i][j] = a[i - 1][j] + a[i - 1][j - 1];  
    			for (i = 0; i <= 5; i++)
    			{
    				for (j = 0; j <= i; j++)
    					printf("%4d", a[i][j]);
    				printf("\n");
    			}
    			return 0;
    }
    
    // a[i][i] = 1;
    // a[0][0] = 1; a[1][1] = 1; a[2][2] = 1; a[3][3] = 1; a[4][4] = 1; a[5][5] = 1;
    // a[i][0] = 1;
    // a[0][0] = 1; a[1][0] = 1; a[2][0] = 1; a[3][0] = 1; a[4][0] = 1; a[5][0] = 1;
    

    运行结果:
    在这里插入图片描述
    --------------------------------//--------------------------------------

    指针与二维数组

    在这里插入图片描述

    展开全文
  • void YHTriangle(int Row)//参数传入打印的... //按照给定的行数在堆空间上申请二维数组用来存放杨辉三角。 int **arr = (int **)malloc(sizeof(int *)*Row); for (i = 0; i < Row; i++) { arr[i] = (int ...
    void YHTriangle(int Row)//参数传入打印的行数。
    {
    	assert(Row > 0);
    	int i, j;
    	//按照给定的行数在堆空间上申请二维数组用来存放杨辉三角。
    	int **arr = (int **)malloc(sizeof(int *)*Row);
    	for (i = 0; i < Row; i++)
    	{
    		arr[i] = (int *)malloc(sizeof(int)*Row);
    		memset(arr[i], 0, sizeof(arr[i]));
    	}
    	assert(NULL != arr);
    	//初始化
    
    	arr[0][0] = 1;//初始化第一行的数据。
    	int CurrentRow = 1;//从第二行开始初始化二维数组//Current表示正在处理的当前行
    	for (i = 1; i < Row; i++)
    	{
    		//每行第一个和最后一个都是1
    		arr[i][0] = 1;
    		arr[i][CurrentRow] = 1;
    		for (j = 1; j < CurrentRow; j++)
    		{
    			arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];//除了第一个和最后一个元素,其余的值都为上一行相邻的俩个元素之和。
    		}
    		CurrentRow++;//当前行加1
    	}
    
    	//打印二维数组就是杨辉三角
    
    	CurrentRow = 1;
    	int SaveRow = Row;//保存当前行的值,用于打印制表符
    	int k;
    	for (i = 0; i < Row; i++)
    	{
    		for (k = 0; k < SaveRow - 1; k++)printf("\t");//为了更加直观的看到杨辉三角的格式。
    		for (j = 0; j < CurrentRow; j++)
    		{
    			printf("\t%d\t", arr[i][j]);
    		}
    		printf("\n");
    		SaveRow--;
    		CurrentRow++;
    	}
    	//释放空间
    	for (i = 0; i < Row; i++)
    	{
    		free(arr[i]);
    	}
    	free(arr);
    
    }

    运行结果:

    展开全文
  • Python语言实现杨辉三角 杨辉三角是什么

    C语言实现杨辉三角(二维数组)

    杨辉三角是什么

    杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。(这里中国的老祖宗还是很厉害的)

    实现效果

    默认状态下不使用金字塔或者菱形,多半采用正三角输出
    默认状态下不使用金字塔或者菱形输出,多半采用正三角形

    题目分析

    1. 整体上看这是一个正三角行,行和列数是相等的;
    2. 继续会发现,第一列和对角线上的数字全为1。在二维数组中就可以用(i==0)和(i==j)来分别表示第一列和对角线,这是只要在这个条件下输出为1就可以;
    3. 深入研究图形后,我们会看到第i行第j列的数字是由第i-1行第j列的数字加上第i-1行第j-1列的数字构成的,在二位数组里面就是**假设数组名称是array,那么换成代码表示就是array[i][j]=a[i-1][j]+a[i-1][j-1],这个式子是二维数组解决杨辉三角的核心;
    4. 最后完成杨辉三角的构建后,我们还需要将其输出出来,也就是用循环嵌套输出二维数组(我相信这一步没有任何难度)。

    代码实现

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
        int a[100][100];
        int i,j;
        int n;
        printf("请输入行数:");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
        	for(j=0;j<=i;j++)
        	{
        		if(j==0 || i==j)//在第一列或者在对角线上
        		{
        			a[i][j]=1;
        		}
        		else
        		{
        			a[i][j]=a[i-1][j]+a[i-1][j-1];
        		}
        	}
        }
        //输出杨辉三角
        for(i=0;i<n;i++)
        {
        	for(j=0;j<=i;j++)
        	{
        		printf("%d\t",a[i][j]);
        	}
        	printf("\n");
        }
        
    }
    

    只有二维数组这一种方法吗?

    当然不是,这是笔者喜欢使用的一种实现杨辉三角的方法,在这里给大家分享,但是杨辉三角还有另一种常见实现方式,那就是递归的方式。还可以用二维数组但不使用循环嵌套而使用递归的方法。总之,达到目的有很多种,但是一定要选择最适合自己的一种。

    其他语言的实现方式

    笔者阅读了其他多种语言的杨辉三角实现方法,包含了C++、Java、Python、C#、Bash,这里也给大家呈现一下:

    C++

    #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;
    }
    

    Java

    public class TriangleArray
    {
       public static void main(String[] args)
       {
          final int NMAX = 10; 
     
          // allocate triangular array
          int[][] odds = new int[NMAX + 1][];
          for (int n = 0; n <= NMAX; n++)
             odds[n] = new int[n + 1];  
     
          // fill triangular array
          for (int n = 0; n < odds.length; n++)
             for (int k = 0; k < odds[n].length; k++)
             {
                /*
                 * compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)
                 */
                int lotteryOdds = 1;
                for (int i = 1; i <= k; i++)
                   lotteryOdds = lotteryOdds * (n - i + 1) / i;
     
                odds[n][k] = lotteryOdds;
             }
     
          // print triangular array
          for (int[] row : odds)
          {
             for (int odd : row)
                System.out.printf("%4d", odd);
             System.out.println();
          }
       }
    }
    

    C#

    class Program
    {
      public int yanghui(int value)
      {
      if(value<3) return 1;
      int[,]arry=new int[value,value];
      Console.WriteLine("数组为:");
      for(int i=0;i<value;i++)
      {
        string str="";
        str=str.PadLeft(value-i);
        Console.Write(str);
        for(int j=0;j<=i;j++)
        {
          if(i==j||j==0)
            arry[i,j]=1;
          else
            arry[i,j]=arry[i-1,j-1]+arry[i-1,j];
          Console.Write(arry[i,j]+"");
        }
        Console.WriteLine();
      }
    }
      
    static void Main(string[]args)
    {
      Program p=new Program();
      Console.WriteLine("请输入数组值:");
      if (p.yanghui(Convert.ToInt16(Console.ReadLine())))
        Console.WriteLine("输入数值必须大于3");
      Console.Readkey();
    }
      
    }
    

    Python

    # -*- coding: utf-8 -*-
    #!/usr/bin/env python
    def triangles():
        L = [1]
        while True:
            yield L
            L = [sum(i) for i in zip([0]+L, L+[0])]
    该方式用到了列表生成式,理解起来较困难,下面是另一种方式:
    
    def triangles():
        ret = [1]
        while True:
            yield ret
            for i in range(1, len(ret)):
                ret[i] = pre[i] + pre[i - 1]
            ret.append(1)
            pre = ret[:]
    

    PHP

    <?php
    $max = 10;
    $L = [1];
    var_dump($L);
    $L = [1,1];
    var_dump($L);
    $n = 2;
    while ($n <= $max - 1){
        $oldL = $L;
        $L[$n] = 1;
        $n++;
        for ($i = 1;$i <count($oldL);$i++){
            $L[$i] = $oldL[$i-1] + $oldL[$i];
        }
        var_dump($L);
    }
    ?>
    

    我们可以清晰的看到,Python语言是多种语言里最方便的代码量最少的,所以大家可以跟着我一起学习Python(同时笔者也在教授高中生Python),在学习Python的过程中,笔者会经常给大家更新和讲解一些经典案例,关注我吧!!

    展开全文
  • C语言杨辉三角(数组)

    千次阅读 2018-10-28 20:42:19
    杨辉三角数组做法就是将杨辉三角的结构虚拟成一个二维数组,通过二维数组杨辉三角的规律得出一个算法来 算法即为:a[i][j] = a[i-1][j-1]+a[i-1][j]; 一定要注意 arr(0,0) 一定为1 这是整个杨辉三角的计算核心。...
  • 杨辉三角(二维数组).c

    2012-01-07 16:10:57
    杨辉三角 二维数组C语言编写的程序,程序清除明了
  • 利用二维数组 #include<stdio.h> #define ROW 10 int main() { int arr[ROW][ROW]; int i; int j; for (i = 0; i < ROW; i++) { for (j = 0; j <= i; j++) { if (j == 0 || j == i)//给第一...
  • 只定义二维数组:</li><li> <code>#include<stdio.h> int main(void) { int row; printf("please input row number:"); scanf("%d",&row); //通过输入指定输出的三角形行数 ...
  • #include "stdio.h"void yhsj(int x) //输出杨辉三角{int b j; for(i=0;i;i++) {sz[i][0]=1; sz[i][i]=1; } for(i=2;i;i++) for(j=1;j;j++) sz[i][j]=sz[i-1][j-1]+sz[i-1][j]; for(i=0;i;i++) for(j=0;j;j++) {...
  • 二维数组 1、定义方式 <数据类型><数组名>[常量表达式1][常量表达式2] 其中,常量表达式1(行)可省略,常量表达式2(列)不可省略。 2、存放顺序:行序优先; 例: int a[3][2] 存储方式如下表所示: ...
  • C语言用一位数组和二维数组打印杨辉三角
  • C语言利用二维数组打印出以下的杨辉三角形(要求打印十行) 代码如下: #include<stdio.h> void main() { int a[10][10],i,j; for(i=0;i<10;i++) //初始化数组 { for(j=0;j<10;j++) a[i][j...
  • C语言实现杨辉三角二维数组) 一、设计思路 先根据已知的数列将杨辉三角的规律找出来,然后利用数组将各个元素间的规律用表达式表示出来,最后将整个二维数组打印出来,实现杨辉三角。 二、规律 1 1 1 1 2 1 1 ...
  • C语言编写的杨辉三角,使用二维数组加上循环嵌套。是在学完二维数组后的经典练习题目,主要供给给初学C语言的同学参考是使用
  • c语言二维数组输出杨辉三角

    万次阅读 多人点赞 2011-04-07 19:18:00
    今天做了杨辉三角的题目。在草稿上面写好了思路,回到宿舍就开始开始敲代码。就几行,不过调试的时候搞错了两个地方,一个是i=j还有一个是j=0;好久不搞这个,居然犯这么低级的错误!,改好之后就好了! 杨辉三角你...
  • C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度...
  • 使用二维数组存储杨辉三角,可以实现一次计算多次使用。 使用一维数组存储杨辉三角,需要更高的技巧。 #include <stdio.h> int pascal[30+1]; // 使用一维数组的杨辉三角程序 void pascalgo(int n) { int ...
  • 二维数组的赋值:打印杨辉三角形(要求打印8行)
  • C语言杨辉三角

    2021-01-02 22:15:23
    C语言杨辉三角 #include<stdio.h>//头文件 int main()//主函数入口 { int i,j;//定义整型变量 int a[10][10];//定义二维数组 for(i=0;i<10;i++)//for循环 { a[i][i]=1;//给二维数组的每一行的...
  • 打印N维杨辉三角,动态二维数组

    千次阅读 2011-09-03 20:17:49
    杨辉三角形特点是每个元素都等于它正上方与左上方数之和,于是可以计算出除第一列第一行外的所有元素 ...用传统的二维数组来存放杨辉三角是行不通的(C语言不允许使用变量当做数组的维数,int a[n][n],是行不
  • C语言笔记--利用二维数组输出杨辉三角形

    万次阅读 多人点赞 2018-10-30 17:28:45
    杨辉三角形又称帕斯卡三角形,其余的话就不多说,先看下面的三角形:  1  1 1  1 2 1  1 ...
  • 二维数组打印杨慧三角 让我们用C语言来打印出高中让我们头疼的杨慧三角,话不多说,上代码 我们先创建一个二维数组,并初始化为0,定义两个整形变量i,j控制行数和列数i,再定义一个n用来接受打印的行数 int a...
  • 杨辉三角是中国古代数学的杰出研究成果之一,它把项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。   我们把行数定义为n,即第一行为...
  • c语言杨辉三角

    2021-03-04 16:59:22
    两种方式打印杨辉三角 ... /*定义二维数组a[14][14]*/ // while(n<=0||n>=13){ /*控制打印的行数不要太大,过大会造成显示不规范*/ // printf("请输入要打印的行数:"); // scanf("%d",&n); // } // pr
  • #include int *printYangHuiByNLine(int rows); void main() { int exponent; int again=1;... printf("-------------------------项式展开-----------------------------\n"); while(again==1) {

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 136
精华内容 54
关键字:

c语言杨辉三角二维数组

c语言 订阅