[蓝桥杯刷题]之模拟法[1]不高兴的津津

题目如下图 

这题目是关于模拟:
找出津津一周里上课时间最多(超过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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值