第二题这种要怎么做,还是不懂

img

定义一个航班类,有航班号,航班时间,座位预订信息等。座位预订信息是个二维数组,记录飞机所有座位的预订情况,已预订则为1,未预订则为0 可以用黑框和白框表示座位是否预订的符号,按二维矩阵方式显示所有座位预订情况 用户输入4E,可以表示选定第四排第E列座位,把该位置预订信息改为1即可

代码如下:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
//显示信息
void show(int a[][7],int n)
{
    int i,j;
    char ch;
    char buf[12]={0};
    for (i=0;i<n;i++)
    {
        ch = 'A'+i;
        sprintf_s(buf,12,"%c%d-%d:",ch,i*7+1,i*7+7);
        printf("%-10s",buf);
        for (j=0;j<7;j++)
        {
            if(j==1 || j== 4)
                printf("%d    ",a[i][j]);
            else if(j==6)
                printf("%d\n",a[i][j]);
            else
                printf("%d ",a[i][j]);
        }
    }
}
//查询空位
void Find(int a[][7],int n)
{
    int i,j;
    char ch;
    system("cls");
    printf("空位信息:\n");
    for (i=0;i<n;i++)
    {
        ch = 'A'+ i;
        for (j=0;j<7;j++)
        {
            if(a[i][j] == 0)
            {
                printf("%c%d  ",ch,i*7+j+1);
            }
            
        }
        printf("\n");
    }
    system("pause");
}
//预定座位
void Select(int a[][7],int n,char buf[],int size)
{
    int i,j;
    int opt;
    char ch;
    char tmp[12]={0};
    int bgo = 1;
    system("cls");
    show(a,n);
    while(bgo)
    {
        printf("1.机选座位\n");
        printf("2.自选座位\n");
        scanf("%d",&opt);
        if (opt == 1) //机选
        {
            for (i=0;i<n;i++)
            {
                ch = 'A'+ i;
                for (j=0;j<7;j++)
                {
                    if (a[i][j] == 0)
                    {
                        memset(buf,0,size);
                        sprintf_s(buf,size,"%c%d",ch,i*7+j+1);
                        printf("预定成功,座位号:%s\n",buf);
                        bgo = 0;
                        break;
                    }
                }
            }//for end
        }else
        {
            //自选
            while(1)
            {
                printf("请输入座位号(如A20):");
                memset(tmp,0,12);
                gets(tmp);
                memset(buf,0,size);
                strcpy(buf,tmp);
                i = tmp[0] - 'A';
                tmp[0] = ' ';
                j = (atoi(tmp) -1)%7;
                if(a[i][j] == 0)
                {
                    bgo = 0;
                    printf("预订成功,座位号:%s\n",buf);
                    break;
                }
                else
                    printf("座位已占用,请重新选座,");
                    
            }
        }
    }
    system("pause");
}

//打印机票
void Print(char* hb,char* hbsj,char* zw)
{
    system("cls");
    printf("%s  %s  %s\n",hb,hbsj,zw);
    system("pause");
}




int main()
{
    int a[20][7]={0};  //20排座位,每排7个座位,左边2个,中间3个,右边2个
    char hangban[20]={0};
    int opt = 0;
    int bgo = 1;
    printf("请输入航班号:");
    scanf("%s",hangban);
    char buf[12]={0};  //保存座位字符串
    char* hbsj= "2021-2-2 12:00"; //航班时间,写死了
    while(bgo)
    {
        system("cls");
        printf("------------机票座位预定系统--------------\n");
        printf("|     1.查询空位                         |\n");
        printf("|     2.预定空位                         |\n");
        printf("|     3.打印机票                         |\n");
        printf("|     4.显示座位信息                     |\n");
        printf("|     0.退出系统                         |\n");
        printf("------------------------------------------\n");
        scanf("%d",&opt);
        switch(opt)
        {
        case 0:
            bgo = 0;
            break;
        case 1:
            Find(a,20);
            break;
        case 2:
            Select(a,20,buf,12);
            break;;
        case 3:
            Print(hangban,hbsj,buf);
            break;
        case 4:
            show(a,20);
            system("pause");
            break;
        }

    }
    return 0;
}