C# 中1-100数列中,可能中间缺少几个数,请问如何找出缺少的数字?

解决方案 »

  1.   


                int[] a = { 1, 5, 87, 2, 55 };
                int[] b = new int[101];
                for (int i = 0; i < a.Length; i++)
                    b[a[i]] = 1;
                for (int i = 1; i < b.Length; i++)
                    if (b[i] != 1)
                        Console.Write("{0},", i);
                Console.ReadLine();
      

  2.   

    想了一个,哈哈哈
    先把这个序列循环放进一个字典中,主键就是1-100
    然后再循环这个字段
    for(int i=1;i<=100;i++)
    {
          try
          {
                dic[i]...
          }
          catch()
          {
                //出错的就是少的。
          }
    }
      

  3.   


    int[] a = { 1, 5, 87, 2, 55 };
    ArrayList result=new ArrayList ();
    for(int i=1;i<=100;i++)
    {
                     if(!a.Contains(i))      }
    {
    result.Add(i);
    }
          }
      

  4.   

    int[] num={2,15,48,68,77,88,95};
    num.sort();//对数组排序
    int[] newn=new int[100];//用来放结果的
    int index=0;//记录存到哪个下标位了
    int j=1;
    for(int i=0;i<num.length;i++)
    {
      for(;j<100;j++)
      {
        if(num[i]==j)
        {
          //遇到相等的,就换下一个数
          break;
        }
        newn[index]=j;
        index++;
      }
    }
    看看这个行不,还没学过 ArrayList !!!
      

  5.   

    int[] a = { 1, 5, 87, 2, 55 };var result = Enumerable.Range(1, 100).Except(a);foreach (int x in result)
        Console.WriteLine(x);
      

  6.   

    最笨的方法:
     ArrayList a = new ArrayList();
                int num=1;
                a.Add(num);//这里把你要检查的数据添加进去
                int[] mask = new int[100];//这个数组是1,23……100个整数
                for (int i = 1; i <= 100; i++)
                {
                    if (a.Contains(i))
                    {
                        mask[i] = 0;
                    }
                    else
                        continue;
                }
                for (int j = 0; j < 100; j++)
                {
                    if (mask[j] != 0)
                        Console.WriteLine("This number is not exist!----{0}", mask[j]);
                }
      

  7.   

    我想到两种方式,方式一:先升序排序,再从小到大开始遍历查询,缺哪个数哪个数即为缺少的数
    假设数字不全的数组为Group1 
    //冒泡升序排序
    for(int i = 0; i< Group1.length; i++)
    {
       for(int j = 0; j < Group1.length - i - 1; j ++)
       {
          if(Group1[j] > Group1[j+1])
          {
             int temp = Group1[j+1];
             Group1[j+1] = Group1[j];
             Group1[j] = temp;
          }
       }
    }
    ///找出缺少的
    int groupindex = 0;
    for(int i = 1;i<=100; i++)
    {
       if(Group1[groupindex] == i)
       {
          groupindex++;
       }
       else
       {
           //从这里输出结果
           Console.WriteLine("This number is not exist!----" + i.ToString());
       }
    }
    方法二:利用数组下标,未赋值为1的肯定是缺少的
    int[] grouptemp = new int[100];
    for(int i = 0; i < 100; i++)
    {
       grouptemp[i] = 1000; 
    }
    for(int i = 0; i<Group1.length;i++)
    {
       grouptemp[Group1[i]] = 1;
    }
    for(int i = 0;i < 100; i++)
    {
        if(grouptemp[i] == 1000)
        {
            //从这里输出结果
            Console.WriteLine("This number is not exist!----" + (i+1).ToString());
        }
    }