示例:进一步理解变量
作为程序员,生来就要服务于客户,善于满足客户提出的各种各样稀奇古怪的要求。
今天,有一个客户对我们说:“我从小心算能力就差,你们能不能给我写一个程序,帮我提高心算能力?我的要求不算高,你们只要给我出几道两个整数的加法题,每个数不大于100,先让我心算,然后再把正确答案显示在屏幕上就行了。”
我们看看这个要求,不是很简单吗,写个程序给他:
using System;
namespace csdn.blog.aerosea
{
class Program
{
static void Main(string[] args)
{
Console.Write("45 + 45 = ? (按回车看正确答案)");
Console.ReadLine();
Console.WriteLine("45 + 45 = 90 (你做对了吗?)");
Console.WriteLine();
Console.WriteLine("按回车键结束。");
Console.ReadLine();
}
}
}
运行结果:
很快,我们写好了程序,编译之后,交到了客户的手里。客户使用之后很满意,对我们说:“很好,我要的就是这个结果,现在,我对45+45=90掌握得非常好了,我甚至不用想就能说出这道题的结果,太好了!”
紧接着,客户又给我们提出了一些改进的意见,希望在出题时,两个整数能自己变一变,不要老是千篇一律,都是45。
这个要求对我们来说,是一个新问题,怎样让计算机帮我们想出两个不同的数呢?好在有度娘之类的搜索引擎,问一下吧。让度娘搜索一下“C# 计算机想数”,没找到,再搜“C# 计算机产生数”,找到了!
这回我们知道了随机数这个概念,还知道了数不是计算机自己想出来的,而是使用了已经写好的程序算出来的,是产生出来的。
我们很快改好了程序,编译好之后交给客户。这一次,程序每次运行,给出的两个数都不一样了。
using System;
namespace csdn.blog.aerosea
{
class Program
{
static void Main(string[] args)
{
Random ran = new Random(); // 初始化随机数序列
// 查看帮助,可以知道下面的语句产生大于等于1且不大于99的正整数,区间是[1,100)。
int a = ran.Next(1, 100); // 产生第1个数
int b = ran.Next(1, 100); // 产生第2个数
Console.Write(a); // 显示第一个数,不换行
Console.Write(" + "); // 接着显示一个加号,在加号的两边各有一个空格
Console.Write(b); // 再显示第二个数
Console.Write(" = ? (按回车看正确答案)"); // 最后显示等于号和提示信息,不换行
Console.ReadLine(); // 按收客户的回车,收到回车后自动换行
Console.Write(a); // 在新的一行上显示第一个数,不换行
Console.Write(" + "); // 继续显示
Console.Write(b); // 继续显示
Console.Write(" = "); // 继续显示
Console.Write(a + b); // 继续显示
Console.WriteLine(" (你做对了吗?)"); // 继续显示,换行
Console.WriteLine(); // 显示一个空行
Console.WriteLine("按回车键结束。"); // 显示结束运行的提示信息
Console.ReadLine(); // 接收回车后结束程序运行
}
}
}
客户使用之后感到很满意,但是还有一些要求,我们跟客户约好以后抽时间再交流。
比较这两个版本的程序,第一版里面压根儿没有使用变量,就顺利完成了工作。到了第二版,如果不使用变量,我们似乎不太可能完成这件工作,因为让计算机产生的随机数,如果不使用变量把它记录下来,在以后的显示和运算中,我们就没有办法知道计算机产生的是哪两个数值。
所以,变量的主要功能,就是记录数值。在写程序的时候,可能不知道需要处理的具体是什么数值,但是知道这些数的类型、范围,我们就可以使用变量来记录这些数值,并使用变量代替它们进行处理,比如显示到屏幕上,或者进行计算。
当然,第二版的程序显示代码过于繁杂了,可以简化一下,具体的内容,我们以后会学到,先看看简化之后是什么样子吧。
using System;
namespace csdn.blog.aerosea
{
class Program
{
static void Main(string[] args)
{
Random ran = new Random(); // 初始化随机数序列
// 查看帮助,可以知道下面的语句产生大于等于1且不大于99的正整数,区间是[1,100)。
int a = ran.Next(1, 100); // 产生第1个数
int b = ran.Next(1, 100); // 产生第2个数
Console.Write("{0} + {1} = ? (按回车看正确答案)", a, b);
Console.ReadLine();
Console.WriteLine("{0} + {1} = {2} (你做对了吗?)", a, b, a + b);
Console.WriteLine();
Console.WriteLine("按回车键结束。");
Console.ReadLine();
}
}
}