练习

(1)如果两个整数存储在变量 var1var2 中,该进行什么样的布尔测试,看看其中的一个(但不是两个)是否大于10?

答案:

  1. (var > 10) ^ (var2 > 10)
    [AU: wrong sign]


(2)编写一个应用程序,其中包含练习(1)中的逻辑,要求用户输入两个数字,并显示它们,但拒绝接受两个数字都大于 10 的情况,并要求用户重新输入。

答案:

  1. static void Main(string[] args)
    {
    bool numbersOK = false;
    double var1, var2;
    var1 = 0;
    var2 = 0;
    while(!numbersOK)
    {
    Console.WriteLine("Give me a number:");
    var1 = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine("Give me another number:");
    var2 = Convert.ToDouble(Console.ReadLine());
    if((var1 > 10) ^ (var2 > 10))
    {
    numbersOK = true;
    }
    else
    {
    if((var1 <= 10) && (var2 <= 10))
    {
    numbersOK = true;
    }
    else
    {
    Console.WriteLine("Only one number may be greater than 10.");
    }
    }
    }
    Console.WriteLine("You entered {0} and {1}.", var1, var2);
    }


注意使用另一个逻辑时,执行效果更好,代码如下所示:

  1. static void Main(string[] args)
    {
    bool numbersOK = false;
    double var1, var2;
    var1 = 0;
    var2 = 0;
    while(!numbersOK)
    {
    Console.WriteLine("Give me a number:");
    var1 = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine("Give me another number:");
    var2 = Convert.ToDouble(Console.ReadLine());
    if((var1 > 10) && (var2 > 10))
    {
    Console.WriteLine("Only one number may be greater than 10.");
    }
    else
    {
    numbersOK = true;
    }
    }
    Console.WriteLine("You entered {0} and {1}.", var1, var2);
    }


(3)下面的代码存在什么错误?

  1. int i;
  2. for (i = 1; i <= 10; i++)
  3. {
  4. if((i % 2) = 0)
  5. continue;
  6. Console.WriteLine(i);
  7. }
答案:

  1. int i;
    for (i = 1; i <= 10; i++)
    {
    if((i % 2) == 0)
    continue;
    Console.WriteLine(i);
    }
    使用了赋值运算符=而不是布尔运算符==,是一个十分常见的错误。