服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - c++中将二维数组元素变换为逆向存放的实现代码

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

2021-10-08 10:58DB伟 C/C++

编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推

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,输出原数组值,然后调用成员函数逆序存放二维数组,最后输出逆序后的二维数组。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#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()函数将它们逆序存放,最后输出逆序后的结果

利用指针

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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++二维数组元素逆向存放内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/zggzgw/article/details/72724469

延伸 · 阅读

精彩推荐