
2.1 数据在哪里
如果使用C语言编写程序来解决问题,首先就要寻找数据。在生活中,小到个人工资,大到火箭的发射轨迹都涉及了数据。本节将讲解如何寻找、分析和整理这些数据。
2.1.1 数据的形式

数据会以不同的形式存在于计算机之中。数据的形式大概分为以下3种。
1. 文件数据
文件数据是最直观的,是以文件的形式单独存在的。这种数据是用户可以直接看到的。只要用户直接打开数据,计算机的主机就会读取该数据,并将其转化为二进制数进行运算,然后将运算结果通过显示器反馈给用户。
例如,计算机中的文档、图片、电影、歌曲等数据都是可以被用户直接看到的单独文件数据,如图2.1所示。

图2.1 文件数据处理
2. 网络数据
网络数据是存放于网络服务器端的数据。用户要通过浏览器将网络数据下载到计算机中,然后计算机对其进行读取并运算,从而显示器显示出网页内容。
例如,用户可以浏览网站上的图片、文字等可见的网络数据,但在浏览过程中,浏览器下载或上传的网络请求数据及加密数据,对于用户都是不可见的,如图2.2所示。
3. 应用程序数据
应用程序数据是将多种数据集合为一个可执行文件形式的数据。当打开这个可执行文件后,计算机会读取可执行文件中存放的数据,然后将其转化为二进制数进行运算,最终将运算结果通过显示器反馈给用户。

图2.2 网络数据处理
例如,在玩电子设备上的游戏时,整个游戏中的数据传递和使用过程都是不可见的,而且用户只能看到每次操作后的运算结果,如图2.3所示。

图2.3 应用程序数据处理
总之,无论数据以何种形式存在,只要拥有正确的获取方式,就能得到对应的数据。
2.1.2 寻找数据

寻找数据就和寻找矿藏一样,有的数据轻而易举就可以被发现,而有的数据就要通过分析已知条件才能被获取得到。根据寻找数据的难度,可以将数据分为以下3种。
1. 显而易见的数据
大多数的数据都是简单的、显而易见的,而且在我们的举手投足之间就可以被找到。
例如,小明的体重为25kg,这类数据就是显而易见的,可以被直接提取到,如图2.4所示。

图2.4 显而易见的数据
2. 隐藏于生活常识中的数据
有一些数据要借助生活常识才能被获取到。例如,小明想要知道北京到长春的火车时刻表。这类数据就是隐藏在生活常识之中的,如表2.1所示。
表2.1 隐藏于生活常识中的数据

3. “看不到”的数据
还有一些数据,对于人们来说是看不到的,但是确实存在。想要获取这类数据的过程往往非常复杂。
例如,通过遥控器可以控制电视机换台。在这条信息中,只有专业的人员经过分析,才能获取遥控器发送的数据,而普通人是无法获取到的,如表2.2所示。
表2.2 “看不到”的数据

总而言之,就像做题一样,如果想要找到答案,首先要获取到题目中有用的数据,然后才是解答题目。所以,获取到准确的数据是解决问题的第一步,也是最重要的一步。
2.1.3 数据的分类

获取数据是为了使用数据,而将数据分类能让人们更好的使用数据。例如,在超市售卖的商品中,薯片、巧克力、糖果都属于休闲食品,而锅、碗、瓢、盆属于厨房用品。这样分类后,可以方便人们选购商品。
1. 数据是否已知
根据数据是否已知,可以将数据划分为以下两类。
❑ 已知数据是值已经确定的。例如,买了10个苹果,10就是已知数据。在C语言中,已知数据可以用字面量、直接数或常量表示。
❑ 未知数据是数据存在但不确定具体值的。例如,有一堆煤炭,我们不知道其重量,但是其确实存在。在C语言中,这种数据可以使用变量表示。
2. 数据类型
数据不同,其包含的信息也不同。这些信息可能是整数、小数、文本、状态等多种类型,如年龄(整数)、价格(小数)、名字(文本)。在C语言中,对应不同数据类型的数据有不同的表示方法。