2016-09-11 3 views
0

나는 매트릭스 배 벡터 프로그램을 만들려고,하지만 난이 프로그램을 실행할 때, 나는 출력이 발견 이상한 조금 여기C : 매트릭스 배 벡터 출력

내 코드의

#include <stdio.h> 

main() 
{ 
    int i, j, n, a[3][3], b[3], c[3]; 

    n = 3; 

    printf("Matrix A\n"); 
    for (i = 0; i < n; ++i) { 
     for (j = 0; j < n; ++j) { 
      a[i][j] = 10; 
      printf("%d ", a[i][j]); 
     } 
     printf("\n"); 
    } 

    printf("\nMatrix B\n"); 
    for (i = 0; i < n; ++i) { 
     b[i] = 5; 
     printf("%d\n", b[i]); 
    } 

    printf("\nA * B\n"); 

    for (i = 0; i < n; ++i) { 
     for (j = 0; j < n; ++j) { 
      c[i] += a[j][i] * b[j]; 
     } 
    } 

    for (i = 0; i < n; ++i) { 
     printf("%d\n", c[i]); 
    } 
} 

결과는 C = {150,150,150}이어야합니다. 문제는 c [0]과 c [2]로만 보입니다.

+0

'당신이 곱셈의 결과를 추가 할 c''무작위 쓰레기로 끝날 수 있도록 c'가 초기화되지 않았습니다. 'c [3] = {0, 0, 0};과 같이 선언하거나 루프로 초기화하십시오. – Robert

답변

1

문제는 C가 변수를 0으로 초기화하지 않는다는 것입니다. 직접 작성해야합니다.

변경 다음과 같이 C를 계산 루프 :

for (i = 0; i < n; ++i) { 
    c[i]=0;  // Add this line so that c[i] can be used in: c[i] += .... 
    for (j = 0; j < n; ++j) { 
     c[i] += a[j][i] * b[j]; 
    } 
}