奔驰5速自动变速箱:麻烦帮忙改一下啊,C++数组杨辉三角的

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 19:48:28
//杨辉三角

#include<iostream.h>
//为什么执行到第2行就不往下走了呢?郁闷!拜托帮帮忙吧!
void main()
{
int h,l;
int a[19][20];
for(h=0;h<=18;h++)
{
for(l=0;l<=18;l++)
{
a[h][l]=0;
}
} //把所有的都负值为0;
int s,b;
cout<<"输入行数:";
cin>>s;
a[0][s-1]=1;
for(b=1;b<=s-1;b++)
{
cout<<" ";
}
cout<<a[0][s-1]<<endl; // 输出第一行,算空格在内,最上边的数的列数=行数
// 这之前都是格式的问题,关键是后边的
a[s][0]=1; // 最后1行的第一个数赋值成1
for(h=1;h<=9;h++)
{
for(l=0;l<=18;l++)
a[h][l+1]=a[h-1][l]+a[h-1][l+2]; //按照定义就是这个样子啊

if(a[h][l]==0)
cout<<" ";
else
if(a[h][l]<10)
cout<<" "<<a[h][l];
else
cout<<a[h][l];
}
cout<<endl;
}

//语法没有错误,就是循环.....

【C实现】
#include<stdio.h>
#define LINE 14
void main()
{
int a[LINE][LINE],i,j,n;
printf("Input N(N<=13)");
scanf("%d",&n);
for (i=0;i<=n;i++)
{
for (j=0;j<=n;j++) a[i][j]=0;
}
a[0][0]=1;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];
for (i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++) printf(" ");
for(j=1;j<=i;j++) printf("%3d ",a[i][j]);
printf("\n");
}
getch();
}
参考资料:http://www.xm818.com/noi/html/olpcyanghui.htm

你的程序,没有读懂,
我自己写了个程序,可以实现100(恐怕100行计算不出来,太大,至少20行以内可以)行以内的任意的洋灰三角,程序如下,(工你参考),只需要加上头文件,就可编译运行,此程序在BCB6.0下编译通过.

void printar(int *ar,int c)
{
// int count=sizeof(ar)/sizeof(*ar);
for(int i=0;i<c;i++)
{
if(ar[i]==0)
cout<<" ";
else
cout<<ar[i];
}
cout<<endl;
}
void copyar(int *de,int *sr,int n)
{
for(int i=0;i<n;i++)
{
de[i]=sr[i];
}
}
void main()
{
int lines=-1;
while(lines>100||lines<=3)
{
cout<<"\n Please input the lines:";
cin>>lines;
}
int *a2=new int[2*lines+1];
int *a3=new int[2*lines+1];
memset(a2,0,2*lines+1);
memset(a3,0,2*lines+1);
a2[lines]=1;

for(int i=0;i<lines;i++)
{
printar(a2,2*lines+1);
memset(a3,0,2*lines+1);
for(int j=0;j<(2*lines-1);j++)
{
a3[j+1]=a2[j]+a2[j+2];
}
//debug: printar(a3,2*lines+1);
//不知道为什么内存拷贝失败? memcpy(a2,a3,2*lines+1);
//不得不自己拷贝
copyar(a2,a3,2*lines+1);
}