|
发表于 2024-6-8 15:27:52
From FishC Mobile
|
显示全部楼层
|阅读模式
30鱼币
起因是朋友弟弟也在学c 在网上看到的题拿来问我和朋友 (对不起 丢人了qwq)
:
电梯最高十楼,每层最多容纳10人(A,B,C等字母代替),最下面用input来输入楼层和人数,因为是简易版 楼层都不用画左右竖线表示即可。
我是想用setcursorpos(x,y)来解决,希望可以有注释(好回去装一波,咳咳)
(ps:第一次发贴 有什么做的不对的希望指出 拜托啦!)
应该不是无中生友吧
为了实现一个简易电梯程序,代码将基于你的描述来创建一个可以接受输入并更新电梯状态的程序。
代码中使用 SetConsoleCursorPosition 函数(类似你提到的 SetCursorPos)来在命令行界面上定位输出。
SetConsoleCursorPosition 是 Windows 特有的函数,所以请确保你在 Windows 系统上使用这个程序。
- include <stdio.h>
- include <windows.h> // 包含用于控制台操作的函数
- define MAX_FLOORS 10
- define MAX_PEOPLE 10
- // 用来存储每层楼当前的人数
- int floors[MAX_FLOORS];
- // 函数声明
- void initializeFloors();
- void printElevator();
- void addPeople(int floor, int count);
- COORD coord = {0,0}; // 全局坐标变量
- int main() {
- int floor, people;
- initializeFloors(); // 初始化楼层数据
- printElevator(); // 显示电梯初始状态
- while (1) {
- printf("输入楼层和人数 (格式:楼层 人数):");
- scanf("%d %d", &floor, &people);
- if (floor < 1 || floor > MAX_FLOORS || people < 0 || people > MAX_PEOPLE) {
- printf("无效输入。请重新输入。\n");
- continue;
- }
- addPeople(floor - 1, people); // 加人到电梯
- printElevator(); // 更新电梯显示
- }
- return 0;
- }
- void initializeFloors() {
- for (int i = 0; i < MAX_FLOORS; i++) {
- floors[i] = 0;
- }
- }
- void printElevator() {
- system("cls"); // 清屏
- HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); // 获取控制台句柄
- for (int i = MAX_FLOORS - 1; i >= 0; i--) {
- coord.X = 0;
- coord.Y = MAX_FLOORS - i;
- SetConsoleCursorPosition(h, coord);
- printf("%2d楼 - ", i + 1);
- for (int j = 0; j < floors[i]; j++) {
- printf("A"); // 假设所有人都用A表示
- }
- printf("\n");
- }
- }
- void addPeople(int floor, int count) {
- // 保证电梯不超载
- if (floors[floor] + count > MAX_PEOPLE) {
- printf("超出最大人数限制。\n");
- } else {
- floors[floor] += count;
- }
- }
复制代码
代码说明
- 1. 初始化电梯层: 我们有一个数组 floors 来存储每层楼的人数。
- 2. 打印电梯状态: printElevator 函数使用了 SetConsoleCursorPosition 来定位输出,从而模拟电梯的各层状态。
- 3. 添加人员: 用户输入楼层和人数,addPeople 函数将人员添加到相应楼层,同时检查是否超载。
- 4. 持续运行: 主循环让用户不断输入楼层和人数,更新电梯状态。
你可以根据需求进行扩展或修改。
|
最佳答案
查看完整内容
应该不是无中生友吧
为了实现一个简易电梯程序,代码将基于你的描述来创建一个可以接受输入并更新电梯状态的程序。
代码中使用 SetConsoleCursorPosition 函数(类似你提到的 SetCursorPos)来在命令行界面上定位输出。
SetConsoleCursorPosition 是 Windows 特有的函数,所以请确保你在 Windows 系统上使用这个程序。
代码说明
[*]1. 初始化电梯层: 我们有一个数组 floors 来存储每层楼的人数 ...
|