油管视频《编程思维》中的题目,使用C语言编写出来,第四集,劫持火车

题目,已知有火车控制室内有一个电子屏幕上,会依次排列出向左向右的箭头,使用箭头来显示火车的运动,向右的箭头,表示火车向前行驶一节车厢的距离,而向左的箭头,则表示火车向后行驶相同的距离,卸货期间火车会来会不停地来回开动,因此一个典型的移动顺序可能是这样的,-> <- -> <- -> -> 车内控制室还有一个按钮,这个按钮只能按下一次,按下之后车厢会停下来,我们需要目标的车厢,在按下按钮之后,正好停在我们的起重机下面,方便我们卸货,假设从起重机所在的车厢出算起,我们目标车厢在第10节,请问该给出什么指示,可以根据电子屏幕上的箭头显示,精准的按下按钮,一次成功,可以让目标车厢,正好停在起重机下?

涉及编程的基础原理

1,数组和字符串处理:处理输入的箭头序列。

2,循环和条件判断:模拟火车的移动,并判断何时按下按钮。

3,计数和索引的使用:追踪火车当前位置和目标位置。

4,输入输出:从用户获取输入,并输出结果。

步骤流程规划

编程思路

1,获取用户输入的箭头序列。

2,初始化火车的位置为0(起重机所在车厢)。

3,遍历箭头序列,根据箭头方向更新火车的位置。

4,检查火车是否到达目标位置,如果是,则输出当前位置的索引。

#include <stdio.h>
#include <string.h>

int main() {
    char movements[100]; // 假设最多有100个箭头
    int position = 0;    // 火车的初始位置
    int targetPosition = 10; // 目标车厢位置

    // 获取用户输入的箭头序列
    printf("请输入箭头序列 (例如 -><- -><- ->): ");
    scanf("%s", movements);

    // 遍历箭头序列
    for (int i = 0; i < strlen(movements); i++) {
        if (movements[i] == '>') {
            position++; // 向右移动
        } else if (movements[i] == '<') {
            position--; // 向左移动
        }

        // 检查是否到达目标位置
        if (position == targetPosition) {
            printf("在第 %d 个箭头按下按钮,火车将停在目标车厢下。\n", i + 1);
            return 0;
        }
    }

    // 如果遍历完所有箭头仍未到达目标位置
    printf("无法在给定的箭头序列中找到合适的时机按下按钮。\n");

    return 0;
}
 

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值