![](/img/trans.png)
[英]How to define a variable “N” type in C when N it is an input to C and its also defined by an input function( N will prompt the user for input)
[英]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.