订购数组中的数字

时间:2014-03-22 17:34:30

标签: c arrays

# include <stdio.h>
# include <stdlib.h>
# include <time.h>

int main(){
   int i, n, A[10] = {0}, B[10] = {0};

   srand((unsigned)time(NULL));

   printf("Shift how many elements?   ");
   scanf("%d", &n);

   for (i = 0; i < 10; i++){
      A[i] = rand()%10;
      printf("%d ", A[i]);
   }
   printf("\n\n\n");
   for (i = 0; i < 10; i++){
      B[i + n] = A[i];   *******
   }
   for (i = 0; i < 10; i++){
      printf("%d ", B[i]);
   }

   return 0;
}

我正在尝试编写一个代码,用于将数组中的数字移动一个用户输入的值,但我真的不知道如何处理索引,如果数字在最后并添加数字它可能会超出阵列,所以我该怎么做呢。请注意 与星号一致。如果可以,请在编码时给我一个关于数组索引的简要说明,或提示我可以做些什么来解决这个问题。我知道我的错误,我只是不知道如何解决它。

这个语言是C,我正在使用code :: blocks。谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用modulo(%)运算符来获取正确的索引:

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

我直接使用了10。通常,如果数组小于数组的大小,则应使用数组中的sizeof(B)或实际数量的元素。

答案 1 :(得分:1)

您可以为此使用环绕条件。

for (i = 0; i < 10; i++){
         B[i] = A[(i+n) % 10];  // to shift elements to the left by n
         //B[(i+n) % 10 ] = A[i]; // to shift right
}