今週は,繰り返し方法のバリエーションを増やそう.
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万円を超えるのは何年後になるかを求めよ.