有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数.

来源:百度知道 编辑:UC知道 时间:2024/09/21 23:39:15
c++大概怎样做
我想的是整数不是字符
n个整数是输入的,如果不确定怎样定义

首先将数组的最后一个元素放入一个临时变量中,然后从最后一个元素开始依次复制前一个元素直到第二个元素将第一个元素复制完成之后,再将临时变量中的字符赋予第一个元素,重复这一些工作m次即可循环右移m个字符,程序如下:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>

void proc(char a[],int n,int len) /*a是要移位的字符数组,n是要移动的位数,len是原字符数组的长度*/
{
int i,j;
char ch;
for (i = 0; i<n; i++) {
ch=a[len-1];

for (j=len-1; j>0 ; --j) a[j]=a[j-1];

a[0]=ch;
}
}
int main(void)
{
char s[]="network";
proc(s,4,strlen(s));
printf("%s\n",s);
return 0;
}
//---------------------------------------------------------------------------

这个题因该要假设一点,就是n>=2m
如果没这个条件也可以用下面的程序实现~!只是数据会被覆盖一些而已。

main()
{ int p[n];//n个整数
int q[m];//临时数组,用来存放最前面m个数
int n,m,i;

for(i=m;i--;i=0)
{ p[i]=q[i];//把p数组前面m个数存放到q数组
}