解题思路:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复