生日巧合计划C
Birthday Coincidence Program c++
这个问题的代码有什么问题?
假设人们进入空房间,直到一对人分享生日。写一个节目的生日,以模拟一个实验。该程序的输出是添加的人数,直到一对匹配生日为止。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
srand(time(0));
int year = 365;
int people = 0;
int daycnt = 0;
bool found[year];
while(daycnt<year){
people++;
int birthday = (int)(rand() % year+1);
cout<<birthday<<endl;
if (found[birthday] == true){
daycnt++;
cout<<people<<endl;
break;}
found[birthday] = true;
}
}
您尚未初始化布尔数组found
。访问非初始化的变量将导致不确定的行为。
您应该这样做:
bool found[year] = {false};
这将将数组的所有成员初始化为false
。
可变长度阵列不是标准的一部分。尽管海湾合作委员会以扩展为支持,但并非每个编译器都这样做。因此,您应该具有编译时常数作为数组的大小。
constexpr int year = 365;
未定义行为的另一个来源是以下检查:
if (found[birthday] == true)
由于birthday
范围从1
到365
,因此found[365]
将导致界限访问,因为有效索引范围从0
到364
。因此,您可以改用此支票:
if (found[birthday-1] == true)
相关文章:
- 如何让C++'tally up'结果并制定计划?
- C++窗口的计划问题
- 回复计划游戏结果不会显示
- 我正在努力处理多维数组输入和输出,我管理输入,但是打印无法按计划工作
- 如何从文本文件输出数据?(学生成绩单计划)
- 为什么在此计划中,我在所有情况下都获得 0%?
- Windows 并发运行时任务计划,但有例外
- C++航班预订计划
- 如何计划在将来时间运行的操作
- 自动(toCast)显式转换是否计划在未来C++标准?
- 任务计划程序库的预处理不起作用 - 多定义错误
- GLES计划资源索引/位置与统一索引/位置
- 我应该如何使用C++创建 Google 行动行动计划履行端点?
- 多米诺骨牌计划。我不知道如何将我的矢量拉到空白中以打印出来
- C++计划持续时间内(字体)资源的分配
- 是否有任何计划将"expects"添加到 std::optional?
- 我可以在计算数据计划上修复该C 程序的任何建议吗?
- 任务计划程序:设置运行级别时拒绝访问
- 基本C++计划提前结束
- 生日巧合计划C