一段总共才40行的代码,莫非灵异了?
我在做一个编程小题目,不过出了一个很奇怪的问题。我的代码如下。环境为 Vista + VC2005 Express
#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdlib.h>
#include <math.h>
using namespace System;
using namespace std;
#define TotalNumber 13 //定义总人数
#define Step 3 //定义剔除的步长
void main(){
int Person [TotalNumber] = {}; //定义人的数量,用数组实现。
int pointer = Step; //定义退出的数字指针。但不是指针类型。
for (int i = 1; i <= TotalNumber; i ++) {
//进行数据初始化。
Person [i] = i;
cout << Person [i] << endl;
}
cout << endl << Person [TotalNumber] << endl; //**********到这里还没有变**************
int Counter = 0; //用于限定循环次数
cout << endl << Person [TotalNumber] << endl; //***********到这里就变了***************
while (Counter < 1) {
pointer = pointer % TotalNumber; //只要超过总数,就从头开始。
if (Person [pointer] != 0) {
//如果正好不是 0,也就是说,应该退出
Person [pointer] = 0; //修改为 0,让他退出
pointer = pointer + Step; //指针后移一个步长。
}
else {
//如果正好是 0,也就是说,这个位置的人已经退出了
pointer ++; //指针后移一个位置。
}
Counter ++;
}
system("pause");
}
在第 22 行和第 24 行之内,奇怪的现象就出现了。我就是给一个变量进行了定义并赋值,却把数组中最后一个数的数值给改变了。到底是怎么回事呀?请高手帮我诊断。谢谢了。