C语言指针题

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:33:57
有N个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。

用指针做

代码如下,仅供参考:
#include<iostream>
using namespace std;
void fun(int a[],int n,int m)
{
int i;
if(n<=m)
{
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
else
{
for(i=n-m;i<n;i++)
cout<<a[i]<<" ";
for(i=0;i<n-m;i++)
cout<<a[i]<<" ";
cout<<endl;
}
}
void main()
{
int i,k,l,a[100];
i=0;
cout<<"请输入数据并以ctrl+a结束:"<<endl;
while(cin>>k)
{
a[i]=k;
i++;
}
cin.clear();
cin.sync();
l=i;
cout<<"请输入要移动的位数:"<<endl;
cin>>k;
cout<<"运算结果为:"<<endl;
fun(a,l,k);
}
有不明白的再联系我。

一楼的好像思路更简单一些。
我创建了一个双向循环队列,以下是实现,供参考

#include <iostream>
using namespace std;

struct s
{ <