如何在屏幕上打印“贾宪三角形”?请大侠指点!!!

zhcah 2003-10-17 12:44:19
如何在屏幕上打印“贾宪三角形”?请大侠指点!!!
1
1 1
1 2 1
1 3 3 1
…………
...全文
93 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
minghui000 2003-10-19
  • 打赏
  • 举报
回复
我靠。来个正确的。

#include<stdio.h>
void main()
{ int a[20][20],n,i,j;
printf("input n:\n");
scanf("%d",&n);

for(i=0;i<n;i++)
a[i][0]=a[i][i]=1;
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<n;i++)
{
for(j=0;j<2*(n-1-i);j++)
printf(" ");
for(j=0;j<i+1;j++)
printf("%4d",a[i][j]);
printf("\n");
}
getchar();
}
robertnet 2003-10-18
  • 打赏
  • 举报
回复
作业题自己做。
williamVII 2003-10-18
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

const int size=8;
int main(void)
{
int a[size]={0};
for(int i=0;i<size;i++)
{
for(int j=0;j<size-i;j++)
cout<<" ";
if(i) cout<<(a[0]=1)<<" ";
for(int j=i-1;j>0;j--)
cout<<(a[j]=a[j]+a[j-1])<<" ";
cout<<(a[i]=1)<<endl;
}
return 0;
}
catf1sh 2003-10-18
  • 打赏
  • 举报
回复
如果数字大的话,可以用print("%6d",a[i][j]);
中间改成for(j=0;j<3*(n-1-j);j++);
catf1sh 2003-10-18
  • 打赏
  • 举报
回复
main()
{ int a[20][20],n,i,j;
printf("input n:\n");
scanf("%d",&n);

for(i=0;i<n;i++)
a[i][0]=a[i][i]=1;
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<n;i++)
{
for(j=0;j<2*(n-1-i);j++)
printf(" ");
for(j=0;j<i+1;j++)
printf("%4d",a[i][j]);
printf("\n");
}
getch();
}

用Anorld(阿福)的方法写了一个,编译通过。
  • 打赏
  • 举报
回复
二项式系数 ^O^
catf1sh 2003-10-18
  • 打赏
  • 举报
回复
倒数第二行加2个空格,倒数第三行加4个空格,以此类推。
prinf("%4d",a[i][j]);就行了。
zhcah 2003-10-18
  • 打赏
  • 举报
回复
to Anorld(阿福):如何打印成等腰三角形的样子,感觉难度挺大!
zhcah 2003-10-17
  • 打赏
  • 举报
回复
能给出代码吗?
minghui000 2003-10-17
  • 打赏
  • 举报
回复
有啥难度?
CsdnPlayer 2003-10-17
  • 打赏
  • 举报
回复
mark
Anorld 2003-10-17
  • 打赏
  • 举报
回复
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1 像这样形式打印,要恢复你的形式,稍做格式上修改即可,这样方便理解!
主要算法: 假设打印10行,设a[10][10]
初始化:for(i=0;i<10;i++) { a[0][i]=[i][i]=1 ; }
下面: for(i=2;i<=9;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
ok,其他工作修缮修缮即可!


Darkay_Lee 2003-10-17
  • 打赏
  • 举报
回复
实现的时候,建议第一行从屏幕中央开始,下一行左移动一格,数据生成就很简单了,自己琢磨一下就OK了。
Darkay_Lee 2003-10-17
  • 打赏
  • 举报
回复
下一行的数是对应上一行左右相加的值,如果左或者右不在存在则认为其值是0
1 3 3 1
1 4 6 4 1
verbal 2003-10-17
  • 打赏
  • 举报
回复
楼主应该再打出一行数据不然不太明白数据的变化规律!
minghui000 2003-10-17
  • 打赏
  • 举报
回复
我也不会 :)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧