c - 排列数组中的数字

标签 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。谢谢!

最佳答案

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

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

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

关于c - 排列数组中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581113/

相关文章:

c - 通过 C 中的函数操作动态数组

c - 我被 C 中的输出困住了(多维数组运算)

c - perlapio - PerlIO_findFILE() 有效,但将 errno 设置为 "illegal seek"(ESPIPE 29)

c - 用于迭代多个数组的高效设计结构

c++ - 属性警告未使用结果相当于 Visual C

c# - 就内存而言,清除数组的更好方法是什么

C——指针问题和void方法问题

c - 如何正确加密文件 AES-CBC?

c - 指向自身的指针数组

php - 如何从数据库中获取逗号分隔值