MOOC数列移位(10分)

题目内容:

有数组其10个元素值依次是:{1 2 3 4 5 6 7 8 9 10},现在将前面各数顺序向后移动m个位置,最后m个数变成最前面m个数,并输出。(编程提示:定义函数,实现每次数组往后移动一个元素,最后一个放到数组前面,这样调用m次即可实现数组后移m个数)

输入格式:

输入移动的次数m,scanf的格式串为"%d"

假设输入的m的值在闭区间[1,10]之间,程序中不再用选择或循环结构来处理输入部分。

输出格式:

依次输出移动后所有的元素

循环控制输出每个元素,printf中的格式串为"%3d"

输出最后一个元素后用printf("\n");进行换行处理。

输入样例:

3

输出样例:

  8  9 10  1  2  3  4  5  6  7

参考

#include<stdio.h>
void move(int [10],int ,int);


int main()
{
    int m,n=0,i;
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    scanf("%d",&m);
    move (a,10,m);
    for(i=0;i<10;i++)
    {
        printf("%3d",a[i]);
        if(i%9==0&&i!=0)
        {
            printf("\n");
        }
    }
    return 0;
    
}
void move(int arry[10],int n,int m)
{
    int *p,end;
    end=*(arry+n-1);
    for(p=arry+n-1;p>arry;p--)
        *p=*(p-1);
    *arry=end;
    m--;
    if(m>0)
        move(arry,n,m);
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值