题目翻译:
输入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次把最后一个调至最前面
再说一句 其实这个章节的题是要以指针或引用的形式来写的 下面给出上方第一种解的指针形式 其实本质都一样的
一解指针版

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

被折叠的 条评论
为什么被折叠?



