* 第2回 復習課題その1 [#p945649c]

** 基本課題(a1〜a5) [#t987342b]

*** 表示と演算 [#zcd520eb]

>関連項目: printf, scanf, 変数の型, 演算子

''a1)'' 標準出力(画面)に,自分の好きなことわざを''2行に分けて''表示するプログラムを作成しなさい。

''a2)''★ 単価がx円の鉛筆をy本買った。z円札を出したときのお釣りを表示するプログラムを作成しなさい。x, y, zの値はキーボードから入力すること。

>【ポイント】 変数名や関数名(「識別子」という)は,1文字とは限らない。1文字目には英文字,2文字目以降には英数字が使える。
 pi, kingaku, y2003, ...

*** 条件分岐 [#mfd764a5]

>関連項目: if, else

''a3)'' キーボードから整数をひとつ読み込んで,それが偶数か奇数かを判定し出力するプログラムを作成しなさい。

>【ポイント】 変数に値を入れる代入(=)と,等しいことを判定する等号(==)は異なる。C言語の基本中の基本だが,慣れてきてもうっかり間違えやすいところ。
 a = 10;
 if (a == 10) { …

''a4)''★ キーボードから整数を読み込み,それが3の倍数だった場合には「3」,それ以外で偶数だった場合には「2」,どちらにもあてはまらない場合には「X」,と表示するプログラムを作成しなさい。

>【ポイント】 elseの後には,ifを続けて書ける。
 if (...) {
     ...
 } else if (...) {
     ...
 } else if (...) {
     ...
 } else {
     ...
 }

''a5)''★ 整数a, b, cを読み込み,それらを3辺の長さとする三角形が,正三角形であるか,二等辺三角形であるか,どちらでもないか判定するプログラムを作成しなさい。

>【ポイント】 1つのif文の中で複数の条件式を組み合わせるには論理演算子(「&&」と「||」)を用いる。論理AND演算「A && B」はAとBの両方の条件式が真ならば真となる(「A and B」「A かつ B」)。論理OR演算「A || B」はAとBのどちらか一方でも条件式が真ならば真になる(「A or B」「A または B」)。
 if (a == 0 && b == 0) {
     /* a と b が,両方とも 0 ならば実行する文 */
 }
>
 if (a == 0 || b == 0) {
     /* a と b のどちらか(または両方)が 0 ならば実行する文 */
 }

>【ポイント】 3つの値を比較する条件式は,
 if (a < b < c) { …    /* 誤り!! */
 if (a == b == c) { …  /* 誤り!! */
のようには続けて書けない。かわりに,
 if (a < b && b < c) { …
 if (a == b && b == c) { …
のように,論理演算子&&(〜かつ〜)を利用する。

** 基本課題(b1〜b5) [#t987342b]

*** 繰り返し(ループ) [#kea7b696]

>関連項目: for, while, break

''b1)'' 「0, 2, 4, 6, 8...」というように、0以上100未満の偶数を、小さい順(昇順)順に画面に表示するプログラムを作成しなさい。

>【ポイント】 forループは次のように表されるが,
 for (開始処理; 継続条件; 更新処理) {
     繰り返し処理
 }
これは,次のwhileループとほぼ同じ意味である(break, continueを使うときだけ意味が違う)。
 開始処理
 while (継続条件) {
     繰り返し処理
     更新処理
 }
たとえば,更新処理にはi++のような式を書くと決まっているわけではなく,どんな式でも書くことができる。

''b2)''★ 10個の整数をキーボードから読み込み,奇数と偶数の個数を数えて出力するプログラムを作成しなさい。(繰り返しを使うこと。配列は使わないこと)

''b3)'' 2つの整数aとbを読み込み,a以上b以下の整数を''大きい順(降順)''に画面に表示するプログラムをforを用いて作成しなさい。もし,aがbより大きかったら,まずaとbを交換してから処理しなさい。

''b4)''★ キーボードから自然数を順次読み込み,0を読み込んだら,それまでの最大値を表示して終了するプログラムを作成しなさい。

>【ポイント】 while (1) や for (;;) という書き方で「終わらないループ」を作ることができる。このようループを''無限ループ''という。ただし,本当に終わらないループを書いてはいけない。何かの条件でループを抜けるように,break 文を記述しなければならない。
 while (1) {
     /* このままだと永久に実行し続ける */
     ...
     if (終了条件) break; /* ここで終わる */
     ...
 }

''b5)''★ 掛け算の九九の表を出力するプログラムを作成しなさい。余裕のあるひとは左下または右上半分だけ出力するプログラムを作成しなさい。以下に例を示す。(2重ループを使うこと。配列は使わないほうがよい)
|~\|~1|~2|~3|~4|~5|~6|~7|~8|~9|
|~1|1|||||||||
|~2|2|4||||||||
|~3|3|6|9|||||||
|~4|4|8|12|16||||||
|~5|5|10|15|20|25|||||
|~6|6|12|18|24|30|36||||
|~7|7|14|21|28|35|42|49|||
|~8|8|16|24|32|40|48|56|64||
|~9|9|18|27|36|45|54|63|72|81|

>【ポイント】 ループの中にループを書くことを2重ループ(多重ループ)という。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS