该问题来自http://www.programmr.com/node/137861/begin ,您可以在那里进行测试。
我正在编写一个程序,它使用嵌套 if 和复合条件的组合来显示一个人的适当名称。询问用户性别、名字、姓氏和年龄。
如果此人是 20 岁或以上的女性,请询问她是否已婚。如果是这样,显示“夫人”。在她的名字面前。如果没有,请显示“女士”。在她的名字面前。如果女性未满 20 岁,请显示她的名字和姓氏。
如果此人是男性且 20 岁或以上,请显示“先生”。在他的名字面前。否则,显示他的名字和姓氏。
请注意,只有在 20 岁或 20 岁或以上的女性时才应询问他们是否已婚。
这是我的代码:
<?php
$finalName;
echo "What is your Gender (M or F):";
$gender = trim(fgets(STDIN));
echo "First Name:";
$firstName = trim(fgets(STDIN));
echo "Last Name:";
$lastName = trim(fgets(STDIN));
echo "Age:";
$age = trim(fgets(STDIN));
if ($gender == "M" and $age>19) {
$finalName = "Mr. ".$lastName;
}
if ($age<20) {
$finalName = $firstName.$lastName;
}
if ($gender == "F" and $age>19) {
echo "Are you married:";
$married = trim(fgets(STDIN));
if ($married == "Y") {
$finalName = "Mrs. ".$lastName;
}
else {
$finalName = "Ms. ".$lastName;
}
}
echo "Then I will call you ".$finalName;
exit;
?>
该代码没有给出预期的输出。逻辑有问题还是 if 语句不能这样工作?