[← 演習のページへ戻る]
サンプルプログラム 2 の内容整数を繰り返し読み込み,読み込んだ整数の個数と合計値を表示する.読み込みの終了は 0 を入力した時とする.ただし,最後に入力された 0 は個数に含めない. 1: #include <stdio.h> 2: 3: int main(void){ 4: int x, sum, cnt; 5: 6: sum = 0; 7: cnt = 0; 8: 9: do { 10: printf("整数を一つ入力してください:"); 11: scanf("%d", &x); 12: if ( x != 0 ){ 13: sum = sum + x; 14: cnt = cnt + 1; 15: } 16: } while( x != 0 ); 17: 18: printf("入力を終了します\n"); 19: 20: printf("%d 個の数字の合計は %d です\n", cnt, sum); 21: 22: return 0; 23: } 9-16 行目:do{ ... } while ( x != 0 );8: 9: do { 10: printf("整数を一つ入力してください:"); 11: scanf("%d", &x); 12: if ( x != 0 ){ 13: sum = sum + x; 14: cnt = cnt + 1; 15: } 16: } while( x != 0 ); 17:まず,基本的な流れとして,読み込んだ整数(ここでは x の値)が 0 でないならば繰り返す(終わらずに,次の整数を読み込む)ことになるので,その繰り返し構造を do - while 文で作っています. 6 行目,13 行目:sum = 0; sum = sum + x;5: 6: sum = 0; 7: cnt = 0; 8: 9: do { 10: printf("整数を一つ入力してください:"); 11: scanf("%d", &x); 12: if ( x != 0 ){ 13: sum = sum + x; 14: cnt = cnt + 1; 15: } 16: } while( x != 0 ); 17:まず,
13: sum = sum + x;
ですが,sum という変数には合計値を記録させようとしています.
どうすればよいかと言うと,
13 行目の式は,合計値 sum を更新しているのです:
それゆえ,do - while の繰り返しが始まる前に,
6: sum = 0;
として,sum を 0 に設定しているのです.「sum に初期値を与えている」とか「sum を初期化している」などといいます. 7 行目,14 行目:cnt = 0; cnt = cnt + 1;5: 6: sum = 0; 7: cnt = 0; 8: 9: do { 10: printf("整数を一つ入力してください:"); 11: scanf("%d", &x); 12: if ( x != 0 ){ 13: sum = sum + x; 14: cnt = cnt + 1; 15: } 16: } while( x != 0 ); 17:もう一つの変数 cnt では,読み込んだ整数の個数を数えています. 上の sum よりもこちらの方が単純で,
|