c语言:(指针)有n个整数,使前面各数顺序向后移动m个位置

c语言:(指针)有n个整数,使前面各数顺序向后移动m个位置

#include<stdio.h>
#include<stdlib.h>
int main(){
    void move(int *a,int n,int m);
    int a[100];
    int n,m,i; 
    scanf("%d%d",&n,&m); //输入n,m的值
    for ( i = 0; i < n; i++)
    {
        scanf("%d",&a[i]);
    }
    move(a,n,m); 
    for ( i = 0; i < n - 1; i++) // n - 1 代表数值往后移一位
    {
        printf("%d",a[i]); 
    }
    printf(" %d ",a[i]);//打印全部数字,如果不写这步,会因为n-1少一个数字
}
void move(int *a,int n,int m){
    int temp[100]; //用来临时接收数字
    int i;
    for ( i = 0; i < n; i++)
    {
        temp[i] = a[i];  
    }
    for ( i = 0; i < m; i++) //m代表要多少个移动数字
    {
        a[i] = a[n-m + i];  // n-m + i 代表数字往前移动
    }
    for ( i = m; i < n; i++)
    {
        a[i] = temp[i-m]; //总共要移动的数字 移动到 第一的位置
    }
    
}


补充:输入m=3,代表的是8,9,10是n的后面几位数,m代表一个整体移动到最前面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值