产生20个100之内的随机数,然后按大小排序
 有13个人,1,2,3 报数,到三的人出局,然后在继续报数
得到最后剩下的那个人原始编号 就是他开始在那13里面是第几个求代码和解释·· 谢谢··

解决方案 »

  1.   

    for循环
    Random ran= new Random(DateTime.Now.Millisecond);
    ran.Next(1,100);
    http://topic.csdn.net/u/20090906/21/0e56dc96-e19f-4b20-bb04-d6d6e6a0c86a.html?49458
      

  2.   

    1.产生随机数。用rand.Next(0,100),要是不能重复的话,可以放个hash,进行判断
    2,排序,很简单,网上代码到处都是
    3.int i=1;
    List<int> list=new List<int>();
    for(int j=0;j<rand.Length;j++)
    {
    if(i==3)
    {
    list.Add(rand[j]);
    i=1;
    }else
    {
    i++;
    }
    }
    得到最后剩下的那个人原始编号 就是他开始在那13里面是第几个
    这句话不明白什么意思。
      

  3.   

    hehehehehe 要现成的代码怎么不好?难道开始学习的时候就会写代码吗?
      

  4.   

    private void fTest()
    {
    int[] iArray = new int[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
    int iCount = 13; ////数组的长度,用于记录非0的数还有多少个
    int k = 0; ////记录当前报数到了哪里
    int j = 1; ////记录报数是否到了3 while( iCount > 1 ) ////当非0的数只剩一个时,跳出循环
    {
    for( int i = k; i < 13; i++ ) ////每次都从k位开始报数
    {
    if( iArray[i] != 0 && j == 3) ////如果j=3 && 数组的值不是0,则进行如下设置
    {
    iArray[i] = 0; ////将数组值设置成0
    j = 1; ////将报数设置成1
    k = i+1; ////记录循环访问到哪个位置
    iCount--; ////非0数的数量-1
    break;
    }
    else
    {
    j++; ////报数加1
    if( k == 12 )
    {
    k++; ////k++这句是当记录k=12时,k+1等于13,循环从头开始,但是报数j仍然取自己的值
    }
    }
    } if( k > 12 )
    {
    k = k - 13; ////当k>12时,从数组的开头开始继续报数
    }
    } for( int i = 0; i < iArray.Length; i++ )/////将最后的数取出来
    {
    if( iArray[i] != 0 )
    {
    TextBox1.Text = iArray[i].ToString();
    break;
    }
    }
    }最后得出的数是13,在。net 2003上测试通过
    楼主自己在优化一下
    思路还有:
    堆栈
    动态数组等