| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1211 人关注过本帖
标题:[求助]杨辉三角
只看楼主 加入收藏
qintao4
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-10
收藏
 问题点数:0 回复次数:10 
[求助]杨辉三角
打印出杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
……每个元素等于他正上方的元素和左上角元素之和。
#include<stdio.h>
#define N 100/*定义数组,不得超过100行*/
void main()
{
int num,arr[N][N],i=0,j=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
arr[i][j]=0;/*初始化数组,使之里面的元素都为0*/
}
}
printf("请输入一个数:\n");/*输入一个数,用来控制打印的行数*/
scanf("%d",&num);
||for(i=0;i<num;i++)
{
for(j=0;j<num;j++)
{
if(j=0)
arr[i][j]=1;
}
}|| /*这段没有编好,我想不出用何种方法来控制第一行第一个元素和第二行的第二个元素为1,此行的其他元素都为零?*/
for(i=1;i<num;i++)
{
for(j=1;j<num;j++)
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
for(i=0;i<num;i++)
{
for(j=0;j<=i;j++)
{
printf("%d",arr[i][j]);
printf("\n");
}
}


搜索更多相关主题的帖子: 杨辉三角 元素 num quot 定义 
2006-05-19 14:20
qintao4
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-10
收藏
得分:0 

PS: 是否有更简捷的办法?

2006-05-19 14:23
qintao4
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-10
收藏
得分:0 

问题已经解决。现把我已能运行的程序贴在下面,还是那个问题,是否有更简捷的方法?
#include<stdio.h>
#define N 100
void main()
{
int num,arr[N][N],i=0,j=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
arr[i][j]=0;
}
}
printf("请输入一个数:\n");
scanf("%d",&num);
for(i=0;i<num;i++)
{
for(j=0;j<num;j++)
{
arr[i][0]=1;
}
}
for(i=1;i<num;i++)
{
for(j=1;j<num;j++)
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
for(i=0;i<num;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}

}

2006-05-19 14:51
lucyyun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-4-5
收藏
得分:0 
前天看了别人的一个帖子,上面的杨惠三角确实经典,贴出来供大家参考
用一维数组:
main()
{ int c,a[20]={1,0},i,n;
for(n=0;n<13;n++)
{ printf("%*c",(12-n)*3,' ');
for(i=n;i>0;i--)
{ a[i]+=a[i-1];
printf("%6d",a[i]);
}
printf("%6d\n",a[0]);
}
}
2006-05-19 15:07
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 

#include "Stdio.h"
#include "Conio.h"

int YangHuiTriangle(unsigned int row,unsigned int col)
{ /*计算杨辉三角*/

if (col==1 || row==col) return 1;

return ( YangHuiTriangle(row-1,col-1)+YangHuiTriangle(row-1,col) );

}

ShowYangHui(int n)
{ /*打印杨辉三角*/
int row=1,col=1;

for (row=1;row<=n;row++)
{
for (col=1;col<=row;col++)
printf("%d ",YangHuiTriangle(row,col));
printf("\n\n");
}
}

int main(void)
{
int i;
printf("input the line number: ");
scanf("%d\n",&i);
printf("****************Yang Hui Triangle****************\n\n");
ShowYangHui(i);
getch();
return 0;
}
这个应该简单点


2006-05-19 15:41
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
/*不用数组的杨辉三角*/
#include<stdio.h>
main()
{
long int i,j,k,m;
for(i=0;i<10;i++)
{
printf("%*c",20-2*i,' ');
for(m=1,k=1,j=i;j>0;j--,k++)
{
printf("%-4d",m);
m=m*j/k;
}
printf("%-4d\n",m);
}
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-22 09:05
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-22 09:57
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
6楼的版主

/*不用数组的杨辉三角*/
#include<stdio.h>
main()
{
long int i,j,k,m;
for(i=0;i<10;i++)
{
printf("%*c",20-2*i,' '); /*是什么意思,有没有少什么*/
for(m=1,k=1,j=i;j>0;j--,k++)
{
printf("%-4d",m);
m=m*j/k;
}
printf("%-4d\n",m);
}
}

2006-06-22 11:18
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(cordier)6楼的版主/*不用数组的杨辉三角*/#i...
运行是硬道理。凭你的聪明,定能悟出此句之功能也!

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-22 11:21
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 

刚刚看了一下程序。你的算法是直接用二项式定理的系数Cnk 。

但是printf("%*c",20-2*i,' ');这一句我还是不理解

因为
我试过将它改为printf("%*c",20-2*i,'*');但输出还是那样,前导空格还是没有变成'*'

后来我索性将它改为printf("%*c",20-2*i);但输出的结果还是一样的。

所以到现在我还是不理解参数' '是什么意思

我是学应用物理的。


2006-06-22 15:23
快速回复:[求助]杨辉三角
数据加载中...
 
   



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

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