
1.4 简单的C语言程序
1.4.1 C语言程序示例
本节介绍的几个C语言程序示例,由简到难表现了C语言源程序在组成结构上的特点。虽然有关内容尚未介绍,但可从这些例子中了解组成一个C语言源程序的基本部分和书写格式。
【例1-1】在屏幕上输出一行信息“This is a C Program.”。
C源程序(文件名lt1_1.c):

这是一个最简单的C语言程序,程序第2行中的main是C语言程序中“主函数”的名字。main前面的void表示此主函数是“空类型”,void是“空”的意思,即执行此函数后不产生一个函数值。每一个C语言程序都必须有一个main函数,每一个函数要有函数名和一对花括号{}括起的函数体。本例中主函数内只有一个printf语句,它是C编译系统提供的标准函数库中的输出函数,按原样输出圆括号中双引号内的字符串。“\n”是换行符,在执行程序时输出“This is a C Program.”,然后执行回车换行。语句最后有一个分号。
在使用标准函数库中的输入/输出函数时,编译系统要求程序提供有关信息(例如,对这些输入/输出函数的声明),程序第1行“#include <stdio.h>”用来提供这些信息。stdio.h是C编译系统提供的一个文件名,stdio是“stdandard input & output”的缩写,即有关“标准输入/输出”的信息。在开始时对此可暂不必深究,以后会有详细介绍,在此只须记住在C语言程序中用到系统提供的标准函数库中的输入/输出函数时应在程序开头一行写:

【例1-2】一个长方体的高已经给出,然后输入长和宽,计算这个长方体的体积。
C源程序(文件名lt1_2.c):


本程序的第2行“#define Height 10 /*定义符号常量*/”,使用“#define”定义一个标识符号“Height”,并且指定这个符号代表的值为10。这样在程序中只要使用Height这个标识符的位置就代表使用的是10这个数值。Height是一个符号常量,右侧的/*……*/表示注释部分。注释可以用汉字或英文字符表示,它只是说明,对编译和运行不起作用。注释可以出现在一行中的最右侧,也可以单独成为一行,可以根据需要写在程序中的任何一行。
程序第3行是“int calculate(int Long,int Width); /*函数声明*/”,它的作用是声明一个函数。即如果此处声明calculate函数,那么在程序代码的后面会有calculate函数的具体定义内容。这样程序中如果出现calculate函数,程序就会根据该函数的定义执行有关的操作。
程序代码中第6~8行如下:

这3行是定义变量,在C语言中必须在使用变量之前定义变量。之后编译器会根据变量的类型为其分配内存空间,变量的作用就是存储数据,并用于计算。这就像在二元一次方程中x和y是变量,当为其赋值后,如x为5,y为10,这样二者相加的结果等于15。
程序代码的第11行如下:

在C语言中,scanf函数用来接收键盘输入的内容并保存在相应的变量中。可以看到在scanf的参数中m_Long是之前定义的整型变量,作用是存储输入的内容。其中的&符号是取地址运算符,其具体内容在后续章节中介绍。
程序代码中的第22行如下:

这行代码在calculate函数体内,其功能是将变量Long乘以Width再乘以Height得到的结果保存在result变量中,其中的*号代表乘法运算符。
通过分析我们大致可以将上面程序的执行过程总结如下。
(1)包含程序所需要的头文件。
(2)定义一个常量Height,其值代表10。
(3)对calculate函数进行声明。
(4)进入main函数,程序开始执行。
(5)在main函数中,首先定义3个整型变量分别代表长方体的长、宽和体积。
(6)显示提示文字,然后根据显示的文字输入有关数据。
(7)输入长方体的长度和宽度后调用calculate函数计算长方体的体积。
(8)定义calculate函数的位置在main函数的后面,在calculate函数体内计算并返回长方体体积的计算结果。
(9)在main函数中result变量得到了calculate函数返回的结果。
(10)通过输出语句显示长方体的体积。
(11)程序结束。
【例1-3】求两个数中的较大者。
C源程序(文件名lt1_3.c):

程序运行结果如下:

说明:本程序中的max函数将x和y中较大者的值赋给变量z,return语句将z的值返回给主调函数main。
1.4.2 C语言程序构成简介
一个C语言程序都是从main函数开始执行的,该函数可放在任何位置。
C语言程序整体由函数构成,程序中的main是主函数,在程序中可以定义其他函数完成特定的功能。虽然可以将所有的执行代码全部放入main函数中,但是将其分成多个模块,每一个模块使用一个函数表示,那么整个程序看起来就具有结构性,并且易于阅读和修改。
每一个函数都要执行特定的功能,其操作范围为“{”和“}”一对花括号括起的部分。C语言用其表示程序的结构层次,注意左右花括号要对应使用。在编写程序时为了防止遗漏对应的花括号,可以先写出两个对应的花括号,再在其中添加代码。
如果注意观察前面的两个示例,就会发现在每一个执行语句后面都会有一个分号作为语句结束的标志。
在程序中可以使用英文的大小写字母,一般情况下使用小写字母,因为易于阅读。在定义常量时常常使用大写字母,而在定义函数时有时也会将第1个字母大写。
空行和空格在程序中也经常使用,其作用是增加程序的可读性,使代码位置安排合理、美观。例如,如下代码非常不利于阅读:

如果将其中的执行语句在函数中缩进排版,使得函数体内代码开头与函数头的代码不在一列,就会有层次感。例如:
