以下のサイトの問題を解いてみましたが、修正前のプログラムだと答えと一致しなくなっています。
何故、result配列を0で初期化しないと答えが違ってくるのでしょうか?
■修正前
#include <stdio.h> int main() { int n, m; scanf("%d %d", &n, &m); int a[n][m]; int b[m]; int result[n]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%d", &a[i][j]); } } for (int i = 0; i < m; i++) { scanf("%d", &b[i]); } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { result[i] += a[i][j] * b[j]; } } for (int i = 0; i < n; i++) { printf("%d\n", result[i]); } }
実行結果
6 6 9
■修正後
#include <stdio.h> int main() { int n, m; scanf("%d %d", &n, &m); int a[n][m]; int b[m]; int result[n]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%d", &a[i][j]); } } for (int i = 0; i < m; i++) { scanf("%d", &b[i]); } for (int i = 0; i < n; i++) { result[i] = 0; } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { result[i] += a[i][j] * b[j]; } } for (int i = 0; i < n; i++) { printf("%d\n", result[i]); } }
実行結果
5 6 9
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/31 13:06