电梯控制程序(有一些BUG,之后会修复)
本帖最后由 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;
}
}
}
}
static/image/hrline/4.gif
请注意!本人亲测,程序在Windows无法运行!VS2019无法完成编译!请使用你的Linux虚拟机运行!,拷贝源代码至同样文件名的文件后,在此目录使用 gcc main.c function.c -lm -o 电梯.exe(用惯了Windows,老是喜欢文件有个拓展名~(-o选项可选,没写的话会生成一个a.out的可执行文件,使用./电梯.exe 或者 ./a.out(不写-o选项)来运行程序。 也请大家积极指出BUG,本人会尽力修正!
页:
[1]