1.自然数nを入力し,偶数か奇数か判定する
まず,問題が与えられたら,プログラムの実行手順を考えよう
1. 自然数を入力する 2. 偶数か奇数か判定する |
となる.2の内容を詳細に検討しよう.偶数か奇数かを判定するには入力した値を2で割ったあまりで判断してやればよい.
2.1 入力された値を2でわったときのあまりが 2.1T 0のとき 「偶数です」 |
これを,プログラムにしてみよう.
解答例:
#include <stdio.h> void main() { int n; printf("自然数を入力してください"); scanf("%d", &n); if(n%2 == 0) printf("%dは偶数です\n", n); else printf("%dは奇数です\n", n); }
2.テストの点数(0点から100点の整数)を入力し,その値によって,優,良,可,不可を表示する.
点数 |
成績
|
80点以上 |
優
|
60点以上80点未満 |
良
|
50点以上60点未満 |
可
|
50点未満 |
不可
|
これも,プログラミングにかかる前に,手順を確認しておこう.
1. テストの点数を入力する 2.1 テストの点数が |
解答例:
#include <stdio.h> void main() { int n; printf("テストの点数を入力してください"); scanf("%d", &n); if(n >= 80) printf("優\n"); else if(n >= 60) printf("良\n"); else if(n >= 50) printf("可\n"); else printf("不可\n"); }
× if(a%2 = 0) 等
× if(60 <= n < 80) 等
どこが間違っているかわかりますか?
コンピュータは同じ処理を何度も繰り返し実行するのが得意です.今週から,繰り返しについて学習します.
たとえば,「1から100の和を求めるプログラムを作れ」という課題が与えられたら,どうやってプログラムを組むか考えてみよう.
sum = 1+2+3+4+...+100;
とすれば,とりあえず答えは出るものの,100が10000になったらプログラムを入力するのが大変なことになってしまう.
そこで,より一般的にnまでの和とするにはどうしたらよいだろう?
この計算を電卓でやる手順を書いてみよう.
最初に初期化を行って,後はデータ入力と前の値への加算を繰り返していることがわかる.
これを手順としてまとめると,
1 合計をもとめる変数を,クリヤーする
2 以下を100回繰り返す 2-1 データを入力する |
ここで,今どの計算を行っているのかを覚えておくために,カウンタという考え方を導入しよう.つまり,
1 合計をもとめる変数を,クリヤーする
2 繰り返しの回数(カウンタ)を,0にする 3 カウンタの値が100を超えるまで,以下を繰り返す 2-1 合計にカウンタの値を加算する |
処理を指定回数だけ繰り返す手順を表すには,for文を用います.
上記の手順で,合計をもとめる変数を sum,カウンタを i とすると,
#include <stdio.h> void main() { int i, sum; sum = 0; for(i=0; i<=100; i++){ sum += i; /* sum = sum + i; と同じ */ } printf("1から100までの合計は%dです", sum); }
となります.ここで,i++ は,i の値を 1 増やすことを表し,i = i + 1 と同じです.
一般に書き表すと,
for(式1;式2;式3) 文1
式1 | 初期値設定 | カウンタの初期値を設定する |
式2 | 反復条件 | 繰り返しを続ける条件を書く この条件式が真の間は繰り返す |
式3 | 付加実行式 | 繰り返しを行う都度に実行したいことを書く |
文1 | 実行文 | 繰り返し実行する文 |
1. 1からキーボードから入力した値までの和を求めるプログラム
2. 先週作成した成績判定プログラムは一度実行すると終了してしまう.for文を使って100点より大きい数字が入力されるまで,成績判定を繰り返す様プログラムを作成する