当前位置: 代码迷 >> C语言 >> 求助.用指针写杨辉三角
  详细解决方案

求助.用指针写杨辉三角

热度:95   发布时间:2005-12-08 14:32:00.0
求助.用指针写杨辉三角
唉....偶C太菜了还请各位大虾帮忙啊..
用2维数组 指针写 杨辉三角...
偶只会用最普通的方式写...指针还真想不出.
搜索更多相关的解决方案: 指针  杨辉三角  大虾  

----------------解决方案--------------------------------------------------------

#include<stdio.h>
#define M 100
void main()
{
int a[M][M],n,i,j;
printf("Input n:");
scanf("%d",&n);
for(i=0;i<n;i++) {*(*(a+i)+0)=1;*(*(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<=i;j++)
printf("%5d",*(*(a+i)+j));
printf("\n");
}
}


----------------解决方案--------------------------------------------------------
写的真好
----------------解决方案--------------------------------------------------------

我只说一下自己的看法
看了2楼的程序 就是把[ ]换成了*
也就是用*找到了数组里的数,其实数组和指针有很多地方是可以通用的.
但我想数组和指针一定不是完全相等.因为指针更灵活.
可以改变它指向的元素.而数组的首地址相对是固定一些了

[此贴子已经被作者于2006-1-19 21:11:18编辑过]


----------------解决方案--------------------------------------------------------
以下是引用maoguoqing在2005-12-8 15:11:00的发言:

#include<stdio.h>
#define M 100
void main()
{
int a[M][M],n,i,j;
printf("Input n:");
scanf("%d",&n);
for(i=0;i<n;i++) {*(*(a+i)+0)=1;*(*(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<=i;j++)
printf("%5d",*(*(a+i)+j));
printf("\n");
}
}

我是初学者,看得不太明白?
请问: {*(*(a+i)+0)=1;*(*(a+i)+i)=1;} 这是什么意思?能讲解一吗?
----------------解决方案--------------------------------------------------------
就是

{a[i][0]=1;a[i][i]=1}
----------------解决方案--------------------------------------------------------