題目
如圖所示的簡(jiǎn)易自動(dòng)售貨機(jī)蝇率,物品架1依许、2上共有10樣商品棺禾,按順序進(jìn)行編號(hào)分別為1-10,標(biāo)有價(jià)格與名稱峭跳,一個(gè)編號(hào)對(duì)應(yīng)一個(gè)可操作按鈕膘婶,供選擇商品使用。如果物架上的商品被用戶買走蛀醉,儲(chǔ)物柜中會(huì)自動(dòng)取出商品送到物架上竣付,保證物品架上一定會(huì)有商品。用戶可以一次投入較多錢幣滞欠,并可以選擇多樣商品古胆,售貨機(jī)可以一次性將商品輸出并找零錢。
用戶購買商品的操作方法是:
(1)從“錢幣入口”放入錢幣筛璧,依次放入多個(gè)硬幣或紙幣逸绎。錢幣可支持1元(紙幣、硬幣)夭谤、2元(紙幣)棺牧、5元(紙幣)、10元(紙幣)朗儒,放入錢幣時(shí)颊乘,控制器會(huì)先對(duì)錢幣進(jìn)行檢驗(yàn)識(shí)別出幣值,并統(tǒng)計(jì)幣值總額醉锄,顯示在控制器顯示屏中乏悄,提示用戶確認(rèn)錢幣放入完畢;
(2)用戶確認(rèn)錢幣放入完畢恳不,便可選擇商品檩小,只要用手指按對(duì)應(yīng)商品外面的編號(hào)按鈕即可。每選中一樣商品烟勋,售貨機(jī)控制器會(huì)判斷錢幣是否足夠購買规求,如果錢幣足夠,自動(dòng)根據(jù)編號(hào)將物品進(jìn)行計(jì)數(shù)和計(jì)算所需錢幣值卵惦,并提示余額阻肿。如果錢幣不足,控制器則提示“Insufficient money”沮尿。用戶可以取消購買丛塌,將會(huì)把所有放入錢幣退回給用戶。
輸入格式:
先輸入錢幣值序列,以-1作為結(jié)束姨伤,再依次輸入多個(gè)購買商品編號(hào)哨坪,以-1結(jié)束。
輸出格式:
輸出錢幣總額與找回零錢乍楚,以及所購買商品名稱及數(shù)量当编。
輸入樣例:
1 1 2 2 5 5 10 10 -1
1 2 3 5 1 6 9 10 -1
輸出樣例:
Total:36yuan,change:19yuan
Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;
代碼
#include<stdio.h>
int main()
{
char name[10][100] = { {"Table-water"},{"Table-water"},{"Table-water"},{"Coco-Cola"} ,{"Milk"},{"Beer"},{"Orange-Juice"},{"Sprite"},{"Oolong-Tea"},{"Green-Tea"} };
int price[10] = { 1,1,1,2,2,3,3,3,4,4 };
int money[11];
int Serial_number[11];//貨物序號(hào)。
int money_sum = 0;//實(shí)付徒溪。
int price_sum = 0;//應(yīng)付忿偷。
int balance = 0;//找零。
int Species_quantity[11] = { 0 };//每種商品購買的數(shù)量臊泌。
int * p, * q;
for (int i = 0; i < 11; i++)
{
scanf_s("%d", &money[i]);
if (money[i] == -1)
break;//結(jié)束標(biāo)志鲤桥。
else if (money[i] == 1 || money[i] == 2 || money[i] == 5 || money[i] == 10)//滿足面額計(jì)入總金額。
{
money_sum += money[i];//實(shí)付金額渠概。
}
else
continue;//不滿足面額進(jìn)行下一次循環(huán)判定茶凳。
}
p = money;
q = price;
for (int i = 0; i < 11; i++)
{
scanf_s("%d", &Serial_number[i]);
if (Serial_number[i] != -1)
{
if (money[i] == 1 || money[i] == 2 || money[i] == 5 || money[i] == 10)//該商品所對(duì)應(yīng)的貨幣面額是否正確。
{
if (*(p + i) - *(q + Serial_number[i] - 1) < 0)//貨幣不足播揪。
{
printf("Insufficient money");
return 0;
}
else
{
price_sum += *(q + Serial_number[i] - 1);//應(yīng)付金額贮喧。
Species_quantity[Serial_number[i] - 1]++;//所購貨物數(shù)量。
}
}
else
continue;
}
else
break;//結(jié)束標(biāo)志猪狈。
}
balance = money_sum - price_sum;//找零箱沦。
printf("Total:%dyuan,change:%dyuan\n", money_sum, balance);
for (int i = 0; i < 11; i++)
{
if (Species_quantity[i] != 0)
{
printf("%s:%d;", name[i], Species_quantity[i]);
}
else
continue;
}
return 0;
}