我们一般学习C语言和C++的初学者,学习过二维数组后都会去打印杨辉三角,但我们一般都打印的是直角三角形那样的杨辉三角,我在博客搜索后没有找到我们常见的等腰三角,刚好自己做出来的有,希望能补充一下,对于直角三角形式的,我的源码如下:
#include<iostream>
using namespace std;
int main(){
int a[10][10];
int i,j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
if(j==i || j==1)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
cout<<endl;
}
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
运行结果是这样:
但是我们希望呈现它的原貌,接下来是简单的输出操作,原与君共享:
#include<iostream>
using namespace std;
int main{
int a[10][10];
int i,j,cnt;
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
if(j==i || j==1)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=1;i<10;i++){
for(cnt=1;cnt<10;cnt++){
if(cnt<=10-i) //第三重循环放在一二循环之内
cout<<" "; //规避19的问题
}
for(j=1;j<=i;j++){
printf("%3d ",a[i][j]);
}
cout<<endl;
}
return 0;
}
对应的运行效果是:
对于十行的杨辉三角,我们控制三位的数值大小刚刚好,如果要打印更多的话,需要在位数上加以限制(如果想要自动不需要调整那种,可以设置一个判断,将最大数的位数与数位匹配,就可以解决这一问题),鄙人不才,第一篇作品希望大家能够喜欢。