如何在C中更改数组输入顺序

时间:2017-12-22 18:55:50

标签: c arrays

我需要输入五个数字然后输入正数或负数。订单将更改为数字。

例如,如果三(3)是数字,那么:

1 2 3 4 5 6 7 8 9 10

将成为:

4 5 6 7 8 9 10 1 2 3

请不要使用指针。我已经制作了以下代码,并希望能够改进它。我可以使用模数运算符%来使用数学公式吗?如果是这样,我怎么能这样做。

谢谢,这是我的代码。

#include<stdio.h>

#define n 10
int main(void)
{
    int num[n] = { 0 }, assist[n] = { 0 }, i = 0, j = 0, variable = 0, k = 0;

    for (i = 0; i < n; i++)
    {
        printf("please enter index. %d\n", i );
        scanf("%d", &num[i]);
    }
    printf("please enter the circle number\n");
    scanf("%d", &variable);
    printf("\n\n");

    if (variable >= 0)
    {
        for (i = variable, j = 0; i < n; i++, j++)
        {
            assist[j] = num[i];
            k++;
        }

        for (i = 0, j = k; i < variable, j < n; i++, j++)//to assist//
        {                                                          
            assist[j] = num[i];
        }
    }

    if(variable < 0)
    {
        for (i = n + variable, j = 0; i < n; i++, j++)
        {
            assist[j] = num[i];
            k++;
        }
        for (i = 0, j = k; i < n + variable, j < n; i++, j++)
        {
            assist[j] = num[i];
        }
    }


    for (i = 0; i < n; i++)//output//
    {
        printf("%d\n", assist[i]);
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

像这样的东西。我没编译;任何小错误都适合你。

#include<stdio.h>
#define N 10

int main(void)
{
    int numbers[N];
    int offset;

    for (int i = 0; i < N; i++)
    {
        printf("please enter number %d: ", i);
        scanf("%d", &num[i]);
    }

    printf("\nplease enter the circle number: ");
    scanf("%d", &offset);
    printf("\n\n");

    for (int i = 0; i < N; i++)
    {
        printf("%d ", num[(i + offset) % N]);
    }

    printf("\n");
}