2102 : 程序改錯 - 二維數組參數傳遞
時間限制: 1 Sec 內存限制: 128 MB
題目描述
題目:矩陣乘法,求方陣A的二次冪
輸入:包括多組數據,每組數據包含一個整數n和n*n個整數。n爲方陣的大小,n*n個整數爲矩陣的元素,n的取值範圍:1<=n<=10
輸出:輸出A的二次冪n*n個整數,每組數據一行
代碼如下,請修正後提交
#include <stdio.h>
#define MAX 10
void square(int** A, 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;
}
輸入
包括多組數據,每組數據包含一個整數n和n*n個整數。n爲方陣的大小,n*n個整數爲矩陣的元素,n的取值範圍:1<=n<=10
輸出
輸出A的二次冪n*n個整數,每組數據一行
樣例輸入
2 1 1 1 0
樣例輸出
2 1 1 1
提示
來源
ajeyone
AC代碼
#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(A, n);
}
return 0;
}
附:二維數組傳參的方法:
int a[3][3];
方法一:
直接傳遞二維數組,傳遞時需表明第二維的值
void fun(int a[][3])
{
......
}
方法二:
傳遞指針數組
void fun(int (*a)[3]
{
......
}
方法三:
傳遞指針,但是在調用的時候要將a強制轉換成指針型的
void fun(int* a)
{
......
}
int main()
{
...
fun((int*)a);
...
}