写一函数 将一个3x3的整型矩阵转置 用指针方法 加二维数组 c语言急

如题所述

用函数void trans(int *a, int n); 参数1用数组第一个元素的地址,第二个参数是3

#include <stdio.h>
void trans(int *a, int n){int i,j,t;for (i=0;i<n;i++)for (j=0;j<=i;j++){t= a[j*n+i]; a[j*n+i]=a[i*n+j];a[i*n+j]=t;}}
main(){int a[3][3]={1,2,3,4,5,6,7,8,9};int i,j,n=3;
// 打印转置前的值for (j=0;j<n;j++){for (i=0;i<n;i++)printf("%d ",a[j][i]);printf("\n\n");};
//转置
trans(&a[0][0],n);
// 打印转置后的值for (j=0;j<n;j++){for (i=0;i<n;i++)printf("%d ",a[j][i]);printf("\n");};
return 0;}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-18

#include <stdio.h>
#define N 3
void change(int *p)
{
 int i,j,temp;
 for(i=0;i<N-1;i++)
  for(j=i+1;j<N;j++)
   {temp=*(p+i*N+j);*(p+i*N+j)=*(p+j*N+i);*(p+j*N+i)=temp;}
}
int main(int argc, char *argv[])
{
 int s[N][N],*p;
 int i,j;
 p=*s;
 for(i=0;i<N;i++)
  for(j=0;j<N;j++)
   scanf("%d",p+i*N+j);
   
 printf("未转置矩阵\n");
 for(i=0;i<N;i++)
 {
  for(j=0;j<N;j++)
   printf("%d ",*(p+i*N+j));
  putchar(10);//换行
 }
 p=*s;
 change(p);
 printf("转置后矩阵\n");
 for(i=0;i<N;i++)
 {
  for(j=0;j<N;j++)
   printf("%d ",*(p+i*N+j));
  putchar(10);//换行
 }
 return 0;
}


本回答被提问者采纳
相似回答