练习
(1)如果两个整数存储在变量 var1
和 var2
中,该进行什么样的布尔测试,看看其中的一个(但不是两个)是否大于10?
答案:
(var > 10) ^ (var2 > 10) [AU: wrong sign]
(2)编写一个应用程序,其中包含练习(1)中的逻辑,要求用户输入两个数字,并显示它们,但拒绝接受两个数字都大于 10 的情况,并要求用户重新输入。
答案:
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); }
注意使用另一个逻辑时,执行效果更好,代码如下所示:
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)下面的代码存在什么错误?
int i;
for (i = 1; i <= 10; i++)
{
if((i % 2) = 0)
continue;
Console.WriteLine(i);
}
答案:
int i; for (i = 1; i <= 10; i++) { if((i % 2) == 0) continue; Console.WriteLine(i); } 使用了赋值运算符=而不是布尔运算符==,是一个十分常见的错误。
🔚