while文に引き続き,繰り返しを学習する.
今回は,繰り返しのもう一つ,for 文の演習を行う.
(例)1から,入力した値 n までの和を求めるプログラムを作成せよ.
考え方:
この問題は,1 から n までの値を自動的に作るプログラムを土台にする.
#include <stdio.h>
void main()
{
int i, n;
printf("n=");
scanf("%d", &n);
i = 1; /* カウンターの値を1に */
while(i <= n) { /* カウンターの値が n 以下の場合,以下を繰り返す */
printf("%d¥n", i); /* 画面にカウンターの値を表示する */
i++; /* カウンターの値に1加える */
}
}
ここで,ループの回数を数えるカウンタは,1 から n まで変化する.
i |
1 |
2 |
... |
n |
別の変数 wa を用意し,ループで作成したカウンタを順番に加えていく.
i | wa |
1 | 1 |
2 | 1+2 |
... | ... |
n | 1+2+...+n |
#include <stdio.h>
void main()
{
int i, n, wa;
printf("n=");
scanf("%d", &n);
wa = 0; /* 和をあらかじめ 0 に */
i = 1; /* カウンターの値を1に */
while(i <= n) { /* カウンターの値が n 以下の場合,以下を繰り返す */
wa += i; /* wa = wa + i */
i++; /* カウンターの値に1加える */
}
printf("和は %d です¥n", wa); /* 結果を表示する */
}
同じプログラムを,for文
を用いて作成すると,
#include <stdio.h>
void main()
{
int i, n, wa;
printf("n=");
scanf("%d", &n);
wa = 0;
for(i=1; i<=n; i++) {
wa += i;
}
printf("和は %d です.¥n", wa);
}
となる
while文と比較してみよう.
while | for |
|
|
式1 | 初期値設定 | 繰り返し実行の直前に1度だけ実行される.カウンタの初期値設定などに使う. |
式2 | 反復条件 | while分と同様,繰り返しを継続する条件を書く.この条件式が真の間は繰り返す |
式3 | 付加実行式 | 繰り返しを1度行うごとに実行したいことを書く. |
文1 | 実行文 | 繰り返し実行する文 |
for 文は,あらかじめ繰り返しの回数がわかっているときに,利用する.
while 文は,ある条件になるまで繰り返すという場合に,利用する.
ただし,どちらも書き換えが可能なので,必ずというわけではない.
(1) 整数nを入力すると,n!を一回だけもとめるプログラムをfor文を用いて作成せよ.(注意:0!=1)
(2) まずデータ(例えば実験データなど)の件数 n
を整数で入力し,続いてその件数分データを入力すると,
データの合計と平均値を求め画面に表示するプログラムをfor文を用いて作成せよ.
データの例:5(データ件数,これは整数),続いて 10.2 9.8 3.3 8.4 11.9 と順に入力すると,合計は...
(3) 掛け算九九の1から9の段の式と答えを表すプログラムをfor文を用いて作成せよ.
(4) 成績データ(0以上100以下)を何件か入力し,その最大値を求めるプログラムを作成せよ.ただし,データ件数は始めに入力する.
(5) m枚のカードからn枚選んで順に並べる場合の数(順列)を,自然数m,nを入力すると答えるプログラムを作成せよ.
授業終了時までのプログラムと完成した提出用プログラムをoh-meijiシステムを使って提出すること
授業終了時に送るのは出席の確認用である.完成した課題は提出用の回に送ること
(提出期限を厳守し,提出用の回に提出しないと採点を行わない)