c 指针 有n个整数, 使前面各数顺序向后移m个位置, 最后m个数变成最前面m个数, 写一函数实现以上功能 在主函数中输入n个整数, 并输出调整后的n个数。

这篇博客探讨了如何在C语言中编写函数,将一个整数序列的最后m个元素移动到开头,其余元素后移。作者提供了三种不同的方法,包括直观的迭代版本、指针操作版本和递归版本。博客强调理解算法的重要性,并指出动态内存管理在解决此类问题中的潜在作用。

题目翻译:

输入n个整数 然后输入一个整数m 做一个函数 把这n个整数的最后m个变为最开始m个 最开始n-m个往后移m个 互相调换位置

补充一句废话心得 我现在知道什么是算法了 比如一个题 你怎么去解这个题 不需要一步一步的详细步骤 大致的思路其实就是这个题的算法 那么 这个题怎么弄呢?

这里给出了很多种方法 各个不同 又都有相似之处

第一种方法

const int n = 10;
int main()
{
	void adjust(int a[]);
	int a[n];
	for (int i = 0; i < n; i++)    //输入10个整数  以数组形式储存
		cin >> a[i];
	adjust(a);
	for (int i = 0; i < 10; i++)
		cout << a[i] << " ";
	return 0;
}
void adjust(int a[])
{
	void adj(int a[]);
	cout << "请输入将最后几个数字调整呢?" << endl;
	int m = 0;											//最后m个数字调整
	cin >> m;
	for (int i = 0; i < m; i++)             //进行m次 每一次都是把最后一个调至第一个
	{
		adj(a);
	}
}

void adj(int a[])
{
	int tmp = a[n - 1];
	for (int i = n - 1; i > 0; i--)
	{
		a[i] = a[i - 1];
	}
	a[0] = tmp;
}

上方这个是我第一时间想出来的 很简单易懂 其实m个调为最前面m个 可以拆分为m次把最后一个调至最前面

再说一句 其实这个章节的题是要以指针或引用的形式来写的  下面给出上方第一种解的指针形式 其实本质都一样的  

一解指针版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值