实训C++语言设计——3*3矩阵转置函数

news/2024/7/5 6:26:02

 编写并测试3*3矩阵转置函数,并使用数组保存3*3矩阵。
算法:先在主函数中定义一个二维数组,然后通过print函数来完成输出功能,这是通过喜欢来完成的,然后就是转置,转置时可以通过一个辅助数组来完成,先把距阵中的值传到此辅助数组中,然后把i行j列中的值传到j行i列中即可完成。
代码:
#include<iostream.h>
void main()
{
 int a[3][3],i,j,b[3][3];
 cout<<"请依次输入距阵中的元素:"<<endl;
 for( i=0;i<3;i++)
 {
   for( j=0;j<3;j++)
   {
    cin>>a[i][j];
   }
 }
 cout<<"此矩阵中的元素为:"<<endl;
 for( i=0;i<3;i++)
 {
   for( j=0;j<3;j++)
   {
    cout<<a[i][j];
 cout<<"  ";
   }
   cout<<endl;
 }
 cout<<"经过转置后矩阵为:"<<endl;
 for( i=0;i<3;i++)
 {
   for( j=0;j<3;j++)
   {
    b[i][j]=a[j][i];
 cout<<b[i][j];
 cout<<"  ";
   }
   cout<<endl;
 }
}
2使用动态内存分配生成动态数组来完成上述功能。
算法:先在主函数中定义一个整形指针,让它指向一个数组,在输出元素时,通过指针自增即可,在实现转置时,先把指针值传过去,然后通过类似上面的方式即可完成。
代码:
#include<iostream.h>
#include<stdlib.h>
void print(int *a)
{
  for(int i=0;i<9;i++)
  {
   cout<<*a;
   cout<<"  ";
   a++;
   if((i+1)%3==0)cout<<endl;
  }
}

void reserve(int *&a)
{
  int b[3][3],i,j;
  int *c;
  c=a;
  for(i=0;i<3;i++)
  {
    for(j=0;j<3;j++)
 {
  b[i][j]=*a;
  a++;
 }
  }
  a=c;
for(i=0;i<3;i++)
  {
    for(j=0;j<3;j++)
 {
  *a=b[j][i];
  a++;
 }
  }
a=c;
}

void main()
{
  int i,j;
  int *a,*b;
  a=(int *)new int[3][3];
  b=a;
  cout<<"请依次输入距阵中的元素:"<<endl;
  for(i=0;i<9;i++)
  {
  cin>>*a;
  a++;
  }
  a=b;
cout<<"此距阵中的元素为:"<<endl;
print(a);
reserve(a);
cout<<"经过转置后此距阵为:"<<endl;
print(a);
}


http://www.niftyadmin.cn/n/3242418.html

相关文章

实训C++语言设计——两个字符串的连接

编程实现两个字符串的连接&#xff0c;要求使用字符数组保存字符串&#xff0c;不使用系统函数。算法&#xff1a;先在主函数中定义两个字符数组&#xff0c;字符数组的最后一个字符是0&#xff0c;把它当作循环的终止条件&#xff0c;先把一个指针指向第一个字符串的最后一个字…

博客后续在GitHub page更新

CSDN将不会再更新&#xff0c;最新博客请移步&#xff1a;Lin’s Blog

实训C++语言设计——定义一个类

定义一个类&#xff0c;它包含私有数据成员姓名&#xff0c;地址&#xff0c;城市&#xff0c;邮政编码&#xff0c;公有函数成员&#xff1a;构造函数完成初始化&#xff0c;一个函数完成数据成员的输出&#xff0c;另外一个函数完成修改名字的功能。算法&#xff1a;根据上述…

实训C++语言设计——继承与派生

目的&#xff1a;1学习定义和使用类的继承关系&#xff0c;定义派生类。 2熟悉不同继承方式下对基类成员的访问控制。 3学习利用虚基类解决二义性问题。 内容&#xff08;算法、程序、步骤和方法&#xff09;&#xff1a;1&#xff0e;定义一个基类…

思想调试:为什么4核CPU上只有一个核在工作?

在一个内部的邮件列表里&#xff0c;有人问了这样一个问题&#xff1a;为什么我这4核CPU的电脑上&#xff0c;看起来只有一个核在工作&#xff0c;其他三个核好像都处于空闲状态&#xff1f;如果使用任务管理器设置每个进程的亲缘性(Affinity)设置为4核&#xff0c;则电脑应该会…

实训C++语言设计——STL链表、栈类、队列

目的&#xff1a;了解了链表的定义与实现,学会了其使用方法;了解了栈类的定义和实现,学会了其使用方法;了解了队列的定义和实现,学会其使用方式;了解了c标准模板库STL的使用方式. 内容 程序&#xff1a;//Lab9_2.cpp //linkedlist.h#include<malloc.h>#ifndef LI…

实训C++语言设计——数组元素的排序查找

掌握了对数组元素的排序的方法,学会了对数组元素的查找的方法,还学习到了C库实现查找和排序. 程序&#xff1a;//Lab10_2.cpp#include<iostream>#include<algorithm>using namespace std; void displayArray(int a[],int n){ cout<<endl<<"…

Visual Studio新功能:针对Linux平台的新版SSH终端

在最新版本的Visual Studio 2022 预览版里&#xff0c;用户可以通过一项新的集成化的终端来从Windows中访问目标开发平台。这次更新的终端还包含了一个交互式的SSH外壳。用户可以通过Visual Studio中的[视图 -> 终端]来打开它&#xff0c;如下图所示&#xff1a; 现在&#…