Categories: C/C++ | Tags: | Views: 391

 

在德国的一个朋友给我发的一些题, 他是学机械的,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
物品金额已付清

 我写的参考代码:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#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");    
}

 

 

这篇文章来自 迷途知返(PWWANG.COM), 转载请注明出处。 版权说明

RELATED POSTS:

  1. 国外的C语言考题-滚梯
  2. 国外的C语言考题-“21减”游戏
  3. 国外的C语言考题-二项式系数
  4. 一种对带参数选项的参数的读取方法[C++]
  5. Jacobi法求特征值和特征向量[C++]
  6. 常用的C++字符串操作函数
No comments yet.
;) :| :x :twisted: :roll: :oops: :o :mrgreen: :lol: :idea: :evil: :cry: :arrow: :P :D :?: :? :) :( :!: 8O 8)

你可以使用@somebody:开头, 来邮件通知somebody你回复了他的留言(用户名区分大小写).