#include
#define N 100
int main()
{
int i;
int j;
int a[N][N];
int * aArray;
int n; //行数
scanf("%d",&n);
aArray = &a[0][0];
for(i = 0;i < N;i++)
{
(aArray + i * N + i) = 1;
*(aArray + i * N) = 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];
//(aArray + i * N + j) = (aArray + i * (N - 1) + j - 1) + *(aArray + i * (N - 1) + j);
}
}
for(i = 0;i < n;i++)
{
for(j = i;j < n - 1;j++)
printf(" ");
for(j = 0;j < i + 1;j++)
printf("%4d",(aArray + i * N + j));
printf("\n");
}
return 0;
}
被注释的那行不起作用
(aArray + i * N + j) = (aArray + i * (N - 1) + j - 1) + *(aArray + i * (N - 1) + j);
你这个居然编译没报错,也是厉害了
(aArray + i * N + j) 表达式作为左值了
姑且猜测一下,你想写的是
* (aArray + i * N + j) = *(aArray + i * (N - 1) + j - 1) + *(aArray + i * (N - 1) + j);
复制过来少了好多东西
#include <stdio.h>
#define N 100
int main()
{
int i;
int j;
int a[N][N];
int * aArray;
int n;
scanf("%d",&n);
aArray = &a[0][0];
for(i = 0;i < N;i++)
{
*(aArray + i * N + i) = 1;
*(aArray + i * N) = 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];
*(aArray + i * N + j) = *(aArray + i * (N - 1) + j - 1) + *(aArray + i * (N - 1) + j);
}
}
for(i = 0;i < n;i++)
{
for(j = i;j < n - 1;j++)
printf(" ");
for(j = 0;j < i + 1;j++)
{
printf("%4d",*(aArray + i * N + j));
printf("\n");
}
}
return 0;
}
怎么个没用法?打印出来结果是多少?