C语言函数里数组问题,矩阵
这两道题完全看不出来怎么做呢?谁带我做下呀1.写一个函数void change(int array[],int n),可以将数组array中的n个元素逆序存放。即array[0]与a[n-1]互换,array[1]与array[n-2]互换……。
2.求两个矩阵的乘积c。已知矩阵a、b的值:
#include <stdio.h> #define N 10 void fun( int ( *a )[ N ], int I ); int main( void ) { int a[ N ][ N ]; int i, j, k; for( i = 0, k = 0; N > i; i++ ) for( j = 0; N > j; j++, k++ ) a[ i ][ j ] = k; fun( a, N ); for( i = 0; N > i; i++ ) { for( j = 0; N > j; j++ ) printf( "%2d ",a[ i ][ j ] ); printf( "\n" ); } return 0; } void fun( int ( *a )[ N ], int I ) { int i, j; int temp; for( i = 0; I > i; i++ ) { for( j = i + 1; N > j; j++ ) { temp = a[ i ][ j ]; a[ i ][ j ] = a[ j ][ i ]; a[ j ][ i ] = temp; } } }
#include <stdio.h> void matrix_multiply( int ( *m1 )[ 2 ], int ( *m2 )[ 4 ], int ( *r )[ 4 ], int x, int y, int z ); int main( void ) { int a[ 3 ][ 2 ] = { { 2, -6 }, { 3, 5 }, { 1, -1 } }; int b[ 2 ][ 4 ] = { { 4, -2, -4, -5}, { -7, -3, 6, 7 } }; int c[ 3 ][ 4 ]; int i,j; matrix_multiply( a, b, c, 3, 2, 4 ); for(i = 0; i < 3; i++ ) { for( j = 0; j < 4; j++ ) printf("%d ", c[ i ][ j ]); printf("\n"); } return 0; } void matrix_multiply( int ( *m1 )[ 2 ], int ( *m2 )[ 4 ], int ( *r )[ 4 ], int x, int y, int z ) { int a, b, c; for( a = 0; a < x; a++ ) for( b = 0; b < z; b++ ) r[ a ][ b ] = 0; for( a = 0; a < x; a++ ) for( b = 0; b < z; b++) for( c = 0; c < y; c++ ) r[ a ][ b ] += m1[ a ][ c ] * m2[ c ][ b ]; }