注册 登录
编程论坛 C++教室

出圈问题,程序错误

yqiong 发布于 2008-03-18 10:42, 792 次点击
程序错在哪了?
#include <iostream.h>
main()
{
    int a[101];
    int i,j,t=0,n=0;
    for(i=1;i<=100;i++)//为100个人编号
       a[i]=i;
       i=1;
    while(n<100)
    {
        if(a[i]!=0)//t用于循环记数
            t++;
        if(t==3) //t为3时退出者标为0,记数重新开始,退出人数加一
        {a[i]=0; t=0; n++;}
      i++;
      if(i==100)i=1;//当循环到最后时又重新开始记数
    }
        i=1;
    while(a[i]==0) i++;//找到数组中唯一没被标为0的元素
        cout<<a[i];

}

[[it] 本帖最后由 yqiong 于 2008-3-18 12:33 编辑 [/it]]
7 回复
#2
yqiong2008-03-18 12:35
以下是原题:
有n 个人围成一圈,顺序排号, 从第一个人开始报数(1-3),凡是报到3的人退出圈子,问最后留下的是原来的第几号的那位
#3
yqiong2008-03-18 12:35
怎么没人响应呀!
#4
sunkaidong2008-03-18 13:09
你去找找吧..我以前用循环链表写过..你写的很麻烦..容易混了条件..
#5
sunkaidong2008-03-18 13:29
#include <iostream.h>
main()
{
    int a[101];
    int i,t=1,n=0;
    for(i=1;i<101;i++)
       a[i]=i;
       i=0;
    while(1)
    {
        if(a[++i]!=0)
        {
            t++;
           if(t%3==0)
           {
            cout<<a[i]<<endl;
            a[i]=0;
            n++;
           }
      
           if(i>=100)i=1;//当循环到最后时又重新开始记数
           if(n==99) break;
        }
    }
        i=1;
    while(a[i++]==0);//找到数组中唯一没被标为0的元素
        cout<<a[i-1];

}
#6
yqiong2008-03-18 14:48
#include <iostream.h>
void main()
{
    int a[101];
    int i,t=0,n=0;
    for(i=1;i<=100;i++)//为100个人编号(1-100)
       a[i]=i;
    i=1;
    while(n<99)//n不应该大于99,为99时不循环
    {
        if(a[i]!=0)//t用于循环记数
            t++;
        if(t==3) //t为3时退出者标为0,记数重新开始,退出人数加一
        {a[i]=0; t=0; n++;}
      i++;
      if(i==100)i=1;//当循环到最后时又重新开始记数
    }

    i=1;
    while(a[i]==0) i++;//找到数组中唯一没被标为0的元素
        cout<<a[i];

}
#7
yqiong2008-03-18 14:51
上述运行结果为100,可6#的运行为1,这怎么回事呀?
定义的组数不一,6#是a[100],而上述的是a[101],但也不应该是这样的呀!
#8
sunkaidong2008-03-18 15:01
我的只是给你大概..只是给你看的..呵呵..你可能还要动动大脑..
1