|
Nov
09
|
|
在德国的一个朋友给我发的一些题, 他是学机械的,C语言只是他们的公共基础课。
看看人家的要求吧。不能调试,程序运行必须通过。
写一个模拟自动售货机的程序。首先通过价格选择一件物品并且投币付款。在售货机可以接收的只有5,20 和100 Cent 的硬币。错误的硬币被自动售货机识别,但是不改变将要支付的货品价格。投掷硬币,直到投币付清货品价格或是投多了。要付的金额,错误硬币的输入和多余的钱分别通过您的程序被输出。
重要提示:
请您使用子函数 int eingabe ();在您的程序中既要确定物品的价格,又要确定要投掷的硬币。子函数本身不包含 printf – 指令,并且只返回使用者的输入。
举例:(使用的输入用粗体字表示)
请给出物品的价格:211
您还有211 从 211 Cent中支付。请您投一个硬币:100
您还有111 从 211 Cent中支付。请您投一个硬币:100
您还有11 从 211 Cent中支付。请您投一个硬币:20
物品金额已付清 – 谢谢您 9 Cent 找零的捐赠!
请给出物品的价格:25
您还有25 从 25 Cent中支付。请您投一个硬币:27
错误的硬币。您还有25 从 25 Cent中支付。请您投一个硬币:5
您还有20 从 25 Cent中支付。请您投一个硬币:20
物品金额已付清
我写的参考代码:
#include<stdio.h> int eingabe(){ //返回输入的值 int input; scanf("%d", &input); return input; } int main(){ printf("请给出物品的价格:"); int totalPrice = eingabe(); // 总价格 int leftPrice = totalPrice; // 记录支付后剩余的价格 int coin; // 记录投入的硬币 do{ printf("您还有 %d 从 %d Cent 中支付. 请您投一个硬币:", leftPrice, totalPrice); coin = eingabe(); if( coin==5 || coin==20 || coin==100 ){ //如果不是错误的硬币 leftPrice -= coin; } else { printf("错误的硬币.您还有 %d 从 %d Cent 中支付. 请您投一个硬币:", leftPrice, totalPrice); } }while(leftPrice > 0); //如果价格已经付清了=0, 并可能 有结余<0, 就结束循环 printf("物品金额已付清"); if(leftPrice < 0) { //如果多付了钱, 剩余的钱就变成了负数 printf(" - 谢谢您 %d Cent 找零的捐赠!",-leftPrice); } printf("\n"); system("pause"); }
From 迷途知返, post 国外的C语言考题-自动售货机
RELATED POSTS:
Leave a comment
| Trackback

