解题思路:

1. 在  main  函数开头,定义了整数变量  M (奶牛进山的总时间)、 T (路段数量)、 U (上坡时间)、 F (平路时间)、 D (下坡时间),并通过  scanf  函数从用户获取这些值。

2. 定义字符数组  roadCondition  来存储每段路的路况。通过一个循环读取路况字符,并使用  getchar  函数吸收每行输入后的回车符。

3. 定义变量  totalTime  来记录上山来回一趟所需的总时间, miles  来记录走过的路段数量。

4. 接下来是一个循环,根据不同的路况字符( u  表示上坡、 f  表示平路、 d  表示下坡)计算当前路段的时间消耗。如果加上当前路段的时间不超过  M ,则增加路段数量并更新总时间,继续下一轮循环;否则,结束循环。

5. 最后,打印出走过的路段数量。

注意事项:

参考代码:

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main() {

    int M = 0, T = 0, U = 0, F = 0, D = 0;

    scanf("%d %d %d %d %d", &M, &T, &U, &F, &D);

    char roadCondition[T];

    getchar();

    for (int i = 0; i < T; ++i) {

        scanf("%c", &roadCondition[i]);

        getchar();

    }

    int totalTime = 0;

    int miles = 0;

    for (int i = 0; i < T; ++i) {

        if (roadCondition[i] == 'u') {

            if (totalTime + U + D <= M) {

                totalTime += U + D;

                miles ++;

                continue;

            } else {

                break;

            }

        }

        if (roadCondition[i] == 'f') {

            if (totalTime + F + F <= M) {

                totalTime += F + F;

                miles++;

                continue;

            } else {

                break;

            }

        }

        if (roadCondition[i] == 'd') {

            if (totalTime + D + U <= M) {

                totalTime += U + D;

                miles++;

                continue;

            } else {

                break;

            }

        }

    }

    printf("%d\n", miles);

    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论