C语言:写一函数 将一个3x3的整型矩阵转置

C语言:写一函数 将一个3x3的整型矩阵转置,第1张

#include <stdioh>

const int N = 3;

int main() {

void zhuanzhi (int (p)[N]);

int a[N][N],i,j;

int (p)[N];

printf("请输入一个二维矩阵:\n");

for(i = 0;i < N;i++)

for (j = 0;j < N;j++)

scanf("%d",&a[i][j]);

p = a;

zhuanzhi (p);

printf("转置后的矩阵:\n");

for(i = 0;i < N;i++) {

for(j = 0;j < N;j++)

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

}

void zhuanzhi (int (p)[N]) {

int i,j,t;

for(i = 0;i < N;i++) {

for(j = i;j < N;j++) {

t = ((p + i) + j);

((p + i) + j) = ((p + j) + i);

((p + j) + i) = t;

}

}

}

#include <stdioh>

int main()

{ struct aaa

  { int x;

    int y;

  };

  struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

  int i,j;

  for(i=0; i<3; i++)

  { for(j=0; j<3; j++)

      printf("[%d,%d]  ",a[i][j]x,a[i][j]y);

    printf("\n");

  }

  printf("after:\n");

  for(i=0; i<3; i++)

    for(j=0; j<i; j++)

    { t=a[i][j];

      a[i][j]=a[j][i];

      a[j][i]=t;

    }

  for(i=0; i<3; i++)

  { for(j=0; j<3; j++)

      printf("[%d,%d]  ",a[i][j]x,a[i][j]y);

    printf("\n");

  }

  return 0;

}

或:

#include <stdioh>

struct aaa

{ int x;

  int y;

};

void zhuanzhi(struct aaa a[][3])

{ struct aaa t;

  int i,j;

  for(i=0; i<3; i++)

    for(j=0; j<i; j++)

    { t=a[i][j];

      a[i][j]=a[j][i];

      a[j][i]=t;

    }

}

void prt(struct aaa a[][3])

{ int i,j;

  for(i=0; i<3; i++)

  { for(j=0; j<3; j++)

      printf("[%d,%d]  ",a[i][j]x,a[i][j]y);

    printf("\n");

  }

}

int main()

{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

  prt(a);

  zhuanzhi(a);

  printf("after:\n");

  prt(a);

  return 0;

}

#include<stdioh>

int main()

{ int a[3][4],b[4][3],i,j;

printf("array a:\n");

for(i=0;i<3;i++) //输入三行四列数组

{for(j=0;j<4;j++)

{scanf("%10d",&a[i][j]);

b[j][i]=a[i][j];} //实现倒置

printf("\n");

}

printf("array b:\n");

for(i=0;i<4;i++) //输出倒置后的 数组

{for(j=0;j<3;j++)

printf("%5d",b[i][j]);

printf("\n");

}

return 0;

}

//源码如下:

#include <iostream>

#include <iomanip>

using namespace std;

int main()

{

int iRow, iCol;

int pOrignal = NULL, pTran = NULL;

int i, j;

cout<<"请输入矩阵的行、列数(用空格隔开): ";

cin>>iRow>>iCol;

cout<<endl;

// 分配内存空间

pOrignal = new int[iRow];

for (i=0; i<iRow; i++)

{

pOrignal[i] = new int[iCol];

memset(pOrignal[i], 0, sizeof(int)iCol);

}

pTran = new int[iCol];

for (i=0; i<iCol; i++)

{

pTran[i] = new int[iRow];

memset(pTran[i], 0, sizeof(int)iRow);

}

// 输入

cout<<"请输入矩阵各元素的值: "<<endl;

for (i=0; i<iRow; i++)

{

for (j=0; j<iCol; j++)

{

cin>>pOrignal[i][j];

}

}

cout<<endl;

// 转置

for (i=0; i<iCol; i++)

{

for (j=0; j<iRow; j++)

{

pTran[i][j] = pOrignal[j][i];

}

}

// 输出

cout<<"转置以后的矩阵为: "<<endl;

for (i=0; i<iCol; i++)

{

for (j=0; j<iRow; j++)

{

cout<<setw(5)<<pTran[i][j];

}

cout<<endl;

}

// 释放内存空间

for (i=0; i<iRow; i++)

{

delete[] pOrignal[i];

}

pOrignal = NULL;

for (i=0; i<iCol; i++)

{

delete[] pTran[i];

}

pTran = NULL;

getchar();

return 0;

}

// 测试结果如下:

#include<stdioh>

void reset(int a[][3])

{

int i,j,temp;

for(i=0;i<3;i++)

for(j=i;j<3;j++)

{temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;}

}

main()

{

int a[3][3],i,j;

printf("input numbers:\n");

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

reset(a);

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/12462195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存