3.7 課題 3

cd c を実行した後で( ~/c に移動した後で)、以下の課題を やってみよ。

課題 3.1
もっとも簡単な if 文

以下のプログラムを実行してみよ。

/* kadai 3.1 */
#include <stdio.h>

main()
{
       int a;
       a = 3;
       if ( a > 0 ){
                printf("a > 0 \n");
       }
}

課題 3.2
偽の場合は

課題 3.1 のプログラムで、a = 3;a = -1 に変更して 実行してみよ。

課題 3.3
真偽それぞれについて実行されるようにしよう。

課題 3.2 のプログラムを改良し、a が正又は0の場合は、a >= 0 を 負の場合は、a < 0 を表示するように改良し、実行してみよ。 また、a に 10 を代入するように変更してみて実行してみよ。 それぞれ、きちんと表示されましたか?

課題 3.4
3つの場合分け

課題 3.3 のプログラムを改良し、a が、正か0か負のどれであるかを 表示するようにせよ。

課題 3.5
割り切れるや否や?

前回、整数同志の割り算の結果は整数であるので、小数以下は切り捨てられることを 学んだが、これを応用して割り算の余りを求め、割り切れるかどうか を調べるプログラムを作ってみよう。

例えば、整数 $7$ を整数 $3$ で割った場合、商が $2$ で、余りは $1$ となるが、 これは、次のように書ける。


\begin{displaymath}
{7 \over 3} = 2 + {1 \over 3}
\end{displaymath}

分母を払うと、

\begin{displaymath}
7 = {2 \times 3} +1
\end{displaymath}

従って、一般的には、 整数 a を整数 b で割った商が p で、余りが q であるとき、

\begin{displaymath}
{a \over b} = p + {q \over b}
\end{displaymath}

と書けるので、分母の b を払うと、

\begin{displaymath}
a = {p \times b} + q
\end{displaymath}

と変形できる。よって、余り $q$ は、

\begin{displaymath}
q = a - {p \times b}
\end{displaymath}

となる。 そこで、整数 $a, b$ が与えられていれば、$p$ を求めれば余りは求まる事になる。 前回学んだように、c 言語では、整数同志の割り算をすれば、必ず商が求まるので、 p = a / b; とすればよい。 結局、余りがあるかどうかを調べるには、

		p = a / b;
		q = a - p * b;

を計算し、$q$ が0か否かを調べれば良い。

以上のことを用いて、 余り q を求めて、0ならば、割り切れたことを、0でないならば、 余りを表示するプログラムを作成せよ。

但し、プログラムはなるべく一般的に作り、プログラムの最初の方で、整数 a,b に値を代入し、以降は変数 a, b を使うようにしなさい。(具体的な数値を 使って計算してはならない。)

整数 a, b に割り切れる場合、割り切れない場合の数を代入し、それぞれきちんと 表示されるか確かめてみなさい。

 

作成したプログラムをメイルで creport まで送ること。但し、題は、kadai03 と すること。 ( 2回目以降のメイルを出すときは、kadai03 retry のように、kadai03 の後ろに 空白を入れてメッセージを付け足すこと。 )

参考問題
時間が余った人はやってみよう。

課題 3.5 のプログラムで、a = b= の行を削除し、 以下の行を挿入せよ。

        printf("Input a = ");
        scanf("%d",&a);
        printf("\nInput b = ");
        scanf("%d",&b);
        printf("\n");
これを実行すると、まず、 Input a = と表示されるので、適当な値を キーボードから入力し ( 整数 ) 、リターンキーを押すと、 今度は、 Input b = と表示するので、先の値とは違う値を入れてみよ。

どうです? これは、何度でも値を変えて割り切れるかどうか調べることが出来るようになって いますね。 実は、scanf("%d",&a); は、整数をキーボードから読み取って、変数 a に 代入する命令なのです。 ( 今の所は、正式には講義してませんので、 そういうおまじないと思って構いません。 )



最初のページ 戻る 目次
Hiroyasu Asami