题目如下图
这题目是关于模拟:
找出津津一周里上课时间最多(超过8小时算"不高兴")的那一天,输出这一天的星期数。如果有多个,取最早的一天。
代码如下:
int main() {
int max_unhappy = -1; // 记录最大不高兴程度
int day = 0; // 记录哪一天最不高兴
for (int i = 1; i <= 7; i++) {
int a, b;
// printf("输入每天的两个课时段:\n");
scanf("%d %d", &a, &b); // 输入每天的两个课时段
int sum = a + b; // 每天总课时数
int unhappy = 0;
if (sum > 8) {
unhappy = sum - 8; // 超过8小时才不高兴
}
if (unhappy > max_unhappy) {
max_unhappy = unhappy;
day = i; // 更新最不高兴的那天
}
}
printf("%d\n", day);
return 0;
}
程序解析(思路):
津津每天有两个课时段(上午、下午)
每天总时长 = a + b
如果总时长超过8小时,她就“不高兴”,不高兴程度 = 总时长 - 8
找出一周里不高兴程度最大的那一天,如果有并列,选最早的一天。
变量说明
max_unhappy:记录当前找到的最大不高兴程度(初值设为-1)
day:记录对应的不高兴最大的一天(1~7表示周一到周日)
流程
循环7次,分别输入每一天的上下午课程时间。
计算总课时数,如果大于8小时,计算出超出的小时数(即不高兴程度)。
如果当前的不高兴程度比之前记录的还高,就更新max_unhappy和day。
最后输出最早出现最大不高兴程度的那一天(即星期几)。
过程分析:
周1:5+3=8,不高兴0
周2:6+2=8,不高兴0
周3:7+2=9,不高兴1
周4:5+3=8,不高兴0
周5:5+4=9,不高兴1
周6:0+4=4,不高兴0
周7:0+6=6,不高兴0
最大不高兴程度是1,第一次出现是在周三,所以输出3。