球教c语言题目

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:30:20
编写一个程序,完成一个存储在二维数组中的5*5矩阵的转置工作。这个工作必须由一个函数void fun(int (*p)[5])完成。
要求:
(1) 在main()函数中完成矩阵的初始化;
(2) 在main()函数中完成矩阵的第一次输出;
(3) 然后调用fun()函数进行矩阵转置;
(4) 最后在main()函数中输出转置以后的矩阵。

矩阵转置前:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
矩阵转置后:
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
要求详细解答,急用。c程序。。。

#include <conio.h>
#include <stdio.h>

void fun(int (*p)[5]);

int main()
{
int i, j;
int a[5][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int (*p)[5];

for (i = 0; i < 5; i++)
{
p = &a[i];
for (j = 0; j < 5; j++)
printf("%d ", *(*p + j));
printf("\n");
}

p = a;
fun(p);

printf("\n");
for (i = 0; i < 5; i++)
{
p = &a[i];
for (j = 0; j < 5; j++)
printf("%d ", *(*p + j));
printf("\n");
}
}

void fun(int (*p)[5])
{
int i, j, temp;

for (i = 0; i < 5; i++)
{
for (j = 0; j < i; j++)
{
temp = *(*(p + i) + j);
*(*(p + i) + j) = *(*(p + j) + i);
*(*(p + j) + i) = temp;
}