编写函数实现矩阵(4行4列)的转置。要求函数的实参为数组名,形参为指针形式。
#include <stdio.h>
void fun(int (*p1)[4],int (*p2)[4]);
int main()
{
int p1[4][4]={0} ,p2[4][4] = {0};//{7,8,9,1},{4,5,6,1},{1,2,4,1},{1,1,1,1}};
int i = 0, j = 0;
for(i = 0;i < 4;i++){
for(j = 0;j < 4;j++){
scanf("%d",&p2[i][j]);
}
}
// printf("输入一个4*4矩阵:\n");
// scanf("%d",p2);
fun(p1,p2);
for(i = 0;i < 4;i++){
for(j = 0;j < 4;j++){
printf("%d ",*(*(p1+i)+j));
}
printf("\n");
}
return 0;
}
void fun(int (*p1)[4],int (*p2)[4])
{
int i = 0,j = 0;
for(i = 0;i < 4;i++){
for(j = 0;j < 4;j++){
*(p1[j]+i) = *(p2[i]+j);
}
}
}
http://www.docin.com/p-1622966839.html
#include<stdio.h>
void trans(int (*a)[4]) {
int tmp;
for (int i = 0; i < 3; i++) {
for (int j = i+1; j < 4; j++) {
tmp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = tmp;
}
}
}
int main() {
int a[4][4] = {
{1,2,3,4},
{5,6,7,8},
{1,1,1,1},
{2,2,2,2}
};
trans(a);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}