代码工作得很好但我不知道如何在第二步中执行逆向处理

时间:2014-12-20 01:51:03

标签: c arrays

我只是构建了一个代码,它将5个数字分开并放在另一边的末尾。

ex. (left side)

1 2 3 4 5

n=2

3 4 5 1 2

这很有效,但是我试图做反向,让数字从右侧拍摄并推到左侧。这是我的完整代码。 (我知道,左和右完全相同。)我需要一些帮助

#include <stdio.h>
#include <conio.h>

int main ()
{
    int number[100]={1,2,3,4,5};
    int i,n=5,a,j;
    int num;

    printf("Enter 1(Left) or 2(Right)\n");
    scanf("%d", &num);

    if(num==1)
    {
        printf ("Enter the position of the element to split the array from left.\n");
        scanf ("%d",&a);

        for (i=0; i<a; ++i)
        {
            number[n] = number[0];

            for (j=0; j<n; ++j)
            {
                number[j] = number[j+1];
            }
        }

        printf("The resultant array is\n");
        for (i=0; i<n; ++i)
        {
            printf ("%d ",number[i]);
        }

    }
    else
    {
        printf ("Enter the position of the element to split the array from right.\n");
        scanf ("%d",&a);

        for (i=0; i<a; ++i)
        {
            number[n] = number[0];

            for (j=0; j<n; ++j)
            {
                number[j] = number[j+1];
            }
        }

        printf("The resultant array is\n");
        for (i=0; i<n; ++i)
        {
            printf ("%d ",number[i]);
        }
    }
    getch();

    return 0;
}

1 个答案:

答案 0 :(得分:2)

试试这个

    for (i=0; i<a; ++i)
    {
        for (j=n-1; j>=0; --j)
        {
            number[j+1] = number[j];
        }
        number[0] = number[n];
    }

在这里,您将每个字符移动到数组右侧1个元素,然后将最后一个元素分配到第一个元素,重复a次。