C 中的数组移位

问题描述 投票:0回答:1

我想像这样移动数组中的元素 如果

n = 3

我希望输出如下:

1 2 3
3 1 2
2 3 1

我的输出必须有 n 行

我试过了,但没用

#include <stdio.h>

int main() {
    int n; scanf("%d", &n);
    int lines[n]; int i,j;
    
    for(i=0;i<n;i++) {
        lines[i] = (i+1) % 10;
    }
    
    for(i=0;i<n;i++) {
        for(j=n;j>0;j--) {
            printf("%d ", lines[(i+j)%n]);
        }
        printf("\n");
    }
}

第一行有问题,但我不知道该怎么办。 谢谢您的帮助🙇u200d♀️!

arrays c sorting clang
1个回答
0
投票

您需要向后运行外循环,向前运行内循环:

#include <stdio.h>

int main() {
    int n; scanf("%d", &n);
    int lines[n]; int i,j;

    for(i=0;i<n;i++) {
        lines[i] = (i+1) % 10;
    }

    for(i=n;i>0;i--) {
        for(j=0;j<n;j++) {
            printf("%d ", lines[(i+j)%n]);
        }
        printf("\n");
    }
}

3 的输出:

1 2 3 
3 1 2 
2 3 1 

4 的输出:

1 2 3 4 
4 1 2 3 
3 4 1 2 
2 3 4 1 
© www.soinside.com 2019 - 2024. All rights reserved.