You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言航班座位分配程序循环与单座分配功能故障求助

修复航班座位分配程序的循环与座位分配问题

你的代码存在三个核心问题:

  • 缺少循环逻辑,用户输入一次后程序直接终止,无法回到输入提示环节
  • 座位分配逻辑错误,直接遍历输出所有座位,而非单次分配一个可用座位
  • 未记录座位占用状态,无法准确判断舱位是否已满

下面是修复后的完整代码:

#include <stdio.h>

int main(int argc, char** argv) {
    // 用数组标记座位状态:0=未占用,1=已占用
    int firstClassSeats[4] = {0, 0, 0, 0}; 
    int economyClassSeats[8] = {0, 0, 0, 0, 0, 0, 0, 0};
    // 对应舱位的固定座位号
    const int firstSeatNums[] = {1, 2, 3, 4};
    const int economySeatNums[] = {5, 6, 7, 8, 9, 10, 11, 12};
    int userInput;
    int i;
    int seatFound;

    while (1) {
        // 输出用户选择提示
        printf("请输入1选择头等舱\n");
        printf("请输入2选择经济舱\n");
        printf("请输入0退出程序\n\n");
        scanf("%d", &userInput);

        if (userInput == 0) {
            printf("程序已退出\n");
            break;
        }

        seatFound = 0;
        if (userInput == 1) {
            // 寻找第一个未被占用的头等舱座位
            for (i = 0; i < 4; i++) {
                if (firstClassSeats[i] == 0) {
                    firstClassSeats[i] = 1; // 标记为已占用
                    printf("舱位:头等舱     座位号:%d\n\n", firstSeatNums[i]);
                    seatFound = 1;
                    break;
                }
            }
            if (!seatFound) {
                printf("头等舱已满,下一班航班在明天\n\n");
            }
        } else if (userInput == 2) {
            // 寻找第一个未被占用的经济舱座位
            for (i = 0; i < 8; i++) {
                if (economyClassSeats[i] == 0) {
                    economyClassSeats[i] = 1; // 标记为已占用
                    printf("舱位:经济舱     座位号:%d\n\n", economySeatNums[i]);
                    seatFound = 1;
                    break;
                }
            }
            if (!seatFound) {
                printf("经济舱已满,下一班航班在明天\n\n");
            }
        } else {
            printf("输入无效,请重新输入\n\n");
        }
    }
    return 0;
}

关键改动说明:

  • 添加主循环:用while(1)实现无限循环,用户输入0时主动退出程序
  • 座位状态追踪:使用两个数组标记座位是否被占用,替代原代码中固定长度的不合理判断方式
  • 单次分配逻辑:每次用户选择舱位后,仅找到第一个可用座位分配并标记,符合"分配1个座位后回到输入提示"的需求
  • 输入合法性处理:增加对非1/2/0输入的错误提示

内容的提问来源于stack exchange,提问作者xBIGSMOOTHx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:05:21