标题:c++中连续数列的移动问题,有个地方不懂,求解释,谢谢!
只看楼主
天涯浪子0ne
Rank: 1
来 自:湖南邵阳
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-8
 问题点数:0 回复次数:0 
c++中连续数列的移动问题,有个地方不懂,求解释,谢谢!
第 63 题  :  连续数列的移动
(时间限制为:100毫秒)


输入n(n<100)个整数和一个整数m(m<n),将其中将前面各数顺序向后移动m个位置,最后m个数变成前面m个数。要求设计三个函数进行处理,要求满足如下要求:
   
编号 函数声明格式 功能描述
1 myread(int *p,int n); 将标准输入的n个整数,依次读入到p所指向的存储单元
2 process(int * p,int n) 将其中将前面各数顺序向后移动m个位置,最后m个数变成前面m个数
3 myprint(int a[],int n) 使用一行输出数组的元素值,使用一个空格隔开,


 
输入:
标准输入,第一行是一个正整数N和m,N代表在第2行有N个整数,m表示需要你将数组中的元素移动的长度,整数之间使用空格隔开。
输出:
   将处理后的数组元素值使用一行输出,两数之间使用一个空格隔开。
样例
输入:
5 3
4 6 7 2 4
 
输出:
7 2 4 4 6
 
 

*/
程序代码如下:
#include<iostream>
using namespace std;
void fun(int *p, int n)
{
   int i;
   for(i=0;i<n;i++)
       cin>>*(p+i);
}
void fun1(int *p,int n,int m)
{
   int i,j,t;
   for(i=0;i<n-m;i++)
   {
       t=*p;
       for(j=0;j<n-1;j++)
          *(p+j)=*(p+j+1);
          *(p+j)=t; //这里不理解,还望各位帮我解释这个地方,谢谢啦
   }
}
void fun2(int *p,int n)
{
   int i;
   for(i=0;i<n;i++)
       cout<<*(p+i)<<" ";
       cout<<endl;
}
int main()
{   
    int *p,n,m,a[1000];
    p=a;
    cin>>n>>m;
    fun(p,n);
    fun1(p,n,m);
    fun2(p,n);
return 0;
}
搜索更多相关主题的帖子: 移动 process 正整数 
2013-05-08 19:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-406535-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.194873 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved