鱼C论坛

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

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

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

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

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

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

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


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "except.h"
  4. #include "constant.h"
  5. #include "error.h"

  6. struct Floor
  7. {
  8.         int now;
  9. };
  10. int main(void)
  11. {
  12.         char command;
  13.         int sizeup = 0;
  14.         int sizedown = 0;
  15.         int *ptr = NULL; //存放申请的内存的地址
  16.         int all = 1; //存放楼层总高度
  17.         int see = 1; //存放建筑在地面上的高度
  18.         int low = 0; //存放建筑在地下的层数
  19.         struct Floor floor;

  20.         int up(int now, int size, int see);
  21.         int down(int now, int size, int low);

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

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

  27.         getchar();

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

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

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

  40.                 switch (command)
  41.                 {
  42.                 case q:
  43.                 {
  44.                         free(ptr);
  45.                         exit(EXIT_EXCEPT);
  46.                         return 0;
  47.                 }

  48.                 case Q:
  49.                 {
  50.                         free(ptr);
  51.                         exit(EXIT_EXCEPT);
  52.                         return 0;
  53.                 }
  54.                 case u:
  55.                 {
  56.                         sizeup = 0;
  57.                         printf("请输入要上升的层数:");
  58.                         scanf("%d", &sizeup);
  59.                         getchar();
  60.                         floor.now = up(floor.now, sizeup, see);
  61.                         break;
  62.                 }
  63.                 case U:
  64.                 {
  65.                         sizeup = 0;
  66.                         printf("请输入要上升的层数:");
  67.                         scanf("%d", &sizeup);
  68.                         getchar();
  69.                         floor.now = up(floor.now, sizeup, see);
  70.                         break;
  71.                 }
  72.                 case D:
  73.                 {
  74.                         sizedown = 0;
  75.                         printf("请输入要下降的层数:");
  76.                         scanf("%d", &sizedown);
  77.                         getchar();
  78.                         floor.now = down(floor.now, sizedown, low);
  79.                         break;
  80.                 }
  81.                 case d:
  82.                 {
  83.                         sizedown = 0;
  84.                         printf("请输入要下降的层数:");
  85.                         scanf("%d", &sizedown);
  86.                         getchar();
  87.                         floor.now = down(floor.now, sizedown, low);
  88.                         break;
  89.                 }
  90.                 default:
  91.                 {
  92.                         printf("未知的命令:%c\n", command);
  93.                         break;
  94.                 }
  95.                 }
  96.         }

  97.         free(ptr);

  98.         return 0;
  99. }

  100. /*---------------------------------------------------------------------------
  101.   哈哈哈!编译器你看不到我!
  102.   哈哈哈!
  103. ---------------------------------------------------------------------------*/
复制代码


(依赖项:except.h)

  1. #define EXIT_EXCEPT 0
复制代码


(依赖项:error.h)

  1. #define EOF_ERROR 584

  2. #define RAM_ERROR 454151

  3. #define FILE_OPEN_ERROR 256

  4. #define RUNTIME_ERROR 99

  5. #define LOW_ERROR -1
复制代码


(依赖项:constant.h)

  1. #define U 'U'

  2. #define u 'u'

  3. #define D 'D'

  4. #define d 'd'

  5. #define Q 'Q'

  6. #define q 'q'
复制代码


(依赖的源文件:function.c)

  1. int up(int now, int size, int see);
  2. int up(int now, int size, int see)
  3. {
  4.         int temp;
  5.         temp = now + size;
  6.         if (temp >= see)
  7.         {
  8.                 return see;
  9.         }
  10.         else
  11.         {
  12.                 return temp;
  13.         }
  14. }

  15. int down(int now, int size, int low);
  16. int down(int now, int size, int low)
  17. {
  18.         int temp;
  19.         temp = now - size;
  20.         if (low == 0)
  21.         {
  22.                 return 1;
  23.         }
  24.         if (temp <= -low)
  25.         {
  26.                 return -low;
  27.         }
  28.         else
  29.         {
  30.                 if (temp == 0)
  31.                 {
  32.                         temp = -1;
  33.                         return temp;
  34.                 }
  35.                 else
  36.                 {
  37.                         if (temp <= -1)
  38.                         {
  39.                                 temp -= 1;
  40.                                 return temp;
  41.                         }
  42.                 }
  43.         }
  44. }
复制代码




                               
登录/注册后可看大图


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

使用道具 举报

 楼主| 发表于 2020-4-10 09:35:24 | 显示全部楼层
也请大家积极指出BUG,本人会尽力修正!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 09:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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