• 忘记初始化方向变量 dir = 1
• 在移动之前就检查边界
• 循环次数写成 v-1 而不是 v
• 方向搞反(把 -1 当成向右)
💻 C++ 参考代码
// 弹球模拟#include <iostream>using namespace std;intmain() {int n, p, v; cin >> n >> p >> v;int pos = p; // 当前位置int dir = 1; // 方向:1表示向右,-1表示向左for (int i = 0; i < v; i++) { pos += dir; // 向当前方向移动一格if (pos == n) { dir = -1; // 到达右边界,反弹向左 } else if (pos == 1) { dir = 1; // 到达左边界,反弹向右 } } cout << pos << endl;return0;}
// 弹球模拟
#include
using namespace std;
int main() {
int n, p, v;
cin >> n >> p >> v;
int pos = p; // 当前位置
int dir = 1; // 方向:1表示向右,-1表示向左
for (int i = 0; i < v; i++) {
pos += dir; // 向当前方向移动一格
if (pos == n) {
dir = -1; // 到达右边界,反弹向左
} else if (pos == 1) {
dir = 1; // 到达左边界,反弹向右
}
}
cout << pos << endl;
return 0;
}