服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 用C语言实现自动售货机

用C语言实现自动售货机

2022-09-02 13:22ran_梦 C/C++

这篇文章主要为大家详细介绍了用C语言实现自动售货机,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

自动售货机

如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号,分别为1-10。同时标有价格与名称,- 一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品.用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。

用C语言实现自动售货机

用户购买方法:

(1)放入钱币,用户可以以此放入多个纸币,面额可以是1元、2元、>5元、10元。售货机会统计总金额并显示。
(2)依次输入要购买的产品,可购买多个产品,售货机自动判断余额,若余额不足,则找零后退出程序。
若需自主退出需按退出按钮,程序中用输入“-1表示”。
售货机本着人性化原则,绝不会私吞用户钱,也不会白送给用户商
品。

因此在选择货物号时,要注意以下几个点:

1.若什么都不买,用户投入的钱全部将退回;
2.若购买商品后还有余额,但用户自主退出程序,退回余额;
3.若用户购买货物时余额不足,将停止购买此商品,退回余额
代码如下:
4.钱正好花光,没有余额,结束程序。

?
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<stdio.h>
#define N 10
int sum=0;
int sum1;
typedef struct sell{
    int num;
    char name[20];
    int price;
}sell;
 
void main()
{
    int i,c,s;
    int s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0;//记录商品购买数量
    sell se[N]={{1,"Table-water",1},{2,"Table-water",1},{3,"Table-water",1},{4,"Coca-Cola",2},{5,"Milk",2},
    {6,"Beer",3},{7,"Orange-Juice",3},{8,"Sprite",3},{9,"Oolong-Tea",4},{10,"Green-Tea",4}};  //售货机装入商品
    do {
        printf("Please put in coins:");
        scanf("%d",&c);  //投币
        if(c==1||c==2||c==5||c==10)
            sum=sum+c;
        else if(c==-1) break;
        else
            printf("error!\n");
    }
    while(c!=-1);
    printf("Total:%d yuan\n",sum);
    
    
    printf("Please select the goods serial number:");
    scanf("%d",&s);  //选择商品号
    se[-2].price =0;
    sum1=sum-se[s-1].price ;  //第一个选的商品超过投币数
    if(sum1<0||s==-1) printf("Not enough money!\n");
    else        sum=sum1;
    
    while(sum>=0&&s!=-1)    //什么都没买或者钱够但是不想买了
    {
        
        if(sum>=0){              //钱花光了
            for(i=0;i<3;i++)
                if(s==se[i].num )
                    s1++;
                for(i=3;i<N;i++)
                {
                    if(s==se[i].num &&i==3) {s2++;break;}
                    else if(s==se[i].num &&i==4) {s3++;break;}
                    else if(s==se[i].num &&i==5) {s4++;break;}
                    else if(s==se[i].num &&i==6) {s5++;break;}
                    else if(s==se[i].num &&i==7) {s6++;break;}
                    else if(s==se[i].num &&i==8) {s7++;break;}
                    else if(s==se[i].num &&i==9) {s8++;break;}
                    
                    
                }
                printf("There is still %d yuan left\n",sum );
                
                printf("Please select the goods serial number:");
                scanf("%d",&s);
                sum1=sum-se[s-1].price ;   //最后一个商品钱不够
                if(sum1<0||s==-1) {printf("Not enough money!\n");break;}
                sum=sum1;
                
        }
        else printf("Not enough money!\n");
        
    }
    /*输出已购买商品名及数量*/
    if(s1!=0)    printf("%s:%d\n",se[0].name ,s1);
    if(s2!=0)    printf("%s:%d\n",se[3].name ,s2);
    if(s3!=0)    printf("%s:%d\n",se[4].name ,s3);
    if(s4!=0)    printf("%s:%d\n",se[5].name ,s4);
    if(s5!=0)    printf("%s:%d\n",se[6].name ,s5);
    if(s6!=0)    printf("%s:%d\n",se[7].name ,s6);
    if(s7!=0)    printf("%s:%d\n",se[8].name ,s7);
    if(s8!=0)    printf("%s:%d\n",se[9].name ,s8);
    if(sum>=0)    printf("change:%d yuan\n",sum);//输出余额
    
}

运行结果:

用C语言实现自动售货机

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/weixin_44868393/article/details/105919883

延伸 · 阅读

精彩推荐
  • C/C++VSCode搭建C/C++编译环境的详细教程

    VSCode搭建C/C++编译环境的详细教程

    Visual Studio Code是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、...

    Invincible_00810882021-09-06
  • C/C++C++中Boost.Chrono时间库的使用方法

    C++中Boost.Chrono时间库的使用方法

    chrono是一个time library, 源于boost,现在已经是C++11标准了,下面这篇文章主要给大家介绍了关于C++中Boost.Chrono时间库的使用方法,文中通过示例代码介绍的非常...

    taozj6642021-05-31
  • C/C++c++ 探讨奶牛生子的问题

    c++ 探讨奶牛生子的问题

    一只刚出生的奶牛,第4年开始生一只奶牛(假设只生母牛),以后每年生一只。现在给你一只刚出生的奶牛,求20年后有多少奶牛...

    C++教程网2122020-12-12
  • C/C++深入解析最长公共子串

    深入解析最长公共子串

    本篇文章是对最长公共子串进行了详细的分析介绍,需要的朋友参考下...

    C++教程网2492020-12-04
  • C/C++新手socket编程入门详解指南

    新手socket编程入门详解指南

    本文,将一步一步引导初学者来学习socket,所有编程思路都结合在socket API里面,以及提供socket的疑问和基础知识点,同时在最后给出多个例程,下面可以和...

    Hosea1411252021-07-29
  • C/C++C++ 读写文件安全又简洁的简单实例

    C++ 读写文件安全又简洁的简单实例

    这篇文章主要介绍了C++ 读写文件安全又简洁的简单实例的相关资料,需要的朋友可以参考下...

    stephen_yin7292021-05-17
  • C/C++C++11新特性std::make_tuple的使用

    C++11新特性std::make_tuple的使用

    这篇文章主要介绍了C++11新特性std::make_tuple的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    半杯茶的小酒杯10532021-09-28
  • C/C++C语言 深入解读数据结构之堆的实现

    C语言 深入解读数据结构之堆的实现

    堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置...

    loveandsharef3602022-02-21