gpt4 book ai didi

C y/n 函数无法接受用户输入

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:23 25 4
gpt4 key购买 nike

编辑:此问题已解决,感谢大家的投入!

我正在为我的 C/C++ 类(class)开发一个非常简单的项目,其中程序使用用户输入的每轮伤害值模拟 Neo 和 Agent Smith 之间的 3 轮战斗。这部分代码运行良好,但在代码末尾,程序会询问用户是否喜欢这场战斗。用户应该输入“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 秒)”。

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

-马克斯

最佳答案

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

关于C y/n 函数无法接受用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54818550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com