gpt4 book ai didi

c - 嵌套 'if' 语句不起作用

转载 作者:行者123 更新时间:2023-11-30 19:33:05 26 4
gpt4 key购买 nike

我正在尝试编写非常简单的代码,如下:

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

int main()
{
int age;
char gender;

printf("How old are you? \n");
scanf("%d", &age);

printf("What is your gender? (m/f) \n");
scanf("%c", &gender);

if ((age >= 18 && gender == 'm')){
printf("You may enter this website ");

if (age <= 20)
{
printf("dude.");
}
}

if ((age >= 18 && gender == 'f')) {
printf("You may enter this website ");

if (age <= 20)
{
printf("young lady.");
}
}
else if (age < 18)
{
printf("Nothing to see here! \n");
}
return 0;
}

在上面的代码中,我尝试使用嵌套 if陈述。但它不起作用,不如我所愿。我输入年龄后,它打印出一句话:你的性别是什么? (男/女)。

当第二句打印出来时,它就终止了。但我不知道为什么。我希望用户能够输入性别,并根据输入的性别和年龄打印出一个句子。

能给我一点提示吗?

最佳答案

您的代码逻辑没有任何问题,因此您看到的行为最可能的原因是这一行:

scanf("%c", &gender);

由于该行跟在读取 int 之后,因此缓冲区中保留的 '\n' 会立即分配给 gender

您可以通过在 %c 前面添加空格来忽略换行符来解决此问题:

scanf(" %c", &gender);

您还可以通过组合一些检查来稍微减少代码:

if (age >= 18){
printf("You may enter this website ");
if (age <= 20) {
printf("%s.\n", gender == 'm' ? "dude" : "young lady");
}
}

关于c - 嵌套 'if' 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46389245/

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