```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; ++i) { cin >> nums[i]; } // 找到最大值和第二大值 int max_val = -1, second_max_val = -1; int max_pos = -1, second_max_pos = -1; for (int i = 0; i < n; ++i) { if (nums[i] > max_val) { second_max_val = max_val; second_max_pos = max_pos; max_val = nums[i]; max_pos = i; } else if (nums[i] > second_max_val) { second_max_val = nums[i]; second_max_pos = i; } } // 输出第二大值的位置,注意位置从1开始计数 cout << second_max_pos + 1 << endl; return 0; } ``` ### 需要注意的逻辑点: 1. **初始化值**:`max_val` 和 `second_max_val` 初始化为 -1,确保任何输入的正整数都能更新它们。 2. **位置索引**:输出的位置是从 1 开始的,所以最终输出时需要加 1。 3. **避免重复值**:题目保证了输入的正整数两两不同,所以在更新最大值和第二大值时不需要额外处理重复值的情况。 [2024-11-20 09:34:45 | AI写代码神器 | 333点数解答]