通过杨辉三角的Java实现与C语言实现的对比,体会两种语言数组实现与使用的差别。由于在数组在Java中是类(也就是引用类型),相比C语言的数组发生了较多的变化,主要体现在初始化方式以及长度限制两方面,具体见下面两种代码实现。
public class YangHui {
public static void main(String[] args) {
int line = 10;
int a[][] = new int[line][];
for(int i=0;i<line;i++){
//使用之前,每一行需要初始化,并且每一行的长度都可以不同,这是与C语言的不同之处
a[i] = new int[i+1];
//打印前两行
if(i==0){
a[0][0]=1;
System.out.println(a[0][0]);
}else if(i==1){
a[1][0]=1;
a[1][1]=1;
System.out.println(a[1][0]+"\t"+a[1][1]);
//第三行开始
}else if(i>=2){
//先打印左边的1
a[i][0]=1;
a[i][i]=1;
System.out.print("1\t");
//中间序列的计算
for(int j=1;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j]; //此处为最核心的地方
System.out.print(a[i][j]+"\t");
}
//最后打印每行右边的1
System.out.println("1\t");
}
}
}
}
以下是C语言实现,包括六种解法,个人推荐第三种,代码粘贴在下面,来自博客————用C语言打印出杨辉三角wanghe334新浪博客 http://blog.sina.com.cn/s/blog_520db5ec01009c1c.html
#include
int main()
{ int i,j,n=0,a[17][17]={0,1};
while(n<1 || n>16)
{ printf("请输入杨辉三角形的行数:");
scanf("%d",&n);
}
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<=n;i++)
{ for(j=1;j<=i;j++) printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}