第10回 繰り返し (6/25)

今週は,繰り返し方法のバリエーションを増やそう.


前回の演習の答え

1. 1からキーボードから入力した値までの和を求めるプログラム

まず,問題が与えられたら,プログラムの実行手順を考えよう

1 和を求める数 n を入力する

1 合計をもとめる変数を,クリヤーする

2 繰り返しの回数(カウンタ)を,0にする

3 カウンタの値が n を超えるまで,以下を繰り返す

  2-1 合計にカウンタの値を加算する
  2-2 カウンタの値に1加える

となる.

これを,プログラムにしてみよう.


解答例:

#include <stdio.h>

void main()
{
    int i, n, sum;

    printf("1からnまでの和を求めます.nを入力してください.n = "); scanf("%d", &n);

    sum = 0;

    for(i=0; i<n; i++){
        sum += i+1;
    }

    printf("1から%dまでの和は,%dです.\n", n, sum);

}

二重ループ

for文を二つ組あせて使うと,どうなるか試してみよう.

例:

#include <stdio.h>

void main()
{
    int i, j;

    for(j=1; j<=9; j++){
        for(i=1; i<=9; i++){
            printf("%d×%d=%d\n", j, i, j*i);
        }
    }
}

while文

繰り返しの回数が,あらかじめわかっていないときは,while文を用います.while文は,ある条件が成り立っている間は,繰り返しを続けます.

主に,キーボードから**が入力されるまで繰り返すとか,計算結果が**になるまで繰り返すなどの場合に用います.

前判定の繰り返し

while(式)

  文1

後判定の繰り返し

do

  文1

while(式)

前判定(while文)と後判定(do-while文)の違いは,while文は文の実行よりも先に条件判断を行うので,最初に条件が成立しなければ,文は一度も実行されないことがあるのに対し,do-while文では,文が必ず一度は実行されます.

たとえば,0が入力されるまで,入力された数字を加えるプログラムは,次のようになります.

例:

#include <stdio.h>

void main()
{
    int n, sum;

    sum = 0;

    do{
        scanf("%d", &n);
        sum += n;
    } while(n!=0);

    printf("合計は%dです\n", sum);
}

演習

1. A,B が1桁の正整数のとき,(A * 10 + B) ― (B * 10 + A) = 45となる,A,Bの組み合わせを求めよ.

2. 年利5%の複利(1年経つごとに利子を元金に繰り入れて,その加算額を次期の元金とする)の定期預金に1万円預けると,元利合計が10万円を超えるのは何年後になるかを求めよ.