今週は,繰り返し方法のバリエーションを増やそう.
1. 1からキーボードから入力した値までの和を求めるプログラム
まず,問題が与えられたら,プログラムの実行手順を考えよう
1 和を求める数 n を入力する
1 合計をもとめる変数を,クリヤーする 2 繰り返しの回数(カウンタ)を,0にする 3 カウンタの値が n を超えるまで,以下を繰り返す 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(式)
文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万円を超えるのは何年後になるかを求めよ.