【发布时间】:2018-03-12 14:28:59
【问题描述】:
对于age >= 25 和未婚女性,输出不正确。
/* 如果满足以下任一条件,公司会为其司机投保 满意 司机结婚了。 司机为未婚男性,30岁以上。 司机未婚,女性,25岁以上。 编写一个程序来决定是否使用逻辑运算符为驾驶员投保。 */
#include <stdio.h> int main() { char name[100]; char ms, gender; int age; printf("\n\tNAME: "); scanf("%[^\n]%*c", name); printf("\n\tAGE: "); scanf("%d", &age); printf("\n\tMARRIED [Y/N]: "); scanf("%s",&ms); printf("\n\tGENDER [M/F]: "); scanf("%s",&gender); if(ms == 'Y'|| ms == 'y')//married printf("\n\t1. INSURED\n"); else//unmarried { if(gender == 'M' || gender == 'm')//male { if(age >= 30) printf("\n\t2. INSURED\n"); else printf("\n\t3. NOT INSURED\n"); } else//female { if(age >= 25) printf("\n\t4. INSURED\n"); else printf("\n\t5. NOT INSURED\n"); } } return 0; }
请帮我找出错误。为了找到错误,我已经对输出进行了编号以了解。错在哪里。但我找不到任何东西。 输出:
NAME:
AGE: 26
MARRIED [Y/N]: n
GENDER [M/F]: f
5. NOT INSURED
【问题讨论】:
-
Fix-my-code 请求是题外话。编译所有警告和调试信息(
gcc -Wall -Wextra -g和 GCC....)。 使用调试器gdb(逐步运行程序并查询其状态)和valgrind。当心undefined behavior。阅读documentation -
@BasileStarynkevitch 对不起!我不确定您所说的“gcc -Wall -Wextra -g”是什么意思。
-
GCC 是一种免费的软件编译器(也是 Linux 发行版中常用的编译器)。我推荐使用它(如果你正在学习 C 编程,我还推荐安装和使用一些 Linux 发行版)。您应该花几天时间阅读编译器和调试器的文档。
-
我知道。但是,什么是 gdb,我该如何使用它。
-
@rgo - 你听说过谷歌吗?它非常擅长回答琐碎的问题......
标签: c