编程实现:自动产生斐波那契数列前m项的值,存储在数组a中。将数组a中的数据循环左移n位,并输出移动后的结果。
1)主函数功能:从键盘输入数据个数m及左移的位数n,产生斐波那契数列前m项的值存储在数组a中,调用子函数实现对数组a左移n位的操作,并输出移动后的结果。
(2)子函数功能:对指针p所指向的包含m个元素的数组实现循环左移n位的操作,子函数头要求定义为:void move(int *p, int m, int n) 。
(3)输入输出格式参见样张:
#include <iostream>
using namespace std;
void move(int *p,int m, int n)
{
int i, temp;
for (i=0;i<n%m;i++)
{
temp=*p;
for(int j=1;j<m;j++)
p[j-1]=p[j];
p[m-1]=temp;
}
}
int main()
{
int m,a[20],i,n;
cout<< "请输入数据个数m:";
cin>>m;
cout<<"移动前的数据为:"<<endl;
a[0]=a[1]=1;
cout<<a[0] <<" "<<a[1]<<" ";
for (i=2;i<m;i++)
{
a[i]=a[i-1]+a[i-2];
cout<<a[i]<< " ";
}
cout<<endl;
cout<<"请输入左移的位数n:";
cin>>n;
cout<<"移动后的数据为:"<< endl;
move(a,m,n);
for (i=0;i<m;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
运行结果如下: