2017-10-05 233 views
-4
double s[3][3] = {-0.145, 0.784, 0.745, 
        0.214, 0.547, 0.547, 
        0.321, 0.254, 0.452 }; 

double g[3] = {0.124,0.245,0.657}; 

double result[3]; 

int i, j; 

int main() { 
for (i = 0; i < 3; i++) { 
for (j = 0; j < 3; j++) { 
     result[i] += s[i][j] * g[i]; 
     result[i]; 
     printf("%d\t", result[i]); 
     } 
    } 
} 

告诉我,我在程序中写错了什么?结果,你应该得到一个3x1的矩阵。如何将矩阵3x3乘以3x1的语言C

+0

根据需要通过适当的[MCVE],什么是你期待* *输出,什么是你输出*眼看*? – Xirema

+3

@ DmitriyKalugin-Balashov它是全球性的。所以它被隐含地初始化为零。 –

+5

'%d'是一个错误的格式说明符。我想你想在外部循环中使用'printf',而不是内部循环。 –

回答

1

您需要初始化的结果是这样的:

double result[3] = {0.,0.,0.} 

因为result[i] += ... 被添加到现有的价值。

result[i] += s[i][j] * g[j]; (g[j] instead of g[i])