| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 11501 人关注过本帖, 1 人收藏
标题:怎么打印输出杨辉三角形。
只看楼主 加入收藏
cailifeng
Rank: 1
来 自:福建
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-9-25
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:16 
怎么打印输出杨辉三角形。
1
1  1
1  2  1
1  3  3  1
1  4  6  4  1
1  5  10 10 5  1
搜索更多相关主题的帖子: 输出 打印 杨辉三角 
2009-09-25 23:48
ucfhvqdo
Rank: 2
等 级:论坛游民
帖 子:13
专家分:49
注 册:2009-7-20
收藏
得分:20 
#include"stdio.h"
#define N 10
void setdata(int(*s)[N],int n)
{
    int i,j;
    for(i=0;i<n;i++)           /*第一列和对角线上的元素置1*/
    {
        s[i][i]=1;s[i][0]=1;
    }
    for(i=2;i<n;i++)           /*给杨辉三角形其他元素置数*/
        for(j=1;j<i;j++)
            s[i][j]=s[i-1][j-1]+s[i-1][j];
}
void outdata(int s[][N],int n)
{
    int i,j;
    printf("杨辉三角形:\n");
    for(i=0;i<n;i++)           /*注意:只输出矩阵的下半三角*/
    {
        for(j=0;j<=i;j++)
            printf("%6d",s[i][j]);
        printf("\n");
    }
}
main()
{
    int y[N][N],n=7;
    setdata(y,n);               /*按规律给数组元素置数*/
    outdata(y,n);               /*输出杨辉三角形*/
}
2009-09-26 00:36
邶风
Rank: 5Rank: 5
等 级:职业侠客
帖 子:287
专家分:335
注 册:2009-1-20
收藏
得分:0 
不用那么麻烦 核心算法就是一个数等于两臂的数之和 比如 3=1+2 6=3+3 10=6+4
而a[i][0] a[i][i]的数赋值成1就可以了

#include
2009-09-26 07:46
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
程序代码:
#include<stdio.h>                   
int triangle(int m,int n)           
{
    if( m==n || m==0)
        return 1;
    else
        return ( triangle( m-1,n-1 ) + triangle(m,n-1) );
}


int main()
{
    int i,j;
    for(j=1;j<=10;j++)
    {
        for( i=0;i<=j;i++)
        {
            printf("%d ",triangle(i,j));
        }
        printf("\n");
    }
    return 0;
}
2009-09-26 09:05
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
四楼的程序挺简单的,也是可以运行的,很不错。
但是如果完善一下的话
 for(j=1;j<=10;j++)
    {
        for( i=0;i<=j;i++)
        {
            printf("%d ",triangle(i,j));
        }
        printf("\n");
    }
第一个for循环中j应该从0开始
 for(j=0;j<=10;j++)
    {
   
   
   
因为直接从1开始,那么杨辉三角的第一行的1就显示不出来,会直接从第二行输出。
2009-09-26 11:26
anzi520
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-24
收藏
得分:0 
用数组做的话很简单的,你看看!
#include "stdio.h"  
main()  
{int a[6][6];  
 int i,j;  
  
 for(i=0;i<6;i++)  
 {  a[i][0]=1;  
     a[i][i]=1;}  
     for(i=2;i<6;i++)  
      { for(j=0;j<=i;j++)  
          a[i][j]=a[i-1][j-1]+a[i-1][j];  
            
          }  
      
         for(i=0;i<6;i++)  
          {for(j=0;j<=i;j++)  
      
     printf("%d ",a[i][j]);  
      printf("\n");  
     }  
     }  
   
2009-09-26 16:36
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
回复 6楼 anzi520
你是没看到我递归的精髓罢了。
2009-09-26 16:38
choco1024
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:183
专家分:140
注 册:2008-8-31
收藏
得分:0 
输出的样子感觉不是很好看啊,递归很不错,学习了。以下是我从别个那看来的,我感觉很不错。

#include <stdio.h>
int main(void)
{
    int n;
    printf("Input n:");
    scanf("%d",&n);
 
    for (int i=0; i<n; i++)
    {
        for (int k=0; k<n-i; k++)
            printf("   ");
        printf("1      ");
        int c = 1;
        for (int j=1; j<=i; j++)
        {
            c = c*(i-j+1)/j;
            printf("%d      ",c);
        }
        printf("\n\n");
    }
 
    return 0;
}
2009-09-26 23:19
goto74
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-9-11
收藏
得分:0 
历害伤掉
2009-09-26 23:20
choco1024
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:183
专家分:140
注 册:2008-8-31
收藏
得分:0 
,大家一起学习了。我把那代码已经记下了。
2009-09-26 23:24
快速回复:怎么打印输出杨辉三角形。
数据加载中...
 
   



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

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