喜欢陈大傻 发表于 2021-8-25 14:05:37

BUG

#include<stdio.h>

int main()
{
        char isFree,isRain;
       
        printf("是否有空?(Y/N)");
        scanf("%c",&isFree);
       
        getchar();
       
        printf("是否下雨?(Y/N)");
        scanf("%c",&isRain);
       
        if(isFree=='Y')
        {
                if(isRain=='Y')
                {
                        printf("记得带伞哦!\n");
                }
        }
        else
        {
                printf("女神没空!\n");
        }
        return 0;
}



为什么前面的是否有空那里输入'N"了,后面我按回车后,它还会跳转到是否下雨那里啊?而不是跳转到没空那里?求大佬们解惑

大马强 发表于 2021-8-25 14:35:07

我这里正常呀

人造人 发表于 2021-8-25 14:36:08

你的意思是这样?
#include<stdio.h>

int main()
{
    char isFree,isRain;

    printf("是否有空?(Y/N)");
    scanf("%c",&isFree);

    getchar();

    if(isFree=='Y')
    {
      printf("是否下雨?(Y/N)");
      scanf("%c",&isRain);
      if(isRain=='Y')
      {
            printf("记得带伞哦!\n");
      }
    }
    else
    {
      printf("女神没空!\n");
    }
    return 0;
}

大马强 发表于 2021-8-25 14:36:39

我这里正常呀

大马强 发表于 2021-8-25 14:37:12

https://static01.imgkr.com/temp/eebeed4fdc7f45d3b9023604ab55596f.jpg

人造人 发表于 2021-8-25 14:50:03

大马强 发表于 2021-8-25 14:37


没空的话,还在乎下不下雨么?^_^

喜欢陈大傻 发表于 2021-8-25 15:05:23

大马强 发表于 2021-8-25 14:35
我这里正常呀

我这里的输入‘N’,它还会跳转到是否下雨那里


是否有空?(Y/N)N
是否下雨?(Y/N)
女神没空!

喜欢陈大傻 发表于 2021-8-25 15:06:47

人造人 发表于 2021-8-25 14:36
你的意思是这样?

这样子写是正常的,但是我是按照小甲鱼那样写的为啥会出现那样的BUG啊?

大马强 发表于 2021-8-25 15:15:01

你的意思是说在
是否有空? 输入 N
然后就跳到没空,不用去执行 是否下雨 这个语句?
那得要这样才行啊
#include<stdio.h>

int main()
{
      char isFree,isRain;
      
      printf("是否有空?(Y/N)");
      scanf("%c",&isFree);
      
      getchar();
         
      if(isFree=='Y')
      {
              printf("是否下雨?(Y/N)");
                        scanf("%c",&isRain);
                if(isRain=='Y')
                {
                        printf("记得带伞哦!\n");
                }
      }
      else
      {
                printf("女神没空!\n");
      }
      return 0;
}

大马强 发表于 2021-8-25 15:16:59

你这写法不对,当然不能得到你想要的结果

人造人 发表于 2021-8-25 15:31:04

喜欢陈大傻 发表于 2021-8-25 15:06
这样子写是正常的,但是我是按照小甲鱼那样写的为啥会出现那样的BUG啊?

程序从上到下执行
你把这个
printf("是否下雨?(Y/N)");
scanf("%c",&isRain);
写在这个的外面,当然就会执行到了
if(isFree=='Y')

喜欢陈大傻 发表于 2021-8-25 17:24:13

人造人 发表于 2021-8-25 15:31
程序从上到下执行
你把这个
printf("是否下雨?(Y/N)");


小甲鱼写的,哈哈哈,他应该是没考虑到这个

人造人 发表于 2021-8-25 17:51:34

喜欢陈大傻 发表于 2021-8-25 17:24
小甲鱼写的,哈哈哈,他应该是没考虑到这个

这不是bug,这是特性!
^_^
页: [1]
查看完整版本: BUG