gpt4 book ai didi

c++ - 在 C++ 中用两个 char 变量评估 bool 值

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:18 26 4
gpt4 key购买 nike

抱歉,这里有点初学者:

我正在研究一个练习程序,根据一天中的小时数和一周中的几天来确定长途电话的费用……我已经进入了 do-while 循环并尝试使用嵌套分支机构将工作日与周末分开。

但是,当我编译和运行时,无论我是否放入对应于我试图计算的 bool 值的字符,if 和 else if 嵌套语句都会被跳过。我正在努力了解我在这里缺少的东西。说明中明确指出星期几应存储在两个字符变量中:Mo Tu We Th Fr Sa Su。

do
{
//have user input day of week of call
printf("\nOn what day was the call made? (Mo, Tu, We, Th, Fr, Sa, or Su) ");
scanf("%c%c", &day1, &day2);

//branch for weekday vs weekend vs invalid input
if (((day1 == 'M') && (day2 == 'o')) || ((day1 == 'T') && (day2 == 'u')) || ((day1 == 'W') && (day2 == 'e')) || ((day1 == 'T') && (day2 == 'h')) || ((day1 == 'F') && (day2 == 'r')))
{
//determine if phone call was made at hi or low rate times
printf("At what time was your call made? (HH MM - with 08 00 representing 8:00 AM and 18 30 representing 6:30 PM) ");
scanf("%f %f", &call_time_hour, &call_time_minute);
call_time_hour = call_time_hour + (call_time_minute / 60);

printf("%f", call_time_hour);
}
else if (((day1 == 'S') && (day2 == 'a')) || ((day1 == 'S') && (day2 == 'u')))
{
printf("What was the duration of your call? ");
scanf("%d", &call_duration);

//calculate total cost of call
cost_of_call = call_duration * 0.15;

printf("%s %.2lf", "The cost of this call was $", cost_of_call);
}
calls_made--;
printf("%d", calls_made);
}while (calls_made > 0);

因此,例如,当我编译并运行程序并输入“Sa”作为调用日期时,它会直接移动到“calls_made--”步骤。

最佳答案

问题是因为之前的scanf。调试并查看真正扫描的字符。我确定 day1 会是 '\n'

在这种情况下,在扫描星期几之前清除输入流:

while (getchar() != '\n');

关于c++ - 在 C++ 中用两个 char 变量评估 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506195/

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