题目描述
长途电话计费方式为:3分钟收费0.6元(不足3分钟按3分钟计费)
3分钟以后超过1分钟增收0.3元(不足1分钟,按1分钟计费)
若通话时间在24点至晨8点之则按半价收费
源代码
以下是使用 if
或 else if
语句实现的长途电话计费程序示例:
#include <stdio.h>
int main() {
int start_hour, start_min, end_hour, end_min;
double rate = 0.6; // 默认费率为0.6元/3分钟
printf("请输入起始时间(小时 分钟):");
scanf("%d %d", &start_hour, &start_min);
printf("请输入结束时间(小时 分钟):");
scanf("%d %d", &end_hour, &end_min);
// 计算通话时间(单位:分钟)
int total_minutes = (end_hour - start_hour) * 60 + (end_min - start_min);
// 判断是否在夜间时段
int is_night_time = 0; // 默认为非夜间时段
if ((start_hour >= 0 && start_hour < 8) || (end_hour >= 0 && end_hour < 8) || (end_hour == 24)) {
is_night_time = 1;
}
double cost = 0.0; // 总费用
int curr_minutes = 0; // 当前累计分钟数
if (is_night_time) {
// 夜间时段按半价收费
while (curr_minutes < total_minutes) {
if (curr_minutes + 3 <= total_minutes) {
// 剩余时间超过3分钟,按3分钟收费
cost += 0.3;
curr_minutes += 3;
}
else {
// 剩余时间不足3分钟,按剩余时间计费
int remaining_min = total_minutes - curr_minutes;
cost += remaining_min * 0.3 / 3;
curr_minutes = total_minutes;
}
}
}
else {
while (curr_minutes < total_minutes) {
if (curr_minutes + 3 <= total_minutes) {
// 剩余时间超过3分钟,按3分钟收费
cost += rate;
curr_minutes += 3;
}
else {
// 剩余时间不足3分钟,按剩余时间计费
int remaining_min = total_minutes - curr_minutes;
cost += remaining_min * rate / 3;
curr_minutes = total_minutes;
}
if (curr_minutes > 3) {
// 超过3分钟时,每增加1分钟增收0.3元
cost += 0.3;
}
}
}
printf("通话时间:%d 分钟\n", total_minutes);
printf("费用:%.1f 元\n", cost);
return 0;
}
在以上代码中,根据题目要求的计费方式,使用 if
和 else if
条件语句来判断是否在夜间时段,然后分别计算费用。如果是夜间时段,则按半价收费,否则按正常费率收费。其余部分与前述示例代码相同。
程序执行示例:
请输入起始时间(小时 分钟):19 30
请输入结束时间(小时 分钟):9 10
通话时间:700 分钟
费用:235.8 元
需要注意的是,以上代码实现了题目要求的长途电话计费方式,但同样还有一些细节需要进一步考虑和完善,如输入的起始和结束时间的合法性、输出格式等。在具体项目中使用时,需根据实际需求进行适当的修改和测试。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END