yuzhitai 发表于 2022-3-21 12:33:47

感情邀约,这段代码错在哪?

#include<stdio.h>
int main()
{
        char _isRain,_isFree;
        printf("有空吗?我们一起去看电影吧!");
        scanf("%c",&_isRain);
       
        getchar();
       
        printf("今天有没有下雨?");
        scanf("%c",&_isRain);
        if('Y' == _isFree)
        {
                printf("好呀!");
                if('Y' == _isRain)
                {
                        printf("记得带雨伞哦!");
                }
                else
                {
                       
                }
       }
        else if('N' == _isFree)
        {
                printf("女神没空^_^");
        }
        else
        {
               
        }
        return 0;
}
帮我看看,这段代码错在哪?

傻眼貓咪 发表于 2022-3-21 13:25:46

你的 _isFree 没有输入值,两个 scanf() 都是 _isRain

小小沐 发表于 2022-3-21 13:58:07

#include<stdio.h>
#include <conio.h>//getchar()包含在这个头文件中
/*
* 看了你的代码,大概清楚你的意思,代码有逻辑上的错误,这里帮你修改了一下,应该是你想让代码表达的意思

*/

//#define _CRT_SECURE_NO_WARNINGS//因为我使用的是VS2019, 不支持scanf,所以需要加这个宏定义,或者后面直接使用scanf_s,如果朋友你使用的是VC++6.0,codeblocks,Dec……可以不必操作这一步
int main()
{
    char _isRain, _isFree;

    printf("有空吗?我们一起去看电影吧!\n");
    scanf_s("%c", &_isFree,sizeof(_isFree)); //在使用%c和%s读入字符或字符串时,应在地址参数后附加一个缓冲区边界值
    //geichar()
    //getchar()函数实际上是int getchar(void),所以它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来。
    //    在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,
    //      那么将会读取上一次被读取字符的下一个字符),如果缓存区没有用户键入的字符,那么编译器会等待用户键入并回车后再执行下一步
    //      (注意键入后的回车键也算一个字符,输出时直接换行)
   

   
    if ('Y' == _isFree)//'Y' == _isRain
    {
      printf("好呀!\n");
      printf("今天有没有下雨?\n");
      getchar();//这里必须加一个getchar()用来吃掉上一个'\n'(scanf_s输入'Y'或者其他,然后按下回车键,回车键也是一个字符,会被下一个scanf_s读取)
      scanf_s("%c", &_isRain,sizeof(_isRain));

      if ('Y' == _isRain) {
            printf("记得带雨伞哦!\n");
      }
      else {
            printf("Well !\n");
      }
    }
    else if ('N' == _isFree)//'N'== _isFree
    {
      printf("女神没空^_^\n");
    }
    else
    {
      printf("为什么不靴话!\n");
    }
   
    return 0;
}
页: [1]
查看完整版本: 感情邀约,这段代码错在哪?