1997-c-四

#include <stdio.h>
#include <stdlib.h>
/*
**数组中有N个元素,要移动K个位置,那么数组的大小最小是N+K
**宏定义N与K
*/

#define N 3 //存储的数据
#define K 2 //移动的位置

#define MAXSIZE (N + K)

void EnterIntegers(int *p);
void Move_k_Position(int *p);
void ShowArray(int *p);



int main()
{
    int A[MAXSIZE];


    //输入N个整数
    EnterIntegers(A);

    //移动K个位置
    Move_k_Position(A);

    //显示数组元素
    ShowArray(A);
}

//输入N个整数
void EnterIntegers(int *p)
{
    int i = 0;

    printf("Enter N integers.\n");

    for (i = 0; i < N; i++)
    {
        scanf("%d", p + i);
        printf("%d\n", *(p + i));
    }
}

//移动K个位置
void Move_k_Position(int *p)
{
    int i = 0;
    p = p + N -1;

    //从头部开始,每个元素都往后移动K个位置
    for (i = N - 1 ; i >= 0; i--)
    {
        *(p + K) = *p;
        *p = -1;//移动后将数据域清零
        p--;
    }
    //输出数组中的数据域中的内容

}

//显示数组元素
//空出来的位置以-1标记
void ShowArray(int *p)
{
    int i = 0;

    for (i = 0; i < N + K; i++)
    {
        printf("%d\n", p[i]);
    }
}