Arromine 2022-03-08 19:16 采纳率: 71.4%
浏览 46

C语言飞机票订购系统

为什么输入信息有误,求解决

img


#include"stdio.h" 
#include"string.h"
#include"stdlib.h"
int len=0;//乘客
 
struct passenger   //结构体 
{
    char name[10];  //姓名 
    char seat[10];  //座位号 
    char ID[20];    //身份证 
};
 
struct passenger s[20];
 
char seat_symbol[20][4];
void chushihua()
{
    int i,j;
    for(i=0;i<20;i++)
     for(j=0;j<4;j++)
      seat_symbol[i][j]='1';
}
void _seat() //座位分布 
{
    printf("\t\t当前座位;\n");
    FILE*fp=fopen("xinxi.txt","r+");
    char a;
    if(fp==NULL) printf("read error!\n");
    else
    a=fgetc(fp);
    while(!feof(fp))
    {
        putchar(a);
        a=fgetc(fp);
    }
    fclose(fp);
}
int order()
{
    char a;
    int row,col;
    int choice2=0,length=0;
    scanf("%s",&s[len].name);
    scanf("%s",&s[len].seat);
    scanf("%s",&s[len].ID);
    length=strlen(s[len].seat);
    a=s[len].seat[length-1];
    
    switch(a)
    {
        case'A':col=0;
        break;
        case'B':col=1;
        break;
        case'C':col=2;
        break;
        case'D':col=3;
        break;
    }
    if(length==2)  row=s[len].seat[0]-41;
     else row=(s[len].seat[0]-40)*10+s[len].seat[1]-41;
    if(seat_symbol[row][col]=='0')
    {
        printf("该座位已被选中,请更换您的选择\n");
        return 0;
    }
    else if(row<0||row>20)
    {
        printf("您输入有误,请重新输入");
        return 0; 
    }
    else  seat_symbol[row][col]=='0';
    
    printf("\t\是否继续添加乘客\n");
    printf("\t\t1.继续添加\n");
    printf("\t\t2.添加完毕\n");
    printf("\t\t3.没有想要的座位");
    
    scanf("%d",&choice2);
    if(choice2==1)
    {
        printf("请输入乘客信息:  \n");
        len+=1;
        return 0;
    }
    else if(choice2==2)
    {
        printf("您的乘客清单如下:  \n");
        return 1; 
    }
    else if(choice2==3)
    {
        printf("很遗憾我们未能为您提供满意的服务,请您更换别的航班,您已经预定的座位如下:   \n");
        return 1;
    }
}
void print()//乘客清单 
{
    int i;
    for(i=0;i<=len;i++) printf("姓名:%s\t预订的座位;%s\t身份证号码:%s\n",s[i].name,s[i].seat,s[i].ID);
} 
void page()//订票
{
    printf("\t\t=======飞机订票系统=======\t\t\n");
    printf("\t\tY、订票\t\t\n\n");
    printf("\t\tN、退出\t\t\n\n");
    char choice;
    int f=0;
    scanf("%c",&choice);
    switch(choice)
    {
        case'Y':
        {
            printf("\t\t=======飞机订票系统=======\t\t\n");
            printf("\t\t1、订票\t\t\n\n");
            printf("\t\t2、退出\t\t\n\n");
            int choice1;
            scanf("%d",&choice1);
            if(choice1==1)
            {
                _seat();
                printf("\n");
                printf("请输入乘客信息:(包括:姓名、座位号、身份证号码)\n示例:张三 17D 64583157454\n");
                f=order();
                while(f==0) f=order();
                if(f==1)
                print();
                break;
            } 
            else if(choice1=2)  break;
            else
            {
                printf("error!");
                break;
            }
        }
        case'N':
        {
            break;
        }
        default:
        {
            printf("error!");
            break;
        }
    }
 
} 
main()
{
    chushihua();
    page();
}
  • 写回答

2条回答 默认 最新

  • 慕雪华年 C/C++领域新星创作者 2022-03-08 19:27
    关注
    
     scanf("%s",&s[len].name);
        scanf("%s",&s[len].seat);
        scanf("%s",&s[len].ID);
    

    输入的都是字符串,这里不需要取地址吧。把取地址去掉试试

    如果对你有帮助,还请点个采纳,万分感谢!

    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)