
以下のプログラムのURLで、
https://oshiete.goo.ne.jp/qa/13531880.html
inpCount=0の時はどうなるのか教えていただけると嬉しいです。whileループの所です。教えていただけると嬉しいです。
No.9ベストアンサー
- 回答日時:
>例えば、⑥は、inpDataに2が格納されていて、最初に宣言した、inpTotal=0と、inpData=2を足し合わせるというような感じでしょうか?
はい、その通りです。
No.6
- 回答日時:
>では、inpCount=0の時は、inpDataには値は取り込まれないのでしょうか?
上記の意味が、よく分かりませんが、inpDataに値が取り込まれるのは以下のタイミングです。
int inpData;
int inpCount = 0;・・・・・・・①
int inpTotal = 0;
float heikin;
while(inpCount<5)・・・・・・・②
{
printf("input ? 1 2 3 4 10");・・・③
scanf("%d",&inpData);・・・・・・・④
inpCount++;・・・・・・・・・・・・⑤
inpTotal+=inpData;・・・・・・・・⑥
}
①でinpCountに0がセットされます。(この時点ではinpDataには値は取り込まれせん)
②(0<5)が成立します。(この時点ではinpDataには値は取り込まれせん)
従って、③、④、⑤、⑥が順に実行されます。
③を実行します。(この時点ではinpDataには値は取り込まれせん)
④を実行します。(この処理でinpDataに値が取り込まれます)
④が完了した時、inpDataに値がセットされています。
この時点で、inpCountの値は0のままです。
⑤でinpCountに1加算されます。
⑤が完了すると、inpCountの値は1になります。
No.5
- 回答日時:
No3で
InpCountの値
0 < 5 なので処理を行う。・・・1回目
1 < 5 なので処理を行う。・・・2回目
2 < 5 なので処理を行う。・・・3回目
3 < 5 なので処理を行う。・・・4回目
4 < 5 なので処理を行う。・・・5回目
5 < 5 なので処理を行わない。・・・6回目
と書きましたが、
while(条件)
{
処理
}
の処理のことです。
処理は
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
になります。
言い換えれば、
InpCountの値
0 < 5 なので以下の処理を行う。・・・1回目
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
1 < 5 なので以下の処理を行う。・・・2回目
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
2 < 5 なので以下の処理を行う。・・・3回目
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
3 < 5 なので以下の処理を行う。・・・4回目
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
4 < 5 なので以下の処理を行う。・・・5回目
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
5 < 5 なので処理を行わない。・・・6回目
ということです。
No.4
- 回答日時:
>では、inpCountが0から4まで処理を行いますが、inpCount=0の時どうやってinpDataにセットしているのでしょうか?
>inpCount=0の場合、1増やすだけで終わりなのでしょうか?
inpDataに値をセットするのは
scanf("%d",&inpData); の行です。
画面から入力した数字を整数にして、inpDataに取り込みます。
inpCountに1加算するのは、inpCount++; の行です。
No.3
- 回答日時:
InpCountの値
0 < 5 なので処理を行う。・・・1回目
1 < 5 なので処理を行う。・・・2回目
2 < 5 なので処理を行う。・・・3回目
3 < 5 なので処理を行う。・・・4回目
4 < 5 なので処理を行う。・・・5回目
5 < 5 なので処理を行わない。・・・6回目
上記のようになります。5回目まで行われます。
では、inpCountが0から4まで処理を行いますが、inpCount=0の時どうやってinpDataにセットしているのでしょうか?inpCount=0の場合、1増やすだけで終わりなのでしょうか?教えていただけると嬉しいです。
No.2
- 回答日時:
>すみません。
InpCount=0の時からinpDataに数字をセットする事は可能なのでしょうか?やろうと思えば、できますが、
scanf("%d",&inpData);で
inpDataに値が設定されてしまうので、上書きされてしまいます。
それを承知で、するなら、
int inpData;
を
int inpData = 設定したい値;
としておけば良いです。
設定した値が0なら、
int inpData = 0;
とします。
すみません。何故、そのプログラムで、数字が5個読み込めるのでしょうか?4個しか読み込めないような気がするのですが。詳しく教えていただけると嬉しいです。
No.1
- 回答日時:
while文は、以下の規則に従い動作します。
while(条件)
{
処理
}
条件が、成立する間、処理が行われます。
ここで、条件は
inpCount<5 です。
処理は
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
になります。
①1回目のwhile(inpCount<5)について
inpCount=0なので、条件は
0<5 なので、条件が成立し、処理が行なわれます。
つまり
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
が実行されます。
ここで、inpCount++によりinpCountに1加算されます。
②2回目のwhile(inpCount<5)について
この時の条件は、inpCount=1なので
1<5 となり成立し、同様に処理が行われます。
つまり
printf("input ? 1 2 3 4 10");
scanf("%d",&inpData);
inpCount++;
inpTotal+=inpData;
が実行されます。
③6回目のwhile(inpCount<5)について
これを繰り返して、inpCountが5になると
5<5 の条件が成立しません。
従って、while文を終了し、
heikin=(float)inpTotal/(float)inpCount;
が実行されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Escキーを押すと、中断する時と...
-
画面を強制的に再描画させる方法
-
流れ図(フローチャート)が分か...
-
乱数の桁数指定、または範囲指定。
-
CSVファイルの特定の行だけを読...
-
UWSCの終了の仕方
-
エクセルの当番表を作っていま...
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
VBA for文が止まらない
-
VBAで3秒だけ時間を止めたい
-
素数の個数を求めるプログラミング
-
EXCEL VBA ユーザーフォームの...
-
WHILE (CHKIMG(”A.bmp”)=FALSE)...
-
ListBox 複数選択 で オートフ...
-
アルゴリズムでのループの終了...
-
csh foreachで「*」でエラ...
-
多重ループの抜けだし方
-
vb.netからエクセル関数書き込み
-
VBA エラートラップができない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
範囲指定したセルを1つずつ飛...
-
vb.netです。2次元配列の要素を...
-
VBAで3秒だけ時間を止めたい
-
エクセルの当番表を作っていま...
-
UWSCに制限時間を付けたいです
-
DOSコマンドのループ内のTIMEコ...
-
VBAでの一時停止と再開の方法
-
CSVファイルの特定の行だけを読...
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
VBA for i=1 to lastrow
-
Do whileでExitせず、ループの...
-
VBA Boxが空白の場合のメッセー...
-
vb.netからエクセル関数書き込み
-
イベントの発生を待つ
-
乱数の桁数指定、または範囲指定。
-
エクセル関数で1〜12の数字がル...
おすすめ情報