[← 演習のページへ戻る]
サンプルプログラム 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 よりもこちらの方が単純で,
|