5-6 算法——查找(二)
本节编程练习不计算学习进度,请电脑登录imooc.com操作

算法——查找(二)

上一节我们学习查找,是把符合条件的数据打印出来。有的时候我们不想打印,只想知道有没有符合条件的数据,该怎么做呢?下面的例子查找一组人名,如果人名中包含“诺贝尔”,就打印“有诺贝尔”,如果没有,就打印“木有木有”:

通过源代码可以看到,数组的第二个元素就是要查找的“诺贝尔”,运行结果是这样的:

这段代码有一个逻辑错误,事实上,数组中只要有一个“诺贝尔”就可以认定“有诺贝尔”,但必须所有的名字都不是“诺贝尔”,才能认定“木有木有”。

或者这么说:一组数据中只要有一个符合条件,就可以认为“符合条件的数据”;但只有一组数据中每一个都不符合条件,才能认为“没有符合条件的数据”——一个相等即为"有",全都不等才是"无"

那么,到底应当怎样判断有无呢?请看下面的代码:

变量 hasNbr 起到了关键作用:记录筛选结果。它的初始值为 false ,表示没有,如果循环中找到了相等的数据,再修改 hasNbr 的值为 true ,表示。循环结束后,只要看看变量 hasNbr 是 true 还是 false ,就知道循环中是否修改过。运行结果如下(有诺贝尔):

删去数组中的“诺贝尔”,再次运行程序:

 

任务

右边代码检查了一组考试分数,看有没有考试不及格的,请仔细阅读代码,了解程序逻辑,然后在第 18 行(如果需要可以写多行)填写代码,完成功能。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace Test
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. int[] score = { 85,76,98,100,62,60};//分数
  12. bool hasNopass = false;//记录是否有不及格的,默认没有
  13. for (int i = 0; i < score.Length; i++)
  14. {
  15. if (score[i] < 60)//如果有不及格的
  16. {
  17. //记录有不及格的
  18.  
  19. }
  20. }
  21. if (hasNopass)
  22. Console.WriteLine("有人不及格");
  23. else
  24. Console.WriteLine("都及格啦!");
  25. }
  26. }
  27. }
下一节