1,.静态:
#include<stdio.h>
void input(int *p,int n,int m)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++,p++)
scanf("%d",p);
}
void swap(int *p1,int *p2,int n,int m)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(p2+j*n+i)=*(p1+i*m+j);
}
void output(int *p,int n,int m)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++,p++)
printf("%d ",*p);
printf("\n");
}
}
int main()
{
int a[50][50],b[50][50];
int n,m;
scanf("%d%d",&n,&m);
input(*a,n,m);
swap(*a,*b,n,m);
output(*b,n,m);
return 0;
}
2.动态分配存储空间:
#include<stdio.h>
#include<stdlib.h>
void input(int *p,int n,int m)
{
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++,p++)
{
scanf("%d",p);
}
}
}
void change(int *p,int *q,int n,int m)
{
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
*(q+j*n+i)=*(p+i*m+j);
}
}
}
void output(int *q,int n,int m)
{
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++,q++)
{
printf("%d ",*q);
}
printf("\n");
}
}
int main()
{
int n,m;
int *p,*q;
scanf("%d%d",&n,&m);
p=(int *)malloc(sizeof(int)*n*m);
q=(int *)malloc(sizeof(int)*n*m);
input(p,n,m);
change(p,q,n,m);
output(q,m,n);
free(p);
free(q);
return 0;
}
c语言指针转置二维数组
最新推荐文章于 2022-04-17 13:00:02 发布