[更新日]1998.11.06


次の問7から問10までの4問については,この中から1問を選択し,
答案用紙の選択欄のを マークして解答してください。
 なお,2問以上選択した場合には,はじめの1問について採点します。

問7 次のCプログラムの説明及びプログラムを読んで、設問に答えよ。

〔プログラムの説明〕

自動販売機に投入された金額と商品の価格の差額から,釣銭として返却する各貨幣の枚数を計算するプログラムである。

(1) 商品の価格は,引数 price に格納されている。
 なお,商品の価格には,10 円未満の端数はない。

(2) 投入された各貨幣の枚数は,配列 input に格納されている。
 なお,投入された金額が,商品の価格を下回ることはない。

input[0]

1000円貨幣の枚数

[1]

500円貨幣の枚数

[2]

100円貨幣の枚数

[3]

50円貨幣の枚数

[4]

10円貨幣の枚数

(3) 釣銭として返却する各貨幣の枚数を,配列 output に格納する。このとき,返却する貨幣の合計枚数をできるだけ少なくする。

output[0]

1000円貨幣の枚数

[1]

500円貨幣の枚数

[2]

100円貨幣の枚数

[3]

50円貨幣の枚数

[4]

10円貨幣の枚数

(4) 自動販売機が保持している釣銭用の貨幣の枚数は,貨幣の種類別に,大域変数である配列 stock に格納される。stock[0] の初期値は 0,それ以外の stock の要素の初期値は 10 とする。

stock[0]

1000円貨幣の枚数

[1]

500円貨幣の枚数

[2]

100円貨幣の枚数

[3]

50円貨幣の枚数

[4]

10円貨幣の枚数

(5) 投入された貨幣は,次回以降の釣銭として用いるために,配列 stock に加える。

(6) 戻り値として次の値を返す。

−1:釣銭切れの場合

 0:釣銭不要の場合

 1:釣銭を返却する場合

(7) 釣銭切れの場合,投入された各貨幣の枚数を配列 output に格納する。

〔プログラム〕

#define TBLSIZE 5
static int money[] = {1000, 500, 100, 50, 10},
           stock[] = {0, 10, 10, 10, 10};
int VendingMachine(int price, int input[], int output[])
{
    int change, k, paid, retval;
    paid = 0;
    for(k = 0; k < TBLSIZE; k++) {
        paid += input[k] * money[k];
    }
    change = paid - price;
    if (change != 0) {
        for() {
            output[k] = ;
            if (output[k] > stock[k])
                output[k] = stock[k];
            change -= output[k] * money[k];
        }
        if () {
            for(k = 0; k < TBLSIZE; k++)
                output[k] = input[k];
            retval = -1;
        } else {
            for(k = 0; k < TBLSIZE; k++)
                stock[k] = ;
            retval = 1;
        }
    } else {
        for(k = 0; k < TBLSIZE; k++) {
            output[k] = 0;
            stock[k] += input[k];
        }
        retval = 0;
    }
    return retval;
}

設問 プログラム中の に入れる正しい答えを,解答群の中から選べ。

a に関する解答群

ア k = 0; k < TBLSIZE; k++     イ k = 1; k <= TBLSIZE; k++

ウ k = TBLSIZE - 1; k >= 0; k--   エ k = TBLSIZE; k > 0; k--

b に関する解答群

ア change       イ change / input[k]

ウ change / money[k]  エ change / stock[k]

オ input[k]      カ money[k]

キ stock[k]

c に関する解答群

ア change < 0     イ change <= 0

ウ change == 0     エ change >= 0

オ change > 0

d に関する解答群

ア stock[k] + input[k]

イ stock[k] + output[k]

ウ stock[k] - input[k]

エ stock[k] - output[k]

オ stock[k] + input[k] + output[k]

カ stock[k] + input[k] - output[k]

キ stock[k] - input[k] + output[k]

ク stock[k] - input[k] - output[k]


戻る 次頁:問08