二维数组 参数传递
题目:矩阵乘法,求方阵A的二次幂
输入:包括多组数据,每组数据包含一个整数n和n*n个整数。n为方阵的大小,n*n个整数为矩阵的元素,n的取值范围:1<=n<=10
输出:输出A的二次幂n*n个整数,每组数据一行
调代码发现程序传参数出现错误,源代码如下:
#include <stdio.h>
#define MAX 10
void square(int A[][MAX], int n)
{
int i,j,k;
int s;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
s = 0;
for (k = 0; k < n; k++)
{
s += A[i][k] * A[k][j];
}
printf("%d ", s);
}
}
printf("\n");
}
int main()
{
int A[MAX][MAX];
int i, j;
int n;
while (scanf("%d",&n) != EOF)
{
for (i = 0; i < n; i++)
{
for (j = 0; j <n; j++)
{
scanf("%d", &A[i][j]);
}
}
square((int**)A, n);
}
return 0;
}
现将看到的2种二维数组参数传递的方法总结如下:
#include <stdio.h>
#define MAX 10
int main()
{
int array[MAX][MAX];
... ...
}
一、直接传递二维数组,第一维的值不需表明
void fun1(int arr[][10])
{
......
}
二、传递指针数组 void fun2(int *(arr)[10])
{
......
}