【发布时间】:2015-08-06 06:22:22
【问题描述】:
编辑:发布所有内容,因为它变得非常奇怪。
using namespace std;
int main()
{
int doors = -1;
int jumper = 1;
bool isOpen[100];
string tf;
for(int i = 0 ; i < 100; i++){
isOpen[i] = false;
}
while(jumper < 100){
while(doors < 100){
if(isOpen[doors + jumper] == true){
isOpen[doors + jumper] = false;
}
else{
isOpen[doors + jumper] = true;
}
doors += jumper;
cout << doors << endl;
}
doors = -1;
jumper+=1;
}
for(int i = 0; i < 100; i++){
if(isOpen[i]){
tf = "open";
}
else{
tf = "closed.";
}
cout << "Door " << i << " is " << tf << endl;
}
return 0;
}
所以我对这段代码有一个非常奇怪的问题。 它应该通过一个包含 100 个项目的数组。 0 - 99 一个,然后是拖,然后是三个,等等。但是,在 a = 10 之后,它会上升到 266。 谁能告诉我为什么?
编辑: 仅当注释掉 for 循环时才会出现此问题。当它留在代码中时,它会做同样的事情,但直到 19 岁才会发生。 如果我注释掉“字符串 tf;”同样,它继续在 99 处循环。 这一切都基于门数。 我不确定为什么其中任何一个都应该是两个都没有连接到的循环的一个因素。
【问题讨论】:
-
定义“芽”。为什么要将 b 初始化为 -1?
-
您使用什么语言?这闻起来像 C,但话说回来,Jay Gosling 总是闻起来有点像 Bjourne Strousup。
-
@Amit 我的意思是 10 之后的下一个数字是 266。因为我正在遍历数组 arr[a + b]。所以它从 0 开始到 99。我将发布整个代码,因为现在发生了更奇怪的事情。
-
在即将进行的编辑之前与自己玩猜测:由于缓冲区溢出导致的内存垃圾
-
我刚刚否决了您的问题,因为您更改了代码,从而大大改变了所有已经完成的工作。