以前のリビジョンの文書です


ex12-3.c

関数 cnt() は、int型のグローバル変数 count を用いて次のように定義されている。 また、stdlib.h で宣言されるC言語の標準ライブラリの関数 rand() は、返り値として 0〜RAND_MAX の範囲の整数値を疑似乱数として返す関数である。

関数 cnt() を(変更せずそのまま)利用し、整数 n の値を入力すると、n の値が(疑似乱数である)rand() の返り値以下の場合は cnt() を繰り返し呼び出すようなプログラム ex12-3.c を作成し、kiso2コマンドを用いて提出しなさい。 ただし、n が rand() の値を超えた場合は、グローバル変数 count の値を、cnt() 関数が呼び出された回数として出力してプログラムを終了するものとする。

cnt.c
void cnt(void) { count++; }

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex12$ ./ex12-3
n? 999999999
cnt() は 1 回呼び出されました。
t180900@s01cd0542-160:~/kiso2-2018/ex12$ ./ex12-3
n? 9999999
cnt() は 172 回呼び出されました。
t180900@s01cd0542-160:~/kiso2-2018/ex12$ ./ex12-3
n? 99999
cnt() は 19964 回呼び出されました。
t180900@s01cd0542-160:~/kiso2-2018/ex12$ ./ex12-3
n? 999
cnt() は 2088410 回呼び出されました。
t180900@s01cd0542-160:~/kiso2-2018/ex12$ ./ex12-3
n? 9
cnt() は 91538659 回呼び出されました。
rand() は擬似乱数を生成する関数であり、呼び出される度に異なる整数値を乱数として返します。したがって、上記の実行例と必ずしも同じ結果になるとは限りません。 ただし、実習室環境ではおそらく同じ回数が表示されていると思います。異なる乱数列を生成したい場合は、srand() 関数を利用します。
  • lecture/kiso2/ex/ex12-3.c.1569212674.txt.gz
  • 最終更新: 2019/09/23 13:24
  • by sano