当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

C primer plus 14章课后题--巨人航空公司问题

来源:本站原创 浏览:17次 时间:2021-12-07

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define ture 1#define false 0#define SEATCOUNT 12#define FLIGHTCOUNT  12#define FNAME_LEN  50#define LNAME_LEN  50/*要全局声明*/char subinput;int topinput;typedef struct air_info{int set_num;bool isbook;char first_name[FNAME_LEN];char last_name[LNAME_LEN];} air_info;air_info air_info_arr[FLIGHTCOUNT][SEATCOUNT];air_info (*p)[SEATCOUNT]=air_info_arr;void init(){int i = 0;int j = 0;for (i=0; i<FLIGHTCOUNT; i++){for(j=0; j<SEATCOUNT; j++){air_info_arr[i][j].first_name[FNAME_LEN]="E";air_info_arr[i][j].last_name[LNAME_LEN]="E";if((j%6)==0){//方便测试air_info_arr[i][j].isbook=true;}elseair_info_arr[i][j].isbook=false;air_info_arr[i][j].set_num=j;}}}void show_topmenu(){printf("please choose flight:\r\n");printf("0) 102 \r\n");printf("1) 311 \r\n");printf("2) 444\r\n");printf("3) 519\r\n");printf("4) Quit\r\n");}/*** 描述: 展示菜单*输入:无*返回值:无* 作者: 飞猪* 日期:2019-12-19*/void show_submenu(){printf("To choose a function,enter its letter label:\r\n");printf("a)Show number of empty seats\r\n");printf("b)Show list of empty seats\r\n");printf("c)Show alphabetical list of seats\r\n");printf("d)Assign a customer to,a seat assignment\r\n");printf("e)Delete a seat assignment\r\n");printf("f)Quit\r\n");}/*** 描述: 显示空座位的数量*输入:结构体指针*返回值:无* 作者: 飞猪* 日期: 2019-12-19**/int show_num(struct air_info (*p)[SEATCOUNT]){// printf("测试%d\r\n",p[0].isbook);int j = 0;int count = 0;for(j=0; j<SEATCOUNT; j++){if((p[topinput][j]).isbook==false)count++;}printf("%d航班的空座位号数量为%d\r\n",i,count);count = 0;printf("\r\n");main();}/*** 描述: 显示详细的空座位列表* 输入:结构体指针* 返回值:无* 作者: 飞猪* 日期: 2019-12-19**/int show_list(struct air_info (*p)[SEATCOUNT]){// printf("测试%d\r\n",p[0].isbook);int j = 0;for(j=0; j<SEATCOUNT; j++){if((p[topinput][j]).isbook==false)printf("空座位号为%d\r\n",(p[topinput][j]).set_num);}printf("\r\n");main();}/*** 描述: 根据传入的结构体指针,分配座位*输入:结构体指针*返回值:无* 作者: 飞猪* 日期:2019-12-19**/void assign_seat(struct air_info (*p)[SEATCOUNT]){int j = 0;char ch;char tepm_fname[FNAME_LEN];char tepm_lname[LNAME_LEN];printf("please input your information:\r\n");printf("please input first name:\r\n");gets(tepm_fname);printf("please input last name:\r\n");gets(tepm_lname);for(j=0; j<SEATCOUNT; j++){if(p[topinput][j].isbook==false){printf("your seat number is %d \r\n",(p[topinput][j]).set_num);printf("are you sure  booking this seat? Y/N ");scanf(" %c", &ch);while (ch=='Y'){printf("your set is : %d\r\n",(p[topinput][j]).set_num);(p[topinput][j]).isbook=true;strcpy(p[topinput][j].first_name,tepm_fname);strcpy(p[topinput][j].last_name,tepm_lname);printf("your first_name is : %s\r\n",p[topinput][j].first_name);printf("your last_name is : %s\r\n",p[topinput][j].last_name);main();}}}printf("\r\n");}/**描述:根据传入的结构体指针,删除预定*输入:结构体指针*返回值:无*作者:飞猪*修改日期:2019-12-19*/void delete_assign(struct air_info (*p)[SEATCOUNT]){char del_fir[FNAME_LEN];int j = 0;printf("please input the first name you will delete\r\n");gets(del_fir);for(j = 0; j<SEATCOUNT; j++){if(!(strcmp((p[topinput][j]).first_name,del_fir))){(p[topinput][j]).first_name[FNAME_LEN]="E";(p[topinput][j]).last_name[LNAME_LEN]="E";(p[topinput][j]).isbook=false;printf("delete",(p[topinput][j]).set_num);printf("delete sucess!\r\n");break;}else{printf("can not find the name that you input,please input again!\r\n");}}printf("\r\n");main();}/*** 描述: 快速排序算法* 输入:左区间 右区间* 返回值:无* 作者: 飞猪* 日期: 2019-12-19**/void quick_sort(int left,int right){int a[SEATCOUNT];if(left>=right)return ;int i=left;int j=right;int key=a[i];while(i<j){while(i<j&&key<=a[j])j--;a[i]=a[j];while(i<j&&key>=a[i])i++;a[j]=a[i];}a[i]=key;quick_sort(left,i-1);quick_sort(i+1,right);}/*** 描述: 原题中为按字母排序(其实就是ascii码),这里修改为按座位号排序* 输入:结构体指针* 返回值:無* 作者: 飞猪* 日期: 2019-12-19**/void show_num_list(struct air_info (*p)[SEATCOUNT]){int j = 0;quick_sort(p[topinput][0].set_num,p[topinput][SEATCOUNT].set_num);printf("seat has been sorted\r\n");for(j=0; j<SEATCOUNT; j++)printf("set_num:%d\e\n",p[topinput][j].set_num);}int main(){topinput=0;init();show_topmenu();gets(&topinput);switch(topinput){case'0':show_submenu();break;case'1':show_submenu();break;case'2':show_submenu();break;case'3':show_submenu();break;case'4':return -1 ;break;}printf("please input your selection: ");gets(&subinput);switch(subinput){case'a':show_num(air_info_arr);break;case'b':show_list(air_info_arr);break;case'c':show_num_list(air_info_arr);break;case'd':assign_seat(air_info_arr);break;case'e':delete_assign(air_info_arr);bre����,�㹻ak;case'f':return -1 ;break;}return 0;}

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net