习题 6.4 有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数。

习题 6.4 有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数。

尽量都用指针,而不用下标来访问数组

代码:

#include<iostream>
using namespace std;

int main(void)
{
	void turnBack(int*, int, int);

	int n;
	int m;
	int a[50];
	int* p;

	cout << "请输入n" << endl;
	cin >> n;

	cout << "请输入n个数" << endl;
	for (p = a;p != (a + n);++p)
	{
		cin >> *p;
	}

	cout << "请输入m" << endl;
	cin >> m;

	turnBack(a, n, m);

	for (p = a; p != (a + n); ++p)
	{
		cout<< *p;
	}

	cout << endl;

	return 0;
}

void turnBack(int *a,int n,int m)
{
	int* p;
	int b[50];    
	int* q ;

	for (p = (a + n - m),q = b; p != (a + n); ++p, ++q)  //将原数组的m到n存到临时数组b中
	{
		*q = *p;
	}

	for (p = a; p != (a + n - m); ++p)  //将原数组前n-m位后移m位
	{
		*(p + m) = *p;
	}

	for (p = a,q = b; p != (a + m); ++p, ++q) //将临时数组b中的m位移到原数组的前m位
	{
		*p = *q;
	}


}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值