ACM训练系统 1046 [编程入门]自定义函数之数字后移 C

题目:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。

思路一:使用一个数组记录原数据 使用另一个数组记录改动后的数据

两组数据的顺序规律为:更改后的数据的位次=(更改之前的位次+位移量)/数据总量

以下代码可以满分通过acm训练系统

//baizhen
#include <stdio.h>
void tiaozheng(int a[],int b[],int c,int d);
void tiaozheng(int a[],int b[],int c,int d)
{
        for(int i=0;i<c;i++)
                b[(i+d)%c]=a[i];
}
int main(void)
{
        int a[100],b[100],count=0,change=0;
        scanf("%d",&count);
        for(int i=0;i<count;i++)
                scanf("%d",&a[i]);
        scanf("%d",&change);
        tiaozheng(a,b,count,change);
        for(int i=0;i<count;i++)
                printf("%d ",b[i]);
        return 0;
}

思路二:将排位向前变化的先打印,排位向后变化的后打印

以下代码可以满分通过acm训练系统

//baizhen
#include <stdio.h>
int main(void)
{
        int a[100],count,change,i;
        scanf("%d",&count);
        for(int i=0;i<count;i++)
                scanf("%d",&a[i]);
        scanf("%d",&change);
        for(int i=count-change;i<count;i++)
                printf("%d ",a[i]);
        for(int i=0;i<count-change;i++)
                printf("%d ",a[i]);
        return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值