C语言中if函数中的问题

#include
int main()
{
int num[2][6]={{0,0,0,0,0,0},{0,0,0,0,0,0}};
int i=0,j=0,m,n,p,z;
printf("Please type 1 for first class,Please type 2 for economy\n");
{
for(p=1;p<=10;p++)
{

scanf("%d",&z);
if(z==1&&num[0][4]!=1)
num[0][i]=1,
i++,
printf("头等舱%d,%d\n",1,i);
else if(z==2&&num[1][4]!=1)
num[1][j]=1,
j++,
printf("经济舱%d,%d\n",2,j);
else if(z==1&&num[0][4]==1)
{
printf("Can you change to the economy?\n");
scanf("%d",&m);
{
if(m==8)
{
num[1][p-5]=1,
j++,
printf("经济舱%d,%d\n",2,p-5);
}
else
printf("The next flight start in 3 hours later\n"),p=p-1;
}

    }
                        else if(z==2&&num[1][4]==1)
    {
                    printf("Can you change to the first class\n");
                    scanf("%d",&n);
            {
                            if(n==9)
                {
                    num[0][p-5]=1,
                i++,
                printf("头等舱%d,%d\n",1,p-5);
                }
                        else 
                            printf("The next flight start in 3 hours later\n"),p=p-1;}

}

else
printf("Error\n"),p=p-1;
}
}
printf("All tickets are sold!\n");
return 0;
}

就是这样一个程序,目的是选票,当输入1的时候自动给出头等舱以及位置序号,当输入2的时候给出经济舱以及位置序号。当然已被选择的不能再次被选择。
问题:

加入头等舱满了,会再次有一个if函数出来询问你是否可以换到经济舱,然而我定义

if(m=='y')

这个语句的时候会直接输出下面的else.....所以我不得不用数字来表示是否,比如输入8就代表可以,具体长这样

用数字时候是这样图片说明

然而当我想用y来表示的时候,就变成这样了(运行时我已经把变量改成char 型,,输入时也是%c了)图片说明

请教如何解决?

4个回答

#include
int main()
{
int select = 0;
int firstCl = 6;
int businessCl = 6;

while (1)
{
    printf("/***************************/\n");
    printf("* Menu:                     *\n");
    printf("* 1: First Class            *\n");
    printf("* 2: Business Class         *\n");
    printf("* 3: Exit                   *\n");
    printf("* Please Select.            *\n");
    printf("/***************************/\n");
    scanf("%d", &select);

    if(select == 3) break;
    if(firstCl == 0 && businessCl == 0) 
    {
            printf("All tickets are sold!\n");
            break;
    }

    else if(firstCl == 0 && select == 1)
    {
            printf("Please input 2 change to the Business Class or Exit!\n");
            continue;
    }   
    else if(businessCl == 0 && select == 2)
    {
            printf("Please input 1 buy the First Class or Exit!\n");
            continue;
    }   

    switch(select)
    {
        case 1:             
                printf("First Class:%d\n", firstCl);
                firstCl--;
            break; 
        case 2:
                printf("Bbusiness Class:%d\n", businessCl);
                businessCl--;
                break; 
        default:printf("Select Error\n");
    }
    printf("The remainder of the First Class ticket is:%d\n", firstCl);
    printf("The remainder of the Bbusiness Class ticket is:%d\n", businessCl);
}

return 0;

}

for (int i=1;i<=100;i++){ if(i%6==0) { printf("%4d" if (条件)后面如果没有大括号跟着 最好加上大括号 如果要在IF条件下执行I++则要把所有IF下的语句用大括号放在一起|||if 语句假如没有花括号 那下一条语句就是它的成分 假如有花括号 那括号里面就是它的执行语句 for (int i=1;i<=100;i......
答案就在这里: C语言中关于IF的问题..
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

看晕了,没看明白你的问题。用8代表y太不直观,给用户使用很不方便。为什么不用y? 没看明白你的原因。

Catoaim
Catoaim 是这样,就是那两张图,在头等舱选择完后,再次键入1的话应该出现“Can you change to the eneocmy”这句话,但是如果我想要用Y来表示同意的话,就会如二图.....输出这句话后把else的那个The next flight is 3 hours later 也输出了,当然按Y的话也可以实现把作为换到经济舱,就是不知道为什么会输出那个else上的内容,明明还没有键入任何东西。
4 年多之前 回复
Catoaim
Catoaim 是这样,就是那两张图,在头等舱选择完后,再次键入1的话应该出现“Can you change to the eneocmy”这句话,但是如果我想要用Y来表示同意的话,就会如二图.....输出这句话后把else的那个The next flight is 3 hours later 也输出了,当然按Y的话也可以实现把作为换到经济舱,就是不知道为什么会输出那个else上的内容,明明还没有键入任何东西。
4 年多之前 回复

if(m=='y')
前把m打印出来看是什么值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐