zoukankan      html  css  js  c++  java
  • 现有1~100 共一百个自然数,已随机放入一个有98个元素的数组a[98].要求写出一个尽量简单的方案找出没有被放入数组的那2个数,并在屏幕上打印这2个数

     1  void test7()
     2         {
     3             try
     4             {
     5                 int[] a = new int[98];
     6                 int[] num = new int[100];
     7                 int[] num1 = new int[100];
     8                 int countnum = 0;
     9                 int counta = 0;
    10                 int i;
    11                 for (i = 0; i < num.Length; i++)
    12                 {
    13                     num[i] = i + 1;
    14                     num1[i] = i + 1;//方法1用到
    15                     countnum = num[i] + countnum;
    16                 }
    17                 //随机放入
    18                 Random rand = new Random();
    19                 int temp; 
    20                 for (i = 0; i < a.Length; i++)
    21                 {
    22                     while (true)
    23                     {
    24                         temp = rand.Next(100);
    25                         if (num[temp] != 0)
    26                         {
    27                             num[temp] = 0;
    28                             a[i] = temp + 1;
    29                             break;
    30                         }
    31                     }
    32                 } 
    33                 foreach (int aa in a)
    34                 {
    35                     counta = counta + aa;
    36 
    37                     Console.WriteLine(aa+";");
    38                 }
    39 
    40                 #region 方法1 推荐,这才是插入完,再查找
    41                 int diff = countnum - counta;
    42                 List<int> list = num.Where(n => num.Contains(diff - n)).ToList<int>();//验证,num中只剩两个没变0的
    43                 List<int> list1 = num1.Where(n => num1.Contains(diff - n) && !a.Contains(n)).ToList<int>();//查找,针对的是没有处理过得原数组
    44                 Console.WriteLine("list.count:"+list.Count);
    45                 Console.WriteLine("list1.count:" + list1.Count);
    46                 foreach (int nn in list)
    47                 {
    48                     //if (!a.Contains(nn))
    49                     //{
    50                     Console.WriteLine("没有被放入数组的数(list):"); 
    51                         Console.WriteLine(nn);
    52                         //Console.WriteLine("bingo");
    53                     //}
    54                 }
    55                 foreach (int nn in list1)
    56                 { 
    57                     //if (!a.Contains(nn))
    58                     //{
    59                     Console.WriteLine("没有被放入数组的数(list1):"); 
    60                         Console.WriteLine(nn);
    61                         //Console.WriteLine("bingo1");
    62                     //}
    63                 }
    64                 #endregion
    65 
    66                 #region 方法2 太投机取巧了,其实是在随机插入的过程中把插入的全置为0,剩下的就是没插入的
    67                 for (i = 0; i < a.Length; i++)
    68                     if (num[a[i] - 1] != 0)
    69                         num[a[i] - 1] = 0;
    70                 //输出
    71                 for (i = 0; i < a.Length; i++)
    72                 {
    73                     if (i % 10 == 0 && i > 0)
    74                         System.Console.WriteLine();
    75                     System.Console.Write("{0,4}", a[i]);
    76                 }
    77                 System.Console.WriteLine();
    78                 System.Console.Write("没有被放入数组的2个数:");
    79                 for (i = 0; i < num.Length; i++)
    80                     if (num[i] != 0)
    81                         System.Console.Write("{0,4}", num[i]);
    82                 System.Console.WriteLine();
    83                 #endregion
    84             }
    85             catch (Exception)
    86             {
    87 
    88                 throw;
    89             }
    90         }
  • 相关阅读:
    C++三大特性之多态
    内向者沟通圣经:4P法(Preparation,Presence,Push,Practice)
    RTP/RTCP、TCP、UDP、RTMP、RTSP
    网络七层协议
    预防U盘被病毒侵害的方法
    Win8安装程序出现2502、2503错误解决方法
    小L的区间求和
    【剑指offer-12】矩阵中的路径
    【剑指offer】数值的整数次方
    【剑指offer】二进制中1的个数
  • 原文地址:https://www.cnblogs.com/dyfisgod/p/7112324.html
Copyright © 2011-2022 走看看