聲明:著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
附上c++版http://t.csdnimg.cn/BbDSL
https://blog.csdn.net/As_sBomb/article/details/105485940
實驗三:自動售貨機
題目:
圖所示為簡易自動售貨機,物品架1、2上共有10樣商品,按順序進行編號分別為1~10,標有價格與名稱,如下圖:
1.售貨機物品架上共有10樣商品依次編號1-10,標有名稱與價格。
2.售貨機接受1/2/5/10面值的硬/紙幣,用戶可以一次性投入多個硬幣并選擇多種商品,售貨機將一次性將商品輸出并找零。
3.投入錢幣和選擇商品皆以-1作為結束,若輸入商品編號超出范圍或余額不足將自動結束購物,輸出購買商品,錢幣總額和找零。
輸入不需要空格,10請輸入’0’,-1請輸入’-’
輸入輸出示例:
輸入:
1 1 2 2 5 5 10 10 -1 /錢幣序列/
1 2 3 5 1 6 9 10 -1 /商品編號/
輸出:
Total:36yuan, change:19 yuan
Table-water1:2
Table-water2:1
Table-water3:1
Milk:1
Beer:1
Oolong-Tea:1
Green-Tea:1
#include "stdio.h" #include "stdlib.h"
int main()
{ printf(" 程序設計與實踐 實驗(三) 自動售貨機\n");printf("\n");printf(" 自動售貨機簡介\n"); printf(" ============================= \n");printf("\n 1.售貨機物品架上共有10樣商品依次編號1~10,標有名稱與價格。\n");printf(" 2.售貨機可以一次性投入多個硬幣并選擇多種商品,售貨機將一次性將商品輸出并找零。\n");printf(" 3.用戶輸入錢錢幣值序列,錢幣值序列——對應商品序列號,分別以-1作為結束\n");printf("\n");printf("1.---Table.water-----1元\n");printf("2.---Table.water-----1元\n");printf("3.---Table.water-----1元\n");printf("4.----Coca.Cola------2元\n");printf("5.------Milk---------2元\n");printf("6.------Beer---------3元\n");printf("7.---Orange.Juice----3元\n");printf("8.-----Sprite--------3元\n");printf("9.----Ooiong.Tea-----4元\n");printf("10.----Green.Tea-----4元\n");printf("\n"); char *productname[10]={"Table-water", "Table-water", "Table-water", "Coca-Cola",
"Milk","Beer", "Orange-Juice", "Sprite", "Oolong-Tea", "Green-Tea"};/*定義指針數組,其中每個元數都是
一個字符指針,分別指向各商品名稱*/ int price[2][10]={{1,1,1,2,2,3,3,3,4,4},{}}; /*各商品對應的價格*/ //static int countp[10]; //采用二維數組,這行沒用了 int income,outcome,change,i,x;// *p=price,income=outcome=change=i=x=0;/*錢幣序列求和*/ printf("Please enter a coin sequence:");do{scanf("%d",&x);if(x>0)income+=x;} while(x!=-1);//輸入商品序列號printf("Please enter a goods sequence:");do{scanf("%d",&x);if(x>10) {printf("編號超出范圍,結束購物。");printf("\nTotal:%dyuan,\nchange:%dyuan\n",income,income);exit(0);}if(x>0){price[1][x-1]++;}}while(x!=-1);//計算商品金額
for(i=0;i<10;i++) {
outcome+=price[0][i]*price[1][i];if(outcome>income){ printf("余額不足,結束購物。");printf("\nTotal:%dyuan,\nchange:%dyuan\n",income,income);exit(0); }
}
/*輸出總金額,應找回的金額*/
change= income-outcome;
printf("\nTotal:%dyuan,\nchange:%dyuan\n",income,change);
//輸出找零序列
printf("Your change sequence:");
while(change!=0){if (change>10){printf("10 ");change-=10;continue;}else if (change>=5 && change<10){printf("5 ");change-=5;continue;}else if (change>=2 && change<5){printf("2 ");change-=2;continue;}else {printf("1");change-=1;}
}
printf("\n");
/*輸出物品名稱與數量*/ for(i=0;i<10;i++) { if(price[1][i]>0) printf("%s:%d \n",productname[i],price[1][i]);}
}