0

假设您有一个完全定义且正确的函数,具有以下原型

int randomBetween( int lowerBound, int upperBound );

返回下限和上限(含)之间的随机数。

编写一个 main 函数,使用 randomBetween 生成 1 到 10 之间的 1000 个值,包括 1 到 10。生成值时,计算该值等于 5 的次数。显示该值等于五的次数。您的程序应该只输出一个数字(即,不要将 cout 语句放入循环中)。

这是我到目前为止所拥有的:

   // Function Prototypes
   int randomBetween( int lowerBound, int upperBound );

   int main( )
{

  int lowerbound, upperbound;

  cout << "Enter the value for the lower bound: " ;
  cin >> lowerbound;

  cout << "Enter the value for the upper bound ( lower < upper ) : " ;
  cin >> upperbound;

  cout << "The random value between " << lowerbound << " and "<< upperbound 
       << " is " << randomBetween << endl;

  return EXIT_SUCCESS;
}

int randomBetween( int lowerBound, int upperBound )
{
  int upperbound, lowerbound;
  int randomBetween = rand() % (upperbound-lowerbound) + upperbound;
  return randomBetween;
}

当我编译程序并输入下限和上限的值时,我得到的答案是:00E9131B

4

4 回答 4

3

这个:

cout << "The random value between " << lowerbound << " and "<< upperbound 
     << " is " << randomBetween << endl

应该:

cout << "The random value between " << lowerbound << " and "<< upperbound 
     << " is " << randomBetween(lowerbound,uppderbound) << endl

在 randomBetween 函数中,您不需要声明变量上限和下限,因为它们已经传递给函数。

此外,将变量命名为与函数同名的做法也被认为是不好的做法,因此您可能应该在 randomBetween 函数中重命名“randomBetween”变量。

您可能想查看 rand() 函数的参考,因为您的 randomBetween 函数不会返回所需范围内的值:

http://en.cppreference.com/w/cpp/numeric/random/rand

我不确定您是否将它从您发布的内容中排除,但不要忘记包含“cstdlib”和“iostream”库:

#include<iostream>
#include<cstdlib>
using namespace std;
于 2013-10-08T03:10:50.773 回答
3

替换这一行

cout << "The random value between " << lowerbound << " and "<< upperbound 
   << " is " << randomBetween << endl;

有了这个

cout << "The random value between " << lowerbound << " and "<< upperbound 
   << " is " << randomBetween(lowerbound, upperbound) << endl;

你正在做的是打印出函数地址。您需要使用参数调用该函数。


也改变这个

int randomBetween( int lowerBound, int upperBound )
{
  int upperbound, lowerbound;
  int randomBetween = rand() % (upperbound-lowerbound) + upperbound;
  return randomBetween;
}

int randomBetween( int lowerBound, int upperBound )
{
  int randomBetween = rand() % (upperbound-lowerbound) + upperbound;
  return randomBetween;
}

您不需要在函数中再次重新声明参数

于 2013-10-08T03:10:59.407 回答
0

您的函数不使用参数,

int randomBetween( int lowerBound, int upperBound )
{
    int randomBetween = rand() % (upperBound-lowerBound) + upperBound;
    return randomBetween;
}

并用参数调用函数,

... << randomBetween(lowerbound, upperbound) <<endl;
于 2013-10-08T03:16:27.117 回答
0

首先,您的 C++ 代码包含一些错误。看起来您返回了函数的地址。即使 C++ 中的函数不带参数,在调用时,您始终必须在函数名后面加上括号:function(). 在您的情况下,它确实需要正确传递给它的参数function(param0, param1, param2)
看起来您假设是因为您命名了变量lowerbound并且upperbound与函数参数相同,它将被隐式传递,但这不是 C++ 的工作方式。
但是,您可以将lowerboundand定义upperbound为全局变量,而不是让您的函数randomBetween()接受任何参数。您可以通过在函数范围之外定义 then 来设置全局变量。
您还需要初始化所有变量。当你定义它们时,只需设置lowerboundupperbound到。0

于 2013-10-08T03:20:51.220 回答