用数组实现:
#include<stdio.h>
#define N 3
int array[N][N];
int main ()
{
void convert(int array[][3]);
int i,j;
printf("input array:\n");
for(i = 0;i < N;i++)
{
for(j = 0;j < N;j++)
{
scanf("%d",&array[i][j]);
}
}
printf("\norginal array:\n");
for(i = 0;i < N;i++)
{
for(j = 0;j < N;j++)
{
printf("%5d",array[i][j]);
}
printf("\n");
}
convert(array);
printf("convert array:\n");
for(i = 0;i < N;i++)
{
for(j = 0;j < N;j++)
{
printf("%5d",array[i][j]);
}
printf("\n");
}
return 0;
}
void convert(int array[][3])
{
int i,j,t;
for(i = 0;i < N;i++)
{
for(j = i+1;j < N;j++)
{
t = array[i][j];
array[i][j] = array[j][i];
array[j][i] = t;
}
}
}
用指针实现:
#include<stdio.h>
int main ()
{
void move(int *pointer);
int a[3][3],*p,i;
printf("input matrix:\n");
for(i = 0;i < 3;i ++)
{
scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
}
p = &a[0][0];
move(p);
printf("Now,matrix:\n");
for(i = 0;i < 3;i ++)
{
printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
}
return 0;
}
void move(int *pointer)
{
int i,j,t;
for(i = 0;i < 3;i++)
{
for(j = i;j < 3;j++)
{
t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}
}
给定的一个3*3的二维数组转置
最新推荐文章于 2024-04-10 13:04:14 发布