用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编辑过]
----------------解决方案--------------------------------------------------------
#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}
----------------解决方案--------------------------------------------------------