2013-06-29 107 views
0

好吧,我有一個10x10陣列,我需要翻轉和打印。我做了這個功能來做到這一點更改函數中的數組值

void flip(int d[][10], int rows) 
{ 
    int temp, x, y, cols; 

    cols=rows; 

    for(x=0; x<rows; x++) 
    { 
     for(y=0; y<cols; y++) 
     { 
      temp=d[x][y]; 
      d[x][y]=d[y][x]; 
      d[y][x]=temp 
     } 
    } 
} 

現在我知道數組按引用傳遞,但我也讀的地方,陣列本身作爲指針,這樣你就不必使用指針符號似乎正確。我的問題是,當我嘗試在翻轉後進行打印時,它不打印翻轉的數組,但打印出原始的數組,使我認爲它不會翻轉原始數組。

這裏是打印功能。

void printArray(int d[][10]) 
{ 
    int rows, cols,x,y; 

    rows = sizeof(d[0])/sizeof(d[0][0]); 

     cols = rows; 

    for(x=0;x<rows; x++) 
    { 
     for(y=0;y<cols;y++) 
      printf("%2d ",d[x][y]); 
     printf("\n"); 
    } 
} 

奇怪的事情是,如果我改變溫度到像10號「硬」的值,則它打印出來和他們在一起10S的一半10×10陣列。我在這裏損失,爲什麼簡單的交換不工作:(

回答

2

從我可以告訴,通過「翻轉」你的意思是「轉」 ......

另外,如果你的工作代碼你的代碼可以工作,但是兩次 - 也就是說,你得到的是原始矩陣,你可以嘗試改變內部的循環,從x開始,而不是零。

+0

是的,我確實意味着轉置,我會試試 是的,它的工作謝謝你:) –