#include<stdio.h>
int main(){
/*sum:合計点,p:点数 */
int sum = 0, p;
while (1) {
printf("点数(999で終了)-----");
scanf("%d", &p);
if(p == 999)
break;
sum = sum + p;
}
printf("合計点は%d点です\n", sum);
return 0;
}
whileの( )の式の中に書いてある1というのは一体何を表しているのでしょうか?
普通はi > 5とかなっているのですが・・・
回答お願いします。
while文の(1)
Re: while文の(1)
一言で言うと無限ループですね。
C言語では0がFALSE(偽)、0以外ならTRUE(真)となります。
で、while文は()の中がTRUEである限り続くので、
無限ループとなります。
break文はこのループから抜けると言う意味です。
C言語では0がFALSE(偽)、0以外ならTRUE(真)となります。
で、while文は()の中がTRUEである限り続くので、
無限ループとなります。
何故無限ループから抜けるか、ということでしたら、サブマリン砲 さんが書きました:すいませんもう一つ質問をします・・
sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?
break文はこのループから抜けると言う意味です。
Re: while文の(1)
sumの初期値は0になっています。
pが例えば60だとすると、右辺では0に60を加えています。
左辺では、その結果(60)を新たなsumにしています。
この時点で、sumは60になっています。
次に、pが90だとします。
右辺では、60に90を加えています。
左辺では、その結果(150)を新たなsumにしています。
よって、この時点では、sumは60と90の合計である150になります。
以下、同様です。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: while文の(1)
知っていると思いますが、scanfはキーボードからの出力なのでサブマリン砲 さんが書きました:#include<stdio.h>
何故Pの値が反映されているのでしょうか?
キーボードで100と打てば、Pの値は100となりますし、
60と打てば60になります。
なので、999と打ち込めばbreakによりループを抜けます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: while文の(1)
この質問で心配なのは、=を数学の=と同じに考えていないかです。サブマリン砲 さんが書きました:すいませんもう一つ質問をします・・
sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?
=の代入の機能を理解されていますでしょうか?
右辺の計算結果を左辺の変数に代入するのが=の機能です。
誤解を避けるために := と言う書き方を採用したPascalという言語が有るぐらいですので=の誤解が多いのですが、誤解されていないなら良いのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: while文の(1)
みなさん、回答大変ありがとうございます。
while文とかも最初は難しいかなと思ったのですが、
よくよく考えたら簡単かもしれません。
=に関しては、意味の解釈を勘違いしないように
十分注意したいと思います。
while文とかも最初は難しいかなと思ったのですが、
よくよく考えたら簡単かもしれません。
=に関しては、意味の解釈を勘違いしないように
十分注意したいと思います。