亲宝软件园·资讯

展开

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

DB伟 人气:1

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;
}

加载全部内容

相关教程
猜你喜欢
用户评论