
以下のプログラムの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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラムについて。 4 2023/07/20 15:46
- C言語・C++・C# キャスト演算について。 1 2023/07/15 15:28
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
- C言語・C++・C# C言語について。 5 2023/06/27 18:37
- Excel(エクセル) DSUMとSUMIFSについて。 1 2022/06/02 05:30
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- Visual Basic(VBA) excelVBAについて。 5 2022/11/27 18:48
- Excel(エクセル) DSUM とSUMIFSについて。 6 2022/06/12 04:21
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
- その他(プログラミング・Web制作) Python3プログラムについて 4 2023/05/21 14:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBA for文が止まらない
-
UWSCの終了の仕方
-
VBA Boxが空白の場合のメッセー...
-
VBAで3秒だけ時間を止めたい
-
イテレータの存在意義
-
CSVファイルの特定の行だけを読...
-
流れ図(フローチャート)が分か...
-
pythonでファイルのコメント行...
-
Escキーを押すと、中断する時と...
-
VB.NETで素因数分解のプログラ...
-
Providence PEC-02 接続方法
-
vb.netです。2次元配列の要素を...
-
範囲指定したセルを1つずつ飛...
-
DoEventsが必要な理由について
-
StatementとResultSetのclose()...
-
VB.NETでFTPプログラム
-
Pro Tools の 波形を伸ばす方...
-
DOSコマンドのループ内のTIMEコ...
-
データベースをEOFまでループさ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
流れ図(フローチャート)が分か...
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
VBAで3秒だけ時間を止めたい
-
vb.netです。2次元配列の要素を...
-
エクセルの当番表を作っていま...
-
vb.netからエクセル関数書き込み
-
DOSコマンドのループ内のTIMEコ...
-
「偶数・奇数の和」のフローチ...
-
GIFアニメをループさせたくない
-
Do whileでExitせず、ループの...
-
VB2010でCSVファイルの読み込み
-
【VBA】全て空白のセルの列の非...
-
アクティブセルから、A列最終行...
おすすめ情報