2016-11-24 107 views
1

我有用隨機數填充的二維數組。二維數組中的移動元素

例如:

#define d 4 

int main(void) 
{ 
int a[d][d]; 
int primary[d], secondary[d]; 
size_t i, j; 

srand(time(NULL)); /* fill array with random numbers */ 
for (i = 0; i < d; i++) 
    {for (j = 0; j < d; j++) 
    a[i][j] = rand() % 100; 
    } 

如何更改對角線。例如:

1 0 0 0 2  2 0 0 0 1 
0 3 0 4 0  0 4 0 3 0 
0 0 5 0 0 to 0 0 5 0 0 
0 6 0 7 0  0 7 0 6 0 
8 0 0 0 9  9 0 0 0 8 

任務是打印d規模的隨機矩陣,然後使用週期而變化對角線位置和打印again.However我真的沒有得到循環應該是什麼樣子等。

欣賞任何提示或示例。

+1

使用您用來填補矩陣相同的邏輯,但逆轉循環和打印,而不是將它設置一個隨機值。 – dreamcrash

+0

「使用循環」是什麼意思? – davmac

回答

1

循環而j < d/2然後交換價值:

for (i = 0; i < d; i++) { 
    for (j = 0; j < d/2; j++) { 
     int temp = a[i][j]; 
     a[i][j] = a[i][d - j -1]; 
     a[i][d - j -1] = temp; 
    } 
} 
+0

u你解釋一下d/2在做什麼?而且它的工作很好。 – andrewand

+0

將d除以2 :),用紙和鉛筆做,只需要交換,直到中間給出左右偏移。 –