有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数,实现以上功能,在主函数中输入n个整数和输出调整后的n个数.c语言求大神

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 03:09:44
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数,实现以上功能,在主函数中输入n个整数和输出调整后的n个数.c语言求大神

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数,实现以上功能,在主函数中输入n个整数和输出调整后的n个数.c语言求大神
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数,实现以上功能,在主函数中输入n个整数和输出调整后的n个数.c语言求大神

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数,实现以上功能,在主函数中输入n个整数和输出调整后的n个数.c语言求大神
#include <stdio.h>
void func(int n,int m,int *a)
{
\x09int b[100],i;
\x09for(i = 0;i<m;i++)
\x09\x09    b[i] = a[n-m+i];
\x09for(i=(n-m-1);i>=0;i--)
\x09\x09    a[i+m] = a[i];
for(i = 0;i<m;i++)
     a[i] = b[i];
}


int main()
{
    int a[100],i,n,m;


\x09printf("input n\r\n");
\x09scanf("%d",&n);
\x09for(i=0;i<n;i++)
\x09\x09scanf("%d",&a[i]);   
    printf("input m\r\n");
\x09scanf("%d",&m);
    
\x09for(i=0;i<n;i++)
       printf("%d\t",a[i]);


\x09func(n,m,a);


printf("\r\nafter change\r\n");
for(i=0;i<n;i++)
    printf("%d\t",a[i]);
return 0;
}





这个比较简单直观
不然还可以用单链表 换换指针就行

#include
#include
#include
//array:input array
//n:length of array
//m:shift number
void Shift(int* array,int n,int m)
{
int i=0,j;

全部展开

#include
#include
#include
//array:input array
//n:length of array
//m:shift number
void Shift(int* array,int n,int m)
{
int i=0,j;
int temp;
while(i {
temp=array[n-1];
for(j=n-1;j>0;j--)
array[j]=array[j-1];
array[0]=temp;
i++;
}
}
int main()
{
int i,a[10]={1,2,3,4,5,6,7,8,9,10};
Shift(a,10,4);//移动4位
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}

收起