目前工作在一个基本的数字生成程序,发现总奇数和偶数在它的结尾,而我学习C++.我目前有一个问题,我不能弄清楚我如何能编码的能力,找到并显示总奇数和偶数到我目前的代码.
当前代码:
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
// Providing a seed value
srand((unsigned) time(NULL));
// Loop to get 5 random numbers
for(int i=1; i<=6; i++){
// Generate random number between 10 and 20
int random = 10 + (rand() % 11);
// Print the random numbers
cout<<random<<endl;
return;
}
我尝试了一些东西,但似乎没有任何工作与我目前的代码。
1条答案
按热度按时间xnifntxz1#
好了,让我们编译代码,并处理对调用
rand()
生成的偶数和奇数进行计数所需的逻辑。for
循环声明后的大括号不匹配,例如for(int i=1; i<=6; i++){
(您没有关闭'}'
。rand()
生成的偶数和奇数的数量。i=1; i<=6
开始迭代,以便循环五次。虽然这捕获了正确的计数,它显示了对C/C++中索引的一个基本误解,并且它是将循环变量与数组一起使用时最常见的错误之一。(或分配的对象集合)是***零索引的***。这意味着五元素数组的有效索引是0-4
(包括0-4
)。为了循环五-倍并且没有超出数组边界的索引,正确的for
循环声明应该是for (int i = 0; i < 5; i++) { ... }
。与循环限制保持一致将帮助您避免以后出现问题,#define
一个或多个,或者因为这是C++使用constexpr
(即将在C23中以有限的方式介绍C)。你有5
,10
,11
--嗯?它们是什么?给予这些常量命名。(这样做,您提供了一个方便的位置来更改代码顶部的值……)总而言之,要找到
rand()
生成的偶数和奇数值的数量,您可以执行(添加上面的注解)类似于以下内容的操作:(**注意:**如注解中所讨论的,
random & 1
与random % 2 != 0
相同-使用您选择的任何一个。按位AND只是避免了计算 * 模 * 时固有的潜在除法。这是一个学术差异)编译字符串示例
始终在启用完全警告的情况下进行编译,并且在代码编译时没有警告之前不接受代码。
使用
g++
编译,您可以:对于Microsoft编译器,使用
/W3
足以启用完整警告,而/Wx
将导致任何警告被视为错误。示例使用/输出
C++提供伪随机数生成
参见Pseudo-random number generation。
要使用C++伪随机数生成库做同样的事情,只需选择要使用的随机数生成引擎(
std::mt19937
Mersenne Twister引擎是常见的选择),并使用该引擎在std::uniform_int_distribution中生成数字。其余部分相同,只是生成的是10
值而不是5
,例如。(编译同)
示例使用/输出
看一下这两个例子,希望它们能让你开始。书签cppreference.com并将其用作参考。请参阅:The Definitive C++ Book Guide and List拿起一本好的C++书籍,考虑到你开始使用的语言的C方法,这本书将是需要的。
如果你有问题就告诉我。