ID非公開

2022/7/2 0:55

33回答

C言語について int i=1とint i i=1 何が違うのでしょうか? 九九表を作る際に前者だと1の段しか表示されなかったのに、後者だと9の段まで表示されていました。 while文を使いました。

C言語関連84閲覧

ベストアンサー

0
ID非公開

質問者2022/7/2 1:04

int i=1,n=1,m while(i<10){ while(n<10){ m=i×n printf(%d,m) n++ } printf(/n) i++ } これだと駄目でした。なぜ駄目なのでしょうか? 細かいところは省いています。

ThanksImg質問者からのお礼コメント

ありがとうございます。一番回答が早かったのでBAはこの方にします。

お礼日時:7/2 8:45

その他の回答(2件)

0

~初期化と代入~ int i = 1; //初期化(initialization) int i; i = 1;//代入(assignment) ~違い~ 初期化は変数が初登場となる際に値も決定されます。 代入は、それまでの変数の値を変更します。int i; とした場合の変数の値は不定ですから、その後に i = 1; を行うと変数 i は不定の値から 1 に変更される形となります。 【九九表を作る際に前者だと1の段しか表示されなかったのに、後者だと9の段まで表示されていました。while文を使いました。】 以下のようにすると初期化でも問題ありません。 ~改善例~ int a = 1; while (a < 10) { int b = 1; while (b < 10) { int m = a * b; printf("%d * %d = %d\n", a, b, m); ++b; } ++a; } 《解説》 外側の while 文の中が繰り返されるたびに b の値が 1 に再設定されます。結果として内側の while 文が 9 回繰り返される形となります。 もし、int b = 1; を外側の while の上に書いてしまっていたら b の値は最初に 1 に設定されたあと、内側の while 文の中で ++ されっぱなしとなり、b = 1 に再設定されることが無くなってしまうというわけです。

ID非公開

質問者2022/7/2 8:43

ありがとうございます。

0

2022/7/2 1:04 のを見たけど while を使うからチョンボるのでwhileは原則避けて for(初期値;終了条件;ループにて変化するパラメータ) でループ条件を書く

ID非公開

質問者2022/7/2 8:41

学校の課題だったのでwhileは使わないといけないんです。for文なら自分でも出来ました。