※ ChatGPTを利用し、要約された質問です(原文:C言語 多重配列に関して)
C言語 多重配列に関しての質問
このQ&Aのポイント
C言語の多重配列について質問があります。9回数字を打ち込むはずのプログラムでなぜ3回しか入力しないのかが分からず困っています。
プログラムの動きやループの制御について疑問を抱えています。どのように読んだら良いのか教えてください。
プログラムの実行結果と自分の考えが一致しないため、正しい解釈ができません。解説していただけますか?
以下のプログラムについての質問です。
10行目 for i = 0 の時、13行目 for j = 0 で scanf("%lf", &a[0][0])に10と代入します。
この時のドス画面は input 1-th line element:10 です。ここまではいいのですが、この次がよくわかりません。私の考えでは、10行目 i = 0 の時 13行目 j = 1 となって j がNMAXまでやったら、10行目のiが1になってまた同じように動いて、10行目の i がNMAXになったら、for文が終わると考えたのですが、このプログラムの実行結果(一番下にあります)を見てみると自分の考えが間違っていることに気がつきました。
3行3列のプログラムなので、a[0][0] a[0][1] a[0][2] a[1][0].......となると考え、scanfでドス画面に9回数字を打ち込むかと思ったのですが実際は3回でした。このプログラムはどのように読んだら良いのでしょうか??
回答宜しくお願い致します。
1 #include <stdio.h>
2 #define NMAX 3
3
4 main()
5 {
6 double a[NMAX] [NMAX], b[NMAX] [NMAX], c[NMAX] [NMAX];
7 int i,j,k;
8
9 printf("matrix 1:\n");
10 for(i=0; i< NMAX; i++)
11 {
12 printf("input %d-th line element:", i+1);
13 for(j=0; j< NMAX; j++);
14 {
15 scanf("%lf", &a[i][j]);
16 }
17 }
18 printf("matrix 2:\n");
19 for(i=0; i<NMAX; i++)
20 {
21 printf("input %d-th line element:", i+1);
22 for(j=0; j< NMAX; j++);
23 {
24 scanf("%lf", &b[i] [j]);
25 }
26 }
27 for(i=0; i<NMAX; i++)
28 {
29 for(j=0; j<NMAX; j++)
30 {
31 c[i][j] = 0;
32 for(k=0; k <NMAX; k++)
33 {
34 c[i][j] += a[i][k] * b[k][j];
35 }
36 }
37 }
38
39 printf("matrix 1 * matrix2 = :\n");
40 for(i=0; i<NMAX; i++)
41 {
42 printf("[");
43 for(j=0;j<NMAX; j++)
44 {
45 printf("%f", c[i][j]);
46 }
47 printf("]\n");
48 }
49 }
お礼
申し訳ありませんでした。問題は解決しました。 scanfで、画面入力する際に間違って入力していました。 ありがとうございました。
補足
早速の回答ありがとうございました。 確かに13行目と22行目にセミコロンがついていました。しかし、これを取って実行させたら、実行画面は matrix 1: input 1-th line element: と表示され、適当に数字を入力し、enterキーを押しても次に進まない状態になってしまいました。つまり、上の2行で終わってしまいます。 何回見返してもプログラムは間違って内容に思うのですが.. どなたか回答宜しくお願い致します。