C语言程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 一个简单的C程序

本书将从第2章开始详细讨论各种C程序结构,讨论程序设计的各方面情况和问题。在开始这些讨论之前,先看一个简单的程序例子,看看用C语言写出的程序是什么样子,然后从它出发解释一些程序开发中的问题。下面是一个简单程序:

    #include <stdio.h>
    main()
    {
        printf("Good morning! \n");
    }

几点说明:

● #include称为文件包含命令。

● 扩展名为“.h”的文件称为头文件。

● main是主函数的函数名,表示这是一个主函数。

● 每一个C源程序都必须有且只能有一个主函数(main函数)。

● 一个函数包括函数首部(如main())和函数体(程序中{}括起来的部分)两部分。

● 函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。

● printf函数是一个由系统定义的标准函数,可在程序中直接调用。

用C语言写的程序简称为C程序。上面这个简单程序可分为两个基本部分:第一行是个特殊行,说明程序用到C语言系统提供的标准功能,为此要参考标准库文件stdio.h,有关细节在以后的章节中介绍;其余行是程序基本部分,描述程序所完成的工作。该程序的运行结果就是在显示器屏幕上输出一行文字“Good morning! ”。

1.4.1 C程序的加工和执行

C语言是高级程序语言,用C语言写出的程序通常称作源程序。C程序容易使用、书写和阅读,但计算机却不能直接执行,因为计算机只能识别和执行特定二进制形式的机器语言程序。为使计算机能完成某个C源程序所描述的工作,就必须首先把这个源程序(如上面简单例子)转换成二进制形式的机器语言程序,这种转换由C语言系统完成。由源程序到机器语言程序的转换过程称为“C程序的加工”。每个C语言系统都具有加工C源程序的功能,包括“编译程序”“连接程序”等,系统里还可能有一些其他的程序或功能模块。

程序加工通常分两步完成:第一步,由编译程序对源程序文件进行分析和处理,生成相应的机器语言目标模块,由目标模块构成的代码文件称为目标文件。目标文件还不能执行,因为其中缺少C程序运行所需要的一个公共部分——C程序的运行系统。此外,一般C程序里都要使用函数库提供的某些功能,例如前面例子中用到标准函数库的一个输出函数(printf是该函数的名字)。为构造出完整的可以运行的程序,还需要第二步加工——连接。这一工作由连接程序完成,将编译得到的目标模块与其他必要部分(运行系统、函数库提供的功能模块等)拼装起来,做成可执行程序。图1-3说明了C程序的基本加工过程。

对前面简单C程序的例子进行加工后,就能得到一个与之对应的、可以在计算机上执行的程序。启动运行这个可执行程序,将能看到它的执行结果。这个程序的执行将得到一行输出,通常显示在计算机屏幕上或者图形用户界面上的特定窗口里:

图1-3

        Good morning!

如果修改程序,将双引号里的一串字符换成其他内容,就可以让它输出那些内容。例如:

    #include <stdio.h>
    main ()
    {
        printf("Hello, world! \n");
    }

这一程序加工后执行,就会输出:

    Hello, world!

C程序加工过程的启动方式由具体C语言系统确定,具体情况请查看有关的系统手册,有时需要直接用操作系统命令形式启动各种基本加工工作(启动编译系统、连接系统等)。具体过程是先用一个命令要求编译源程序,再用另一个命令做连接。其中除了要把源程序文件名作为命令参数外,还常常需要输入一些其他参数。这些命令的书写形式比较复杂,使用不太方便,此外,为了输入、编辑和修改程序,还需要另用一个编辑系统。

1.4.2 程序格式

实际的C程序可能比前面的简单例子长得多。一般来说,一个C程序是由一系列可打印(可显示)字符构成的,人们一般用普通编辑器或者用专门的程序开发系统写程序、修改程序。组成程序的字符序列通常按照人阅读的习惯被分为一些行(就是在字符序列中插进一些换行符),每行长度不必相同。注意:上面例子中把花括号内的部分看做下一层次内容后退几格写出,就是希望程序的表面形式能较好反映程序的内部层次结构。

C语言是一种“自由格式”语言,除了若干简单限制外,写程序的人完全可以根据自己的想法和需要选择程序格式,选择在哪里换行,在哪里增加空格等。这些格式变化并不影响程序的意义。没规定程序格式并不说明格式不重要。程序的一个重要作用是给人看的,首先是写程序的人自己要看。对于阅读而言,程序格式非常重要。在多年的程序设计实践中,人们在这方面取得了统一认识:由于程序可能很长,结构可能很复杂,因此程序必须采用良好的格式写出,所用格式应能很好体现程序的层次结构,反映各个部分间的关系。

关于程序格式,人们普遍采用的方式是:① 在程序里适当加入空行,分隔程序中处于同一层次的不同部分;② 同层次不同部分对齐排列,下一层次的内容通过适当退格(在一行开始加空格),使程序结构更清晰;③ 在程序里增加一些说明性信息,这方面情况将在后面介绍。上面程序例子的书写形式就符合这些要求。

开始学习程序设计时就应养成注意程序格式的习惯。虽然对开始的小程序来说,采用良好格式的优势并不明显,但对稍大一点的程序,情况就不一样了。有人为了方便,根本不关心程序的格式,想的只是少输入几个空格或换行,这样做的结果是使自己在随后的程序调试检查中遇到更多麻烦。目前多数程序设计语言(包括C语言)都是自由格式语言,这就使人能够方便地根据自己的需要和习惯写出具有良好格式的程序来。