求解:数组与指针的知识
我是个程序初学者,麻烦高手帮我解决一下这个难题:编写一个3*3矩阵转置的函数,在main()函数中输入数据。(用数组与指针的知识解) 谢谢了
[解决办法]
#include<stdio.h>void rotate(int p[3][3]){ int b[3][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=p[j][i]; printf("\nAfter Rotate:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%6d",b[i][j]); printf("\n"); }}int main(){ int i,j; int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; printf("\nBefore Rotate:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%6d",a[i][j]); printf("\n"); } rotate(a); return 0;}
[解决办法]
#include <iostream>using namespace std;void fun(int a[3][3]){ int b[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { b[j][i] = a[i][j]; } } for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << b[i][j] << " "; } cout << endl; }}int main(){ int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, }; fun(a); return 0;}
[解决办法]
#include<stdio.h>void rotate(int (*p)[3]){ int b[3][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=p[j][i]; printf("\nAfter Rotate:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%6d",b[i][j]); printf("\n"); }}int main(){ int i,j; int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; printf("\nBefore Rotate:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%6d",a[i][j]); printf("\n"); } rotate(a); return 0;}