1050: 寫一個函數,使給定的一個二維數組(3×3)轉置,即行列互換
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 154 Solved: 112
[ Submit][ Status][ Web Board]
Description
寫一個函數,使給定的一個二維數組(3×3)轉置,即行列互換。
Input
一個3x3的矩陣
Output
轉置后的矩陣
Sample Input
1 2 3 4 5 6 7 8 9
Sample Output
1 4 7 2 5 8 3 6 9
HINT
主函數已給定如下,提交時不需要包含下述主函數
/* C代碼 */
int main()
{
int a[3][3];
int i,j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
scanf("%d",&a[i][j]);
zhuangzhi(a);
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
/* C++代碼 */
int main()
{
int a[3][3];
int i,j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cin>>a[i][j];
zhuangzhi(a);
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
Source
水題,之所以拿上來,是因為這道題我用指針做的,也是順便熟悉了指針使用。
另外,定義一個指針的時候不要忘記初始化,做這道題犯了這個低級錯誤,驚醒,切記切記。
1 #include <iostream>
2 using namespace std; 3 void zhuangzhi(int(*p)[3]) 4 { 5 int (*p2)[3] = new int[3][3]; //注意要初始化 6 for(int i=0;i<3;i++) 7 for(int j=0;j<3;j++){ 8 *(*(p2+i)+j)=*(*(p+i)+j); 9 } 10 for(int i=0;i<3;i++) 11 for(int j=0;j<3;j++){ 12 *(*(p+i)+j)=*(*(p2+j)+i); 13 } 14 delete *p2; 15 }
Freecode : www.cnblogs.com/yym2013
