不知道怎么形容这个问题,但是得不出结果

maguipeng1983 2005-10-07 04:08:54
#include "stdafx.h"
#include "iostream.h"

void main()
{
const int num =17;
int a[num];

for(int i=0; i<num; i++)
a[i] =i+1;

for(i=0; i<num; i++)
cout <<a[i] <<",";
cout <<endl;

int k=1;
i=-1;
while(1)
{
for(int j=1; j<4 ;) //这个语句
{
i=(i+1) %num;
if(a[i] !=0)
j++;
}

if(k ==num) break;

a[i]=0;
k++;
}

cout <<endl <<"No. " <<a[i] <<" won. " <<endl;

}

这是17个小孩围成圈,然后数数,逢3的倍数就离开.
这个代码可以通过,但我原来是用 for(int j=1; (j%3==0) ;) ,可是通过编译,确在运行的时候就死掉了.为什么?
for语句的第二个条件不是循环停止的条件嘛.我的想法是j++到3时候,刚好j%3==0成立,循环停止.为什么会出现这个错误?
...全文
126 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
carolx 2005-10-07
  • 打赏
  • 举报
回复
第 2个循环也可以改为:
for(int j=1; j%4; )//表示当 j=4时 循环结束
{
i=(i+1)%num;
if( a[i]!=0)
j++;
}
hawk_1982 2005-10-07
  • 打赏
  • 举报
回复
for的第二个条件不是循环停止条件,正好相反它是使循环成立的条件,for(int j=1; (j%3==0) ;) 意思是j%3==0时,循环继续

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧