c++中将二维数组元素变换为逆向存放的实现代码

 更新时间:2020年11月29日 00:26:15   作者:DB伟  
编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推

1、例如,原始二维数组为,逆向存放后变为。试建立一个类REVARR,完成上述工作。

具体要求如下:

(1)私有数据成员

int a[M][N]:初始化时存放原始二维数组,最终存放逆向存放后的二维数组。

(2)公有成员函数

REVARR(int x[M][N]):构造函数,用形参x初始化数据成员a。
void reverse():按题目要求处理二维数组。
void print():按二维数组方式输出a数组值。

(3)在主函数中完成对该类的测试。在程序的开头,定义符号常数M和N的值分别为3和4,表示数组的行数和列数。在主函数中定义数组int data[M][N],其初值如上。定义一个REVARR类的对象arr,并用数组data初始化该对象的成员a,输出原数组值,然后调用成员函数逆序存放二维数组,最后输出逆序后的二维数组。

#include "stdafx.h"
#include<iostream>
#define M 3
#define N 4
using namespace std;
class REVARR
{
public:
	REVARR(int x[M][N]);//:构造函数,用形参x初始化数据成员a。
  void reverse();//:按题目要求处理二维数组。
  void print();//:按二维数组方式输出a数组值。
private:
	int a[M][N];//:初始化时存放原始二维数组,最终存放逆向存放后的二维数组。
};
REVARR::REVARR(int x[M][N])
{
	int i,j;
	for(i=0;i<M;i++)
	{
		for(j=0;j<N;j++)
		{
			a[i][j]=x[i][j];
		}
	}
}
void REVARR::reverse()
{
	int t,i,j;
	
	 for(i=0;i<M-1;i++)
	 {
	  for(j=0;j<N;j++)
	  {
		  t = a[i][j];
		  a[i][j] = a[M-i-1][N-j-1];
		  a[M-i-1][N-j-1] = t;
		  
	  }
	 }	
}
 
void REVARR::print()
{
	int i,j;
	cout<<"转换后\n";
	for(i=0;i<M;i++)
	{
	  for(j=0;j<N;j++)
	  {
		  cout<<a[i][j]<<" ";
	  }
	  cout<<endl;
	}
	cout<<endl;
}
int main()
{
	int data[M][N];
	int i,j;
	cout <<"请输入3行4列数:\n";
	for(i=0;i<M;i++)
	{
	  for(j=0;j<N;j++)
	  {
		  cin>>data[i][j];
	  }	  
	}
	REVARR arr(data);
	arr.reverse();
	arr.print();
	system("pause");
	return 0;
}

2、编程:设计一个reverse()函数,实现数组元素逆序存放。在主函数中输入n个整数,调用reverse()函数将它们逆序存放,最后输出逆序后的结果

利用指针

#include<stdio.h>
void reverse(int *a,int n) 
{
	int i,j,m,t;
	m=(n-1)/2;
	for(i=0;i<=m;i++)
	{j=n-i-1;
		t=*(a+i);
		*(a+i)=*(a+j);
		*(a+j)=t;
	}
}
int main()
{
	int n,i,b[10];
	printf("请输入n的个数:");
	scanf("%d",&n);
	printf("请输入%d个整数:",n);
	for(i=0;i<n;i++)
	scanf("%d",&b[i]);
	reverse(b,n);
	printf("%d个数组逆序后的结果:\n",n);
	for(i=0;i<n;i++)
	printf("%d\t",b[i]);
	printf("\n");
	return 0;
}

到此这篇关于c++中将二维数组元素变换为逆向存放的实现代码的文章就介绍到这了,更多相关c++二维数组元素逆向存放内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV实现轮廓的发现

    OpenCV实现轮廓的发现

    这篇文章主要为大家详细介绍了OpenCV如何实现轮廓的发现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • c语言计算三角形面积代码

    c语言计算三角形面积代码

    c语言计算三角形面积,这只是一个小作业,大家一起学习C语言吧,面积公式s = (a+b+c) / 2 area = sqrt(s * (s - a) * (s - b) * (s - c))
    2013-11-11
  • c语言简单实现文件 r/w 操作方法

    c语言简单实现文件 r/w 操作方法

    由于在 C 语言中 '\' 一般是转义字符的起始标志,故在路径中需要用两个 '\' 表示路径中目录层次的间隔,也可以使用 '/' 作为路径中的分隔符,本文重点给大家介绍用c语言简单实现文件 r/w 操作方法,感兴趣的朋友一起学习吧
    2021-05-05
  • 详解C语言中printf输出的相关函数

    详解C语言中printf输出的相关函数

    这篇文章主要介绍了C语言中printf输出的相关函数总结,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C程序结构的入门

    C程序结构的入门

    在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考
    2021-06-06
  • C++中基本的输入输出函数使用指南

    C++中基本的输入输出函数使用指南

    这篇文章主要介绍了C++中基本的输入输出函数使用指南,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C语言十进制转二进制代码实例

    C语言十进制转二进制代码实例

    这篇文章主要介绍了C语言十进制转二进制代码实例,并且转换后会统计二进制1的个数,实例简单明了,需要的朋友可以参考下
    2014-06-06
  • 实例讲解C++编程中的虚函数与虚基类

    实例讲解C++编程中的虚函数与虚基类

    这篇文章主要介绍了C++编程中的虚函数与虚基类的实例讲解,虚函数与虚基类的使用是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-02-02
  • OpenGL实现3D空间中移动图像

    OpenGL实现3D空间中移动图像

    这篇文章主要为大家详细介绍了OpenGL实现3D空间中移动图像,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • C语言基于EasyX绘制时钟

    C语言基于EasyX绘制时钟

    这篇文章主要为大家详细介绍了C语言基于EasyX绘制时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论