在mooc上总有一样例不通过,不清楚错误

问题描述:编写程序,把给定长度为10的整数数组中所有元素循环右移 j 位。 输入:从键盘随机输入十个整数,作为数组a的元素;输入一个正整数j作为移动位数。 输出:移动后的整数数组a中的所有元素,各元素间无间隔字符。 样例:输入 1 2 3 4 5 6 7 8 9 0 2 输出 9012345678 有错误,
#include <stdio.h>
int main() {
int a[10];
int n,i;
int b[10];
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &n);
for (i = 0; i < 10; i++) {
if (n + i >= 10)
b[n+i-10] = a[i];
else
b[i+n] = a[i];
}
for (i = 0; i <= 9; i++) {
printf("%d", b[i]);
}
return 0;
}

右移位数可能会超过10
尝试改为

#include <stdio.h>
int main()
{
    int a[10];
    int n, i;
    int b[10];
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &a[i]);
    }
    scanf("%d", &n);
    n %= 10;//加入的改动
    for (i = 0; i < 10; i++)
    {
        if (n + i >= 10)
            b[n + i - 10] = a[i];
        else
            b[i + n] = a[i];
    }
    for (i = 0; i <= 9; i++)
    {
        printf("%d", b[i]);
    }
    return 0;
}

有帮助望采纳~

img