了解和掌握程序的结构是编写程序的基础。一般来说,对于刚开始学习C语言的读者来讲,一个程序可以看成是由函数构成的。为了对程序中的有关内容进行说明,在程序的开头常包含有一些声明。下面通过几个简单的例程初步认识C语言程序的结构。
例1-1 一个简单的C语言程序如下:
在Visual C++ 2010环境下,运行程序(参阅1.5节)的结果如图1-1所示。
图1-1 程序运行结果
说明:
①注释。程序的第1行是注释语句。在C语言中,注释是程序员为了增加程序的可读性而增加的说明性信息,对程序的运行不起作用,对源程序进行编译时注释会被忽略。
在C89中,注释由“/*…*/”来完成,/*和*/中间所包含的任何内容即为注释部分。在C99中增加了单行注释功能,即注释也可以用“//”来表达,从“//”开始一直到本行结束的所有内容都属于注释部分。例如,本例首行注释语句可改写为:
本书的例程中两种注释都采用。
②main()函数。C语言程序由函数构成,函数是程序的基本单位。本例中只包含一个函数,函数名为main(),这是主函数。主函数是特殊函数,不可以随便取名,它的名字是唯一的。一个C语言程序可以包含多个函数,但是有且只有一个主函数。主函数可以放在C语言程序的任意位置,但任何一个C语言程序都是从主函数开始执行的,而且也在main()函数中结束。
在main()函数中通常还需要调用其他函数,这些被调用的函数可以是用户自己定义的函数,也可以是系统提供的库函数。因此,使用C语言编程实际要做到:编制不同功能的函数;调用这些函数。
③函数参数和返回值。函数名main后的一对括号中可以包含若干个参数,这里main()函数不带任何参数,但是括号仍然保留。
main()函数前面的int说明了主函数的返回值类型。在C99标准中,main()函数的返回值类型必须是int型。而C89标准中也可返回void 型。默认(即不写任何返回类型)则返回int。
需要注意的是,在C89标准中,如果函数没有参数,函数名后的小括号内可以什么也不写。但是C99标准规定,在无参函数的函数名后的小括号内加上void以明确声明该函数没有参数。本书所有main()函数采用C89标准。
④函数体。花括号{ }用来标识函数的开始和结束,必须成对出现。包含在一对花括号之间的部分就是函数体。函数的功能也就是函数体所要完成的工作。
函数体由语句组成,语句必须以西文分号结尾。函数体内的语句序列,在没有遇到跳转语句时,按先后顺序,依次执行。本例主函数main()仅包含两条语句,其中第一条语句是调用标准I/O库函数printf(),在显示器上输出相应的信息;第2条语句“return 0;”的功能是退出main()函数,返回操作系统。
⑤标准函数与头文件。printf()函数是一个由系统定义的标准输出库函数,其功能是在显示器上输出内容,实现输出操作。在C语言里没有专用的输入/输出语句,输入/输出操作都是通过函数实现的。C语言提供了大量的标准库函数供编程者使用。
从某种意义上说,使用C语言的过程就是不断熟悉各种库函数的过程。
当需要用到某些标准函数时,需要将对应的头文件用#include命令包含在程序首部。头文件提供了各类标准库函数的原型说明。本例由于使用了printf()函数,因此在程序第1行有#include <stdio.h>命令。
例1-2 已知圆的半径为8,求圆的周长和面积。
参考程序如下:
程序运行的结果如图1-2所示。
(www.xing528.com)
图1-2 程序运行结果
说明:
①程序中:
这两行语句分别定义了3个变量,称这两行语句为声明语句。接下来的几行语句则是对这些变量内容的操作,称这几行语句为执行语句。
C程序中的语句分为声明语句和执行语句两大部分,此处声明语句的作用是定义变量,为变量分配合适的存储单元。C程序中所有的变量都必须遵循先定义后使用的原则。
建议初学者在程序中不同类型的语句中间适当增加一些空行,以使程序结构清晰。
在C89标准中,变量的定义必须集中在函数或者语句块(语句“块”就是用一对大括号括起来的多个语句)的最前面,且需要在所有的可执行语句之前。但是在C99中,变量定义语句可以出现的位置相当灵活,可以在语句可能出现的任何地方定义变量。
不同编译器对C99标准的支持度不一样,如Microsoft Visual C++ 2010不完全支持C99标准。为了教材的适应性,本书依然采用C89标准在语句块前面位置集中定义变量的方法。
②语句1:
是一条赋值语句,把常数8赋给变量r。该语句属于C程序中的执行语句。在C语言中,一条语句可以占多行,一行也可以包含多条语句。
③语句2:
用printf()函数以指定格式(这里d示整型、f示实型)输出变量r、c、s中的值。
前面的两个例子都非常简单,只包含一个主函数main()。既然提到,函数是C程序的基本单位,那么什么是函数?其实,函数就是组成C语言程序的一个一个的功能模块,就像房子是由一块块砖头搭建起来的一样,C程序就是由一个个函数组建而来的。一般一个函数完成某一个相对独立的功能。在C语言中,满足函数定义格式要求的就是一个函数。函数包括函数头和函数体两部分。函数体内部又包含两部分内容:说明(变量定义)语句部分和执行语句部分。
下面给出一个含有自定义函数的程序。
例1-3 输入正方形的边长,求正方形的面积。
程序运行结果如图1-3所示。
图1-3 程序运行结果
说明:
①C语言是一种结构化程序设计语言。为了使程序结构清晰,往往将程序按功能的不同,划分为若干模块,各模块为函数形式。如本例题中正方形边长的输入、求正方形的面积、结果输出等工作。按照结构化程序设计思想,程序包括主函数main()和普通函数area()。其中,由主函数完成数据的输入/输出操作;普通函数area()为用户自定义函数,用于求正方形的面积。通过在主函数中调用area()用户自定义函数来实现正方形面积的求值。
②int area(int a)是用户自定义函数,其中a为形式参数,有关函数定义与调用的概念将在第5章函数中介绍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。