鱼C论坛

 找回密码
 立即注册
查看: 928|回复: 1

[技术交流] 电梯控制程序(有一些BUG,之后会修复)

[复制链接]
发表于 2020-4-9 22:31:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 NZND 于 2020-4-10 10:14 编辑

哎~怎么没有关于作品展示之类的分区呢?
直接上代码:(请不要嫌弃我的命名,本人不擅长起名)
(主文件:main.c)

#include <stdio.h>
#include <stdlib.h>
#include "except.h"
#include "constant.h"
#include "error.h"

struct Floor
{
        int now;
};
int main(void)
{
        char command;
        int sizeup = 0;
        int sizedown = 0;
        int *ptr = NULL; //存放申请的内存的地址
        int all = 1; //存放楼层总高度
        int see = 1; //存放建筑在地面上的高度
        int low = 0; //存放建筑在地下的层数
        struct Floor floor;

        int up(int now, int size, int see);
        int down(int now, int size, int low);

        printf("请输入楼层数(在地上的部分):");
        scanf("%d", &see); //让用户输入建筑在地上的部分
        getchar();

        printf("请输入位于地下的楼层数:(请不要输入负数,否则可能导致电脑崩溃!)");
        scanf("%d", &low);

        getchar();

        floor.now = 1; //初始化所在楼层位1楼

        ptr = (int*)malloc(sizeof(int) * (see + low)); //申请一块存放下这栋建筑的内存
        if (ptr == NULL)
        {
                printf("内存分配失败!T_T\n");
                exit(RAM_ERROR);
        }

        while (1)
        {
                printf("您现在所在的楼层是:%d楼(输入U使电梯向上,输入D使电梯下降,输入Q退出)", floor.now);
                scanf("%c", &command);
                getchar();

                switch (command)
                {
                case q:
                {
                        free(ptr);
                        exit(EXIT_EXCEPT);
                        return 0;
                }

                case Q:
                {
                        free(ptr);
                        exit(EXIT_EXCEPT);
                        return 0;
                }
                case u:
                {
                        sizeup = 0;
                        printf("请输入要上升的层数:");
                        scanf("%d", &sizeup);
                        getchar();
                        floor.now = up(floor.now, sizeup, see);
                        break;
                }
                case U:
                {
                        sizeup = 0;
                        printf("请输入要上升的层数:");
                        scanf("%d", &sizeup);
                        getchar();
                        floor.now = up(floor.now, sizeup, see);
                        break;
                }
                case D:
                {
                        sizedown = 0;
                        printf("请输入要下降的层数:");
                        scanf("%d", &sizedown);
                        getchar();
                        floor.now = down(floor.now, sizedown, low);
                        break;
                }
                case d:
                {
                        sizedown = 0;
                        printf("请输入要下降的层数:");
                        scanf("%d", &sizedown);
                        getchar();
                        floor.now = down(floor.now, sizedown, low);
                        break;
                }
                default:
                {
                        printf("未知的命令:%c\n", command);
                        break;
                }
                }
        }

        free(ptr);

        return 0;
}

/*---------------------------------------------------------------------------
  哈哈哈!编译器你看不到我!
  哈哈哈!
---------------------------------------------------------------------------*/

(依赖项:except.h)
#define EXIT_EXCEPT 0

(依赖项:error.h)
#define EOF_ERROR 584

#define RAM_ERROR 454151

#define FILE_OPEN_ERROR 256

#define RUNTIME_ERROR 99

#define LOW_ERROR -1

(依赖项:constant.h)
#define U 'U'

#define u 'u'

#define D 'D'

#define d 'd'

#define Q 'Q'

#define q 'q'

(依赖的源文件:function.c)
int up(int now, int size, int see);
int up(int now, int size, int see)
{
        int temp;
        temp = now + size;
        if (temp >= see)
        {
                return see;
        }
        else
        {
                return temp;
        }
}

int down(int now, int size, int low);
int down(int now, int size, int low)
{
        int temp;
        temp = now - size;
        if (low == 0)
        {
                return 1;
        }
        if (temp <= -low)
        {
                return -low;
        }
        else
        {
                if (temp == 0)
                {
                        temp = -1;
                        return temp;
                }
                else
                {
                        if (temp <= -1)
                        {
                                temp -= 1;
                                return temp;
                        }
                }
        }
}



                               
登录/注册后可看大图


请注意!本人亲测,程序在Windows无法运行!VS2019无法完成编译!请使用你的Linux虚拟机运行!,拷贝源代码至同样文件名的文件后,在此目录使用 gcc main.c function.c -lm -o 电梯.exe(用惯了Windows,老是喜欢文件有个拓展名~(-o选项可选,没写的话会生成一个a.out的可执行文件,使用./电梯.exe 或者 ./a.out(不写-o选项)来运行程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-10 09:35:24 | 显示全部楼层
也请大家积极指出BUG,本人会尽力修正!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 06:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表