阴天搁浅的航 2021-11-15 12:21 采纳率: 71.4%
浏览 33
已结题

为什么这个数组会出错


#include <iostream>
#include <iomanip>
#include <cstring>

using namespace std;

const int ROWS = 14;
const int COL = 7;

void initPlane(char plane[ROWS][COL])
{
    plane[14][7]={"ABCDEF","**X*XX","*X*X*X",
                    "3**XX*X","4X*X*XX","*X*X**",
                    "*X***X","X***XX","*X*XX*",
                    "X*XX*X","*X*XXX","**X*X*",
                    "**XX*X","****X*"};
}

//飞机座位布局打印
//输出,每个座位显示一个X
void printPlane(char msg[], char plane[ROWS][COL])
{
     cout << msg << endl;
     int Row,col;
     for ( Row = 0; Row < ROWS ; Row ++)
     {
         cout << "Row" << " " << Row;
         for (col = 0; col < COL; col++)
         {
             cout << setw(5) << plane [Row][col] << " ";
         }
         cout << endl;
     }
}

int main()
{
    int seatsTaken = 0;
    int seats = ROWS * COL;
    char plane[ROWS][COL];
    char keep = 'y';
    int row = 0;
    char seat;
    int rowIndex, seatIndex;

    initPlane(plane);

    cout << "请选择你想要的座位!" << endl;
    while (seatsTaken < seats && keep == 'y')
    {
        //显示布局并获得座位选择
        printPlane("*-可选\nX-已购\n\n当前座位表如下:", plane);
        cout << "Row 1 和Row 2是头等舱。" << endl;
        cout << "Row 3 到 Row 7是商务舱。" << endl;
        cout << "Row 8 到 Row 13是经济舱。" << endl;
        cout << "机票类型(头等舱、商务舱或经济舱):" ;
        cin >> row;
        cout << "座位数(A、B、C、D、E、F):" ;
        cin >> seat;

        // 调整输入

        rowIndex = row;

        if ( seat == 'A' || seat == 'a' )
        seatIndex = 1;
        else if ( seat == 'B' || seat == 'b' )
        seatIndex = 2;
        else if ( seat == 'C' || seat == 'c' )
        seatIndex = 3;
        else if ( seat == 'D' || seat == 'd' )
        seatIndex = 4;
        else if ( seat == 'E' || seat == 'e' )
        seatIndex = 5;
        else if ( seat == 'F' || seat == 'f' )
        seatIndex = 6;


        //检查座位是否有人坐
        if (plane[rowIndex][seatIndex] == 'X')
        {
            cout << "对不起, " << row << " " << seat << "已经被他人预定" << endl;
        }
        else
        {
            cout << "好的,您预定" << row << " " << seat << "成功" << endl;
            plane[rowIndex][seatIndex] = 'X';
            seatsTaken++;
        }

          // 如果还有座位,继续往下运行

        if (seatsTaken < seats)
        {
            cout << "是否选择其他座位? (yes-Y/no-N) ";
            cin >> keep;
            cout << endl << endl;
        }
        else
        {
            cout << "非常抱歉,该航班机票已被预定完,请您预定另外航班机票" << endl;
        }
    }

    printPlane("最终座位表", plane);

    system("pause");
    system("cls");
    return 0;
}
  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-11-15 13:15
    关注

    问题1:plane[14][7]这是指数组的行下标为4,列下标为7的元素,
    问题2:"3*XXX", "4XXXX",这两个元素有7个字符,那么列长度就应该为8

    void initPlane(char plane[][COL]) {
        char s[14][7] = {"ABCDEF", "**X*XX", "*X*X*X",
                        "**XX*X", "X*X*XX", "*X*X**",
                        "*X***X", "X***XX", "*X*XX*",
                        "X*XX*X", "*X*XXX", "**X*X*",
                        "**XX*X", "****X*"
                       };
        for(int i=0;i<14;i++){
            strcpy(plane[i],s[i]);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月15日

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路