繁体   English   中英

C y / n功能无法接受用户输入

[英]C y/n function failing to accept user input

编辑:这个问题已经解决,谢谢大家的投入!

我正在为我的C / C ++类开发一个非常简单的项目,其中该程序使用每轮用户输入的伤害值模拟Neo和Agent Smith之间的三轮战斗。 这部分代码工作正常,但是在代码结尾时,程序会询问用户是否喜欢打架。 用户应该输入“ y”或“ n”并接收相应的语句,但是,无论我输入什么内容,程序都将返回“ n”语句。 我的教授让我问Stack Overflow,因为他似乎一眼都找不到我的语法错误。

这是程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    double NEO_DAMAGE;
    int SMITH_DAMAGE;
    float NEO_SKILL=10;
    float SMITH_SKILL=12;
    float NEO_MULTIPLIER=1.5;
    float SMITH_MULTIPLIER=1.7;
    int FIGHT_NUMBER =1;
    while (FIGHT_NUMBER<=3)
{
    printf("Round ");
    printf("%d\n", FIGHT_NUMBER);
    printf("Neo and Smith must FIGHT! \n");
    printf("\n");
    printf("How much damage does Neo deal? (1-10)\n");
    scanf("%lf",&NEO_DAMAGE);
    printf("\n");
    printf("How much damage does Smith deal? (1-10)\n");
    scanf("%d",&SMITH_DAMAGE);
    printf("\n");

    SMITH_DAMAGE=SMITH_DAMAGE+((FIGHT_NUMBER-1)*0.5);
    NEO_SKILL=((NEO_SKILL*NEO_MULTIPLIER)-SMITH_DAMAGE);
    SMITH_SKILL=((SMITH_SKILL*SMITH_MULTIPLIER)-NEO_DAMAGE);
    FIGHT_NUMBER=FIGHT_NUMBER+1;
}
    printf("Neo's final skill: ");
    printf("%.3f\n", NEO_SKILL);
    printf("Smith's final skill: ");
    printf("%.3f\n", SMITH_SKILL);

    char answer;
    printf("\nDid you enjoy the fight? (y or n)\n");
    scanf("%c", &answer);
    if (answer == 'y'){
        printf("Wow! You're easily entertained. \n");
    }
    else {
        printf("I can't blame you :c \n");
    }

    return 0;
}

当使用GNU GCC编译器在CodeBlocks中对此进行编译时,它将返回“进程终止,状态为0(0分钟,0秒),0错误,0警告(0分钟, 0秒)”。

任何见解将不胜感激。 谢谢!

-Maxx

scanf()函数在尝试分析字符以外的转换之前会自动删除空格。 因此,您应该使用scanf(" %c", &answer); 加上空白,否则scanf()读取输入缓冲区中剩余的所有空白,这意味着它将忽略您输入的任何字符。 因此,条件(answer == 'y')始终将被评估为false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM