编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。
2017-05-12 22:39
1506 查看
编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。
例如,原始二维数组为,逆向存放后变为。试建立一个类REVARR,完成上述工作。具体要求如下:
(1)私有数据成员
int a[M]
:初始化时存放原始二维数组,最终存放逆向存放后的二维数组。
(2)公有成员函数
REVARR(int x[M]
):构造函数,用形参x初始化数据成员a。
void reverse():按题目要求处理二维数组。
void print():按二维数组方式输出a数组值。
(3)在主函数中完成对该类的测试。在程序的开头,定义符号常数M和N的值分别为3和4,表示数组的行数和列数。在主函数中定义数组int
data[M]
,其初值如上。定义一个REVARR类的对象arr,并用数组data初始化该对象的成员a,输出原数组值,然后调用成员函数逆序存放二维数组,最后输出逆序后的二维数组。
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
#define M 3
#define N 4
/*定义一个REVARR类*/
class REVARR
{
private:
int a[M]
;
public:
REVARR(int x[M]
);
void reverse();
void print();
};
/*析构函数给a 数组赋值*/
REVARR :: REVARR(int x[M][N
9b2c
])
{
for(int i = 0 ; i < M ; i++)
{
for(int j = 0 ; j < N ; j++)
{ a[i][j] = x[i][j]; }
}
}
/*实现元素替换*/
void REVARR :: reverse()
{
int temp;
for(int i = 0 , j = 0 ; i < M ; i++)
{
for(j = 0 ; j < N ; j++)
{
if( ( i != ( M - i - 1)) && (j != ( N - j - 1 )) )
{
temp = a[i][j] ;
a[i][j] = a[M - i - 1][ N - j - 1 ];
a[M - i - 1][ N - j - 1 ] = temp;
}
else
{ break; }
}
if( j != N)
{ break ; }
}
}
void REVARR :: print()
{
for(int i = 0 ; i < M ; i++)
{
for(int j = 0 ; j < N ; j++)
{ cout << setw(4)<< a[i][j] ; }
cout <<endl;
}
}
/*主函数测试*/
int _tmain(int argc, _TCHAR* argv[])
{
int data[M]
;
for(int i = 0 ; i < M ; i++)
{
for(int j = 0 ; j < N ; j++)
{ data[i][j] = rand() %10 ; } //利用随机函数给data的元素赋值
}
REVARR arr(data);
arr.print();
arr.reverse();
cout<< "新数组:" << endl;
arr.print();
system("pause");
return 0;
}
例如,原始二维数组为,逆向存放后变为。试建立一个类REVARR,完成上述工作。具体要求如下:
(1)私有数据成员
int a[M]
:初始化时存放原始二维数组,最终存放逆向存放后的二维数组。
(2)公有成员函数
REVARR(int x[M]
):构造函数,用形参x初始化数据成员a。
void reverse():按题目要求处理二维数组。
void print():按二维数组方式输出a数组值。
(3)在主函数中完成对该类的测试。在程序的开头,定义符号常数M和N的值分别为3和4,表示数组的行数和列数。在主函数中定义数组int
data[M]
,其初值如上。定义一个REVARR类的对象arr,并用数组data初始化该对象的成员a,输出原数组值,然后调用成员函数逆序存放二维数组,最后输出逆序后的二维数组。
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
#define M 3
#define N 4
/*定义一个REVARR类*/
class REVARR
{
private:
int a[M]
;
public:
REVARR(int x[M]
);
void reverse();
void print();
};
/*析构函数给a 数组赋值*/
REVARR :: REVARR(int x[M][N
9b2c
])
{
for(int i = 0 ; i < M ; i++)
{
for(int j = 0 ; j < N ; j++)
{ a[i][j] = x[i][j]; }
}
}
/*实现元素替换*/
void REVARR :: reverse()
{
int temp;
for(int i = 0 , j = 0 ; i < M ; i++)
{
for(j = 0 ; j < N ; j++)
{
if( ( i != ( M - i - 1)) && (j != ( N - j - 1 )) )
{
temp = a[i][j] ;
a[i][j] = a[M - i - 1][ N - j - 1 ];
a[M - i - 1][ N - j - 1 ] = temp;
}
else
{ break; }
}
if( j != N)
{ break ; }
}
}
void REVARR :: print()
{
for(int i = 0 ; i < M ; i++)
{
for(int j = 0 ; j < N ; j++)
{ cout << setw(4)<< a[i][j] ; }
cout <<endl;
}
}
/*主函数测试*/
int _tmain(int argc, _TCHAR* argv[])
{
int data[M]
;
for(int i = 0 ; i < M ; i++)
{
for(int j = 0 ; j < N ; j++)
{ data[i][j] = rand() %10 ; } //利用随机函数给data的元素赋值
}
REVARR arr(data);
arr.print();
arr.reverse();
cout<< "新数组:" << endl;
arr.print();
system("pause");
return 0;
}
相关文章推荐
- 编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。
- 编程将一个二维数组元素变换为逆向存放
- 编写一个函数 将第一个数组的值加第二个数组的值 放到第三个数组里 要求位置对应
- 【2013微软校招面试题】设计一个栈,当栈满时,新入栈的元素循环回第一个元素的位置将其覆盖
- 找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息。
- 20100127_1 设一维数组V中存有N个整数,试写一个算法,将其中的非零元素移到数组的前面来,连续存放,相对位置不变。
- 《c程序设计语言》读书笔记-第二个字符串任意一个在第一个字符串出现的位置,未出先返回-1
- 黑马程序员之C#编程基础学习笔记:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素减1。
- 【c语言】:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点
- 编程之美 - 写一个函数,返回数组中所有元素被第一个元素除的结果
- 找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息
- iOS开发,一个数组,里面的元素依次的向后移动,移出的元素依次补到第一个位置
- 实现一个"可变二维数组",这个二维数组的行数要求用户从键盘输入,每行的元素个数仍由用户从键盘输入. //数组元素值用户可以自定义.最后把二维数组打印出来.不要忘记释放数组内存. /*void main
- 将数据中的元素都向前移动一个位置,最后一个元素的值是原来第一个元素的值,然后输出这个数组。
- SQL查询,2个表,第一个表一行多个标题,第二个表1列,联合查询变成一个表,1行多个标题变成多个列
- 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小(也可能没有鞍点)
- 写一个函数,参数为$n,生成一个数组,其元素为1~$n,各元素位置随机排列,不得重复
- 找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息
- 简单编程(二十三)对一个二维数组a进行升序排列
- 《c程序设计语言》读书笔记-第二个字符串任意一个在第一个字符串出现的位置,未出先返回-1