|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
(依赖项: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选项)来运行程序。 |
|