next up previous contents
Next: 6. 制御構造と論理演算 Up: 5. 入力の読み込みと制御構造 Previous: 3. 効率のよいプログラム開発

4. 課題5

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

課題 5.1
入力が間違っていた場合

本文の例4をプログラムとして完成させ、kadai5_1 という実行ファイル名 で、色々入力を変えて実行してみよ。特に、誤った入力をした場合、 期待したとおり、入力が誤っているというメッセージが出ることを確認 せよ。

課題 5.2
商と余りを表示するコマンドを作る

課題 3.5 を用いて、キーボードから2数を読み込み、割算の式を表示 するプログラムを作成せよ。 (課題3の参考問題も参考にせよ。) 実行プログラム名は、kadai5_2 とせよ。

課題 5.3
クイズ

選択が4つ以上あるクイズを考え、答えの番号を入力させるプログラムを 作成せよ。また、正しければ正解である事を表示して終了し、 間違っていれば誤答である事を表示し、正解が入力されるまで終了しない事。

問題 C 言語では、真であるというのは次のどの数であらわされるか? 次の4つの中から正解と思われるものを選び、その番号を入力せよ。

(1)
2
(2)
0
(3)
1
(4)
-1

課題 5.4
親切なプログラム

課題 4.5 を改造し、最初に購入したい車の値段、1ヶ月の返済金額の上限、 年利(年利は%で入力するものとする)をキーボードから 入力するようにせよ。値段、返済金額、年利に間違って文字等を入力 した場合に、正しい数値が入力されるまで繰り返し再入力をうながすプ ログラムにせよ(例6を参考にせよ)。 実行プログラム名は、carloan とすること。

[参考] 入力された年利(%)が nenri という変数に入っていて、 車の値段が car という変数に入っている場合、1年の金利がついた後の車の値段は 次のようにして求める事が出来る。

car = car * (1 + nenri/100.0);

 

作成したプログラムをメイルで、creport まで送ること。但し、題は kadai05 と すること。

前回の復習
  1. 整数変数の標準入力からの読み込み
    標準入力(ユーザーがリダイレクトしなければ、キーボード)からの読み込み には、scanf を用い、その書式は次の通りである。

    書式    scanf("%d", &整数変数)

    
            例
                    int a;
                    scanf("%d", &a);
            
    例では、整数変数 a に標準入力から一個の整数を読み込む。

  2. scanf のエラー処理
    scanf は、期待した形式(上の場合は整数)以外のものが入力された場合、 0 を返す。入力が正常に行われた場合は、読み込んだ個数(上の場合は1個) を返す。従って、次の例の様に scanf の返り値を元に入力を検査できる。
    
                    int a;
                    if (scanf("%d",&a)!=1){
                            printf("Error!\n");
                    }else{
                            printf("正常入力\n");
                    }
    

  3. scanf での読みとりエラーと標準入力
    scanf は入力エラーの場合は、標準入力にそのデータを返却する。 入力にデータを返すというと奇異に感じるが、実は、入力データは 一旦システムのある場所に貯められているので、その貯蔵庫に返却 するという意味である。従って、一旦入力エラーとなったデータを 捨てないと次のデータを読むことは出来ない。 そのために、scanf("%s",buf) を用いる。

  4. 実行プログラムの名前を付ける
    a.out 以外の名前を実行プログラムにつけるには、コンパイル時に以下の ようにすれば良い。
    
                    $ cc   -o    実行ファイル名  ソースファイル名
            例
                    $ cc  -o  test  test.c
    



Noriyo Kanayama