我正在上网。
作业问题是:
使用rand()函数打印介于1和100之间的前50个数字。尝试将每5个随机数放在一行中。使用setw()函数对齐。
我目前有以下内容。我知道这是一个无限循环而错误我认为问题出在我的if
语句中。
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
int main() {
int random_number;
srand(time(NULL));
random_number = rand() % 100 + 1;
cout << "50 random numbers are:" << endl;
while (random_number < 100, rand() % 100 + 1)
{
cout << random_number << setw(5) << endl;
if (random_number == 100)
break;
}
system("pause");
}
答案 0 :(得分:1)
您的while
有问题,请参阅之前的评论。这应该有用。
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
int main() {
int random_number;
srand(time(NULL));
cout << "50 random numbers are:" << endl;
for(int i=0; i<50; i++)
{
random_number = rand() % 100 + 1;
cout << setw(5) << random_number << endl;
}
system("pause");
}
或者,如果您想使用while
,
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
int main() {
int random_number;
srand(time(NULL));
cout << "50 random numbers are:" << endl;
int counter=0;
int random_number;
while(counter<50)
{
counter++;
random_number = rand() % 100 + 1;
cout << setw(5) << random_number << endl;
}
system("pause");
}
但只需使用for
,因为它更紧凑。
答案 1 :(得分:1)
我理解上面的许多代码都适合op。因为我们可以看到op是编码的新手,这是我的简化尝试。
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main() {
int random_number, count=0; //Using count as a counter.
srand(time(NULL));
cout << "50 random numbers are:" << endl;
//checking two conditions. count and random number generated is less than 100
while (count <50)
{
if((random_number = rand() % 100 + 1) > 100 ) continue;
count++;
cout<< setw(5) << random_number ;
//Try to put every 5 random number in one line only.
if (count %5==0) cout<<endl;
}
}
代码问题:
感谢。
答案 2 :(得分:0)
由于这是作业,我不能发表直接答案。但是,这应该算是现代c ++的一个很好的演示:
#include <boost/spirit/include/karma.hpp>
#include <boost/iterator/function_input_iterator.hpp>
#include <boost/random.hpp>
boost::random::variate_generator<boost::mt19937, boost::uniform_int<int> > rdngen(
boost::mt19937(), boost::uniform_int<int>(1, 1000));
int main() {
auto f = boost::make_function_input_iterator(rdngen, 0),
l = boost::make_function_input_iterator(rdngen, 100);
auto range = boost::make_iterator_range(f, l);
using namespace boost::spirit::karma;
std::cout << format_delimited(columns(5) [ right_align(10) [ *auto_ ] ], "\t", range) << "\n";
}
答案 3 :(得分:0)
我认为,对于你发布的内容,你想打印1到100之间的50个随机数,不是吗?如果是这样,我注意到错误是在while循环的leave条件下。您需要一个变量来计算显示的数字,您应该检查此变量是否已达到显示的50个数字。
srand(time(NULL));
random_number = rand() % 100 + 1;
cout << "50 random numbers are:" << endl;
for (int i = 0;i<50;++i)
{
random_number = rand() % 100 + 1
cout << random_number << setw(5) << endl;
// if (random_number == 100)
// break;
}
system("pause");
在您编写离开条件的方式中,它永远不会离开。退出循环时必须获得100
我希望这篇文章对你有所帮助 谢谢你。