zoukankan      html  css  js  c++  java
  • 【C语言程序设计试验与习题指导】试验十三 2

    自动寄存柜

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    struct boxs{
        int id;
        int passwd;
        int is_used;
    };
    
    void init_boxs(struct boxs *, int);
    int finding_available_boxes(struct boxs *, int);
    int get_coin_num(void);
    int create_rand_passwd(void);
    
    int main(void){
        struct boxs  c_box;
        int in_passwd, in_select, index, i, is_finded,BOX_NUM, is_over=0;
    
        srand((unsigned int)time(NULL));
        
        printf("寄存器总数:");
        scanf("%d", &BOX_NUM);
        struct boxs s_box[BOX_NUM];
        
        init_boxs(s_box, BOX_NUM);
        
        while (1) {
            if (is_over) {
                break;
            }
            printf("1. 投硬币  2.输密码  0.退出 请选择: ");
            scanf("%d", &in_select);
            switch (in_select) {
                case 1:
                    get_coin_num();
                    index = finding_available_boxes(s_box, BOX_NUM);
                    if (index != -1) {
    //                    printf("index = %d", index);
                        c_box.passwd = create_rand_passwd();
                        c_box.is_used = 1;
                        s_box[index] = c_box;
                        printf("寄存箱编号: %d 密码:%04d
    ", index+1, c_box.passwd);
                    }
                    else{
                        printf("对不起,暂无可用空箱子!");
                    }
                    break;
                case 2:
                    printf("请输入密码: ");
                    scanf("%d", &in_passwd);
                    is_finded = 0;
                    for (i = 0; i < BOX_NUM; i++) {
                        if (s_box[i].is_used == 1 && s_box[i].passwd == in_passwd) {
                            printf("%d号箱已打开
    ", i+1);
                            s_box[i].is_used = 0;
                            is_finded = 1;
                            break;
                        }
                    }
                    if (!is_finded) {
                        printf("密码错误.
    ");
                    }
                    break;
                case 0:
                    printf("结束
    ");
                    is_over = 1;
                    break;
                }
        }
        
        return 0;
    }
    
    /* 初始化所有的箱子数据 */
    void init_boxs(struct boxs *s_box, int BOX_NUM){
        int i;
        for (i = 0; i < BOX_NUM; i++) {
            (*s_box).id = i + 1;
            (*s_box).is_used = 0;
            s_box++;
        }
    }
    
    /* 查询可用的空箱子 */
    int finding_available_boxes(struct boxs *s_box, int BOX_NUM){
        int i, index = -1;
        for (i = 0; i < BOX_NUM; i++) {
            if ((*s_box).is_used == 0) {
                index = i;
                break;
            }
            s_box++;
        }
        return index;
    }
    
    /* 获取投币数 */
    int get_coin_num(void){
        int r_num;
        while (1) {
            printf("投币值: ");
            scanf("%d", &r_num);
            if (r_num == 1) {
                return r_num;
            }else{
                continue;
            }
        }
        return r_num;
    }
    
    /* 创建随机密码 */
    int create_rand_passwd(void){
        int r_num = (rand()%10) * 1000 + (rand()%10) * 100 + (rand()%10) * 10 + rand()%10;
    //    printf("%d
    ", r_num);
        return r_num;
    }
  • 相关阅读:
    Python数据类型文件
    Python应用程序之画图本
    opengl 学习笔记1
    圆柱面的法向量
    opengl笔记2(二次曲面的纹理映射)
    正则表达式(一)
    cocos2d的配置
    ogre配置方法
    elipse常用快捷键
    正则表达式(二)
  • 原文地址:https://www.cnblogs.com/sidianok/p/15377111.html
Copyright © 2011-2022 走看看