程序纠错
题目:
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
我编的程序:
#include<iostream.h>
const N=5;
void main()
{
int a[N]={1,2,3,4,5};
int i,j=0,n=N;
do
{
for(i=1;i<=N;i++)
if(a[i]!=0)
{
j++;
if(j%3==0){a[i]=0;
n--;}
}
}while(n>2);
for(i=1;i<=N;i++)
if(a[i]!=0)cout<<i<<" ";
cout<<endl;
}
/////////运行结果正确,可是跳出“**程序遇到问题需要关闭的对话框”,用的vc++6.0.
请问问题出在哪?
[解决办法]
for(i=1;i <=N;i++) ===>>>for( i=0; i < N; i++ )
[解决办法]
a[N]的范围是0---N-1;
这里是0---4;
你赋值越界了
[解决办法]
你循环条件是 i=1 i <=N
要知道数组下表是从0开始
i = 0; i<N;