1: /* matrix00mul.c */ 2: #include 3: 4: int main( void ){ 5: 6: /* 変数の宣言 */ 7: int n, l, m; 8: 9: n = 2; 10: l = 3; 11: m = 2; 12: 13: /* 配列変数の宣言 */ 14: float a[ n ][ l ], b[ l ][ m ], c[ n ][ m ]; 15: 16: /* カウンタ用変数の宣言 */ 17: int i, j, k; 18: 19: /* 配列の初期化 */ 20: a[ 0 ][ 0 ] = 2.3; a[ 0 ][ 1 ] = 0.2; a[ 0 ][ 2 ] = 0.1; 21: a[ 1 ][ 0 ] = -0.3; a[ 1 ][ 1 ] = 0.0; a[ 1 ][ 2 ] = -0.5; 22: 23: b[ 0 ][ 0 ] = -1.0; b[ 0 ][ 1 ] = -0.1; 24: b[ 1 ][ 0 ] = 0; b[ 1 ][ 1 ] = 2.2; 25: b[ 2 ][ 0 ] = 0.5; b[ 2 ][ 1 ] = 0.7; 26: 27: /* 行列の積を計算 */ 28: for ( i = 0; i < n; i = i + 1 ) { 29: for ( j = 0; j < m; j = j + 1 ) { 30: c[ i ][ j ] = 0; 31: for ( k = 0; k < l; k = k + 1 ) { 32: 33: c[ i ][ j ] = c[ i ][ j ] + ( a[ i ][ k ] * b[ k ][ j ] ); 34: 35: } 36: } 37: } 38: 39: /* 行列 a の表示 */ 40: printf( " a =\n" ); 41: for ( i = 0; i < n; i = i + 1 ) { 42: printf( " [" ); 43: for ( j = 0; j < l; j = j + 1 ) { 44: 45: printf( " %5.2f ", a[ i ][ j ] ); 46: 47: } 48: printf( "]\n" ); 49: } 50: printf( "\n" ); 51: 52: /* 行列 b の表示 */ 53: printf( " b =\n" ); 54: for ( i = 0; i < l; i = i + 1 ) { 55: printf( " [" ); 56: for ( j = 0; j < m; j = j + 1 ) { 57: 58: printf( " %5.2f ", b[ i ][ j ] ); 59: 60: } 61: printf( "]\n" ); 62: } 63: printf( "\n" ); 64: 65: /* 行列 c の表示 */ 66: printf( " c = a + b\n" ); 67: for ( i = 0; i < n; i = i + 1 ) { 68: printf( " [" ); 69: for ( j = 0; j < m; j = j + 1 ) { 70: 71: printf( " %5.2f ", c[ i ][ j ] ); 72: 73: } 74: printf( "]\n" ); 75: } 76: printf( "\n" ); 77: 78: }