想用二维数组指针完成数组赋值,可是不知道哪里错了
这个题目是求矩阵对角线的和
#include <stdio.h>
int main()
{
int a[3][3] = { 0 }, i, sum=0;
int dj(int(*)[3], int*);
int(*p)[3] = a;
int f = 0;
int* b = &f;
for (i = 0; i < 3; i++)
{
printf("请矩阵输入第%d行元素:", i + 1);
scanf("%d %d %d",(*(p+i+1)+1), (*(p + i + 1) + 2), (*(p + i + 1) + 3));
}
sum = dj(p, b);
printf("主对角线之和:%d", sum);
printf("副对角线之和:%d\n", f);
return 0;
}
int dj(int(*a)[3], int* b)
{
int sum = 0, i, f = 0;
for (i = 0; i < 3; i++)
{
sum += a[i][i];
}
for (i = 0; i <3; i++)
{
f += a[i][2 - i];
}
*b = f;
return sum;
}
我的解答思路和尝试过的方法
赋值那里不用指针却可以运行
for(i=0;i<3;i++)
{
printf("请矩阵输入第%d行元素:",i+1);
scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
}