簡體   English   中英

排列數組中的數字

[英]Ordering numbers in an array

# 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)或數組中的實際元素數。

您可以為此使用環繞條件。

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM