| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1406 人关注过本帖
标题:求杨辉三角的等腰梯形啦,急
只看楼主 加入收藏
达哥
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-5-15
结帖率:0
收藏
已结贴  问题点数:10 回复次数:6 
求杨辉三角的等腰梯形啦,急
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 杨辉三角 
2018-06-06 17:46
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:4 
程序代码:
#include "stdio.h"
main()
{
    int a[11][20],i,j;
    //初始化
    for(i=0;i<11;i++)
     for(j=0;j<20;j++)
      a[i][j]=0;
     //给数组附值
    for(i=0;i<10;i++)
    {
     for(j=0;j<=i;j++)
     {
      if(j<1)a[i][j]=1;//开头的第一个数为1
      else if(i==0)break;
      else
      a[i][j]=a[i-1][j-1]+a[i-1][j];
       
     }
    }
    for(i=0;i<10;i++)
    {
     for(j=0;j<=i;j++)
      printf("%4d ",a[i][j]);
     printf("\n");
     }
}
2018-06-06 18:03
达哥
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-5-15
收藏
得分:0 
谢谢
2018-06-06 20:46
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:4 
回复 2楼 自学的数学
      if(j<1)a[i][j]=1;//开头的第一个数为1

按照你的注释 你希望每个数组第一个元素是1
其实可以写在外层循环 直接 a[i][0] = 1;
内层循环从 1 开始

      else if(i==0)break;

这个判断是多余的
i 等于 0 的时候 内层循环只到 j<=0
执行一次j++之后 就退出循环了
这个break没机会执行

https://zh.
2018-06-06 21:14
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
上面我的代码的输出是固定的,也就是说,没有决定要输出多少行,下面我的代码有所改变:
可以任意决定要输出多少行:
程序代码:
#include<stdio.h>

 int c(int x,int y); /*求杨辉三角形中第x行第y列的值*/
int main()
{
   int i,j,n=13;
   printf("N=");
   while(n>12)
   scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图形正确*/
   for(i=0;i<=n;i++) /*控制输出N行*/
     {
        for(j-0;j<24-2*i;j++) printf(" "); /*控制输出第i行前面的空格*/
        for(j=1;j<i+2;j++) printf("%8d",c(i,j)); /*输出第i行的第j个值*/
        printf("\n");
     }
}

 int c(int x,int y)
{
  int z;
  if((y==1)||(y==x+1)) return 1; /*若为x行的第1或第x+1列,则输出1*/
  z=c(x-1,y-1)+c(x-1,y); /*否则,其值为前一行中第y-1列与第y列值之和*/
  return z;
}
// 在屏幕上显示杨辉三角形。杨辉三角形中的数,正是(x+y)的N次方幂展开
//式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很多,
//这里仅给出一种。读者可自行设计一种实现杨辉三角形的方法。
2018-06-07 10:10
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
回复 5楼 自学的数学
不用递归也可以吧~其实就是和组合数有关~

这个是以前弄的~

程序代码:
#include<stdio.h>
#include<assert.h>

#define N 12

void fun( unsigned n );

int main ( void )
{
    fun(N);
    
    return 0;
}

void fun( unsigned n )
{
    unsigned i;
    unsigned j;
    
    unsigned k=0;
    
    if (n==0)
       return ;

    assert(n<13);  //这个关于格式问题影响输出,有兴趣的可以自己改改~
    
    printf("%-4u\n",1);
    for (i=1;i!=n+1;++i)
    {
        printf("%-4u",1);
        
        for (j=k=1;j!=i;++j)
            printf("%-4u",k=k*(i+1-j)/j);
        
        printf("%-4u\n",1);
    }
        
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-07 10:30
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 5楼 自学的数学
这里的递归用得非常不合适
重复计算非常多而且 没必要

https://zh.
2018-06-07 10:38
快速回复:求杨辉三角的等腰梯形啦,急
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020063 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved