鱼C论坛

 找回密码
 立即注册
查看: 676|回复: 2

[已解决]感情邀约,这段代码错在哪?

[复制链接]
发表于 2022-3-21 12:33:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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: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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-21 13:25:46 From FishC Mobile | 显示全部楼层
你的 _isFree 没有输入值,两个 scanf() 都是 _isRain
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 14:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表