数据移位(C案例)

有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m个数变成最前面的m个数。
编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数并输出调整后的n个数。
例子
Input n(n<=10):10
Input 10 integers:1 2 3 4 5 6 7 8 9 10
Output the original:1 2 3 4 5 6 7 8 9 10
Input m(m<=10):4
Output the shifted:7 8 9 10 1 2 3 4 5 6

#include "stdafx.h"

void shift( int* p_num1[10] ,int n ,int m)
{
    int i,t;
    int num[10];
    for (i = 0; i < n; i++)
        num[i] = *p_num1[i];
    for ( i = 0 ;i < n ;i++)
        *p_num1[i] = num[(n-m+i)%n];
}

void main()
{
    int n,m,i;
    int num[10];
    int* p_num0[10];
    printf("Input n(n<=10):");
    scanf("%d",&n);
    printf("Input n integers:");
    for (i = 0; i < n; i++)
        scanf("%d",&num[i]);
    printf("Input m(m<=10):");
    scanf("%d",&m);
    for (i = 0; i < n; i++)
        p_num0[i] = & num[i];
    shift( p_num0 ,n ,m);
    for  ( i = 0 ;i < n ;i++)
        printf("%d " ,*p_num0[i]);
}

本体有着一种独特的感觉,就是对于一维数组结构的一种回环,我在这里使用的是借助数字计算中存在的一种循环规律来代替这种循环,从而实现了目的
这在某种程度上反映了,编程语言所代表的事件内在的逻辑,与具有严格逻辑意义的学科——数学之间存在的美妙神奇的交汇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值