尝试获取数组中的最大元素时出现巨大的随机数错误 - C++ 错误

Getting huge random numbers error while trying to get the maximum element in array - C++ error

我正在制作一个程序,其中 该程序将 3 个数字作为输入:“l”、“r”和“a”。 我得到了 l 和 r 之间的所有“x”值(包括 l 和 r)。 例如,l = 1,r = 3,x 值为 1、2、3。所以现在我有一个函数 f(n) = ((x/a) + (x % a)),(注意: [x/a] 向下舍入为整数)。所以我用 C++ 实现了这个,我的代码如下。

#include<iostream>
using namespace std; 

int main()
{
    int l; 
    int r; 
    int a; 
    cin>>l>>r>>a; 
    int nums[(r-l)+2]; 
    int answers[(r-l)+2]; 
    for (int i = 1; i < (r-l)+2; i++)
    {
        nums[i] = i; 
    }
    for (int i = 1; i < sizeof(nums)/sizeof(nums[0])-1; i++)
    {
        answers[i] = ((nums[i]/a) + (nums[i] % a)); 
    }
    int j = 0; 
    j = answers[0];
  for (int i = 0; i < sizeof(answers); i++)
    {
       if (j < answers[i])
       {
            j = answers[i];
        }
   }
    cout<<j; 
}

但每当我 运行 这段代码时,我都会得到巨大的随机数,如 230984084 和 all.So 请指出我的代码有什么问题。提前致谢。

Levi 请求 post 我的评论作为答复:

关键是 C++ 的成功之一是它从 C 开始,但它向前发展了很多,你问题中的代码仍然主要是 C-code。这是一个如何在 C++ 中处理它的示例,需要更多知识但出错的机会更少:

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>

int main()
{
    std::cout << "Give 'left', 'right' and 'process' values: \n";
    int l, r, a; 
    std::cin >> l >> r >> a; 

    std::vector<int> nums((r-l)+2); 
    std::vector<int> answers; 
    // fill container with ascending numbers
    std::iota(nums.begin(), nums.end(), 1);
    // transform as needed
    std::transform(nums.begin(), nums.end(), std::back_inserter(answers), [a](int i) { return i/a + i%a; });
    // find maximum element in container (returns iterator to element)
    auto maxv = std::max_element(answers.begin(), answers.end()); 
    std::cout << *maxv; 
}