
1.3 C语言程序的介绍
下面通过几个简单的示例初步了解C语言程序的语法和书写规则。
【例1-1】在屏幕上输出文本信息:“我的第一个C语言程序”。
程序代码:

程序运行结果如图1-1所示。

图1-1 第一个C程序
程序分析:
第1行,#include <stdio.h>是一条预处理指令,包含头文件(stdio.h)。C语言没有自己的输入/输出函数,需要调用标准函数库中的相关函数进行输入/输出,头文件(stdio.h)用来提供所用到的函数的信息。
第2行,main是函数的名字,表示“主函数”。C程序是由函数构成的,函数是由一组执行语句(函数体)组成的,函数体由一对花括号{ }括起来,每一个函数完成相对独立的功能。int是整型的关键字,这里用来指定函数的返回值类型。任意一个C程序必须有且只能有一个main()函数,C程序是从main()函数的起点开始执行,到main()函数的结束点终止执行。
第3行,printf()是标准函数库中的输出函数,双引号内的字符序列称为字符串或字符串常量,“\n”是转义字符换行符。
第4行,return 0;是函数返回语句,整数0通过return带回到主调函数(系统),表示程序正常退出。
每条语句的最后都有一个分号,分号是C语言程序语句的标志。
【例1-2】求两个整数中的最大值。
程序代码:

程序运行结果如图1-2所示。

图1-2 求两个整数的最大值
程序分析:
例1-2中定义了两个函数,主函数main()和求两个整数最大值的函数max()。
在main()函数中,从键盘接收两个整数,再调用max()函数,将两个整数作为实际参数传递给max()函数。
在max()函数中,用if控制语句对两个参数进行比较,获得两个参数的最大值,用return语句将该值带回到主调函数main()中。
第2行,是函数max()的声明语句。在C语言中,为了使编译系统能够正确地识别和调用函数,如果被调函数(max())的定义在调用语句之后,则需要在调用该函数(max())之前对其进行声明。
第5行,是变量定义语句,定义了三个整型变量x、y、z。在C程序中,所有的变量都必须先定义后使用。
第7行,调用了标准函数库中的输入函数(scanf()函数),其作用是从键盘输入两个整数,分别存储在变量x和变量y中。&x和&y中的“&”是取地址运算符,用来获得变量x和变量y所在存储单元的地址。
第8行,调用自定义函数(max()),在调用时将实际参数x和y的值分别传递给形式参数a和b。执行max()函数得到一个返回值,这个值返回到主调函数(main())中调用max()函数的位置,赋值运算符(=)的右侧,并被赋值给左侧的变量z。
第9行,调用printf()函数输出结果,“max(%d,%d)=%d\n”中,3个%d的位置分别输出后面给出的x、y和z的值,“\n”的位置输出换行,双引号括起的其他内容原样输出。
第13行到第17行,是自定义函数(max())的定义。函数的定义包含两部分:函数头(包括函数类型、函数名和形参列表)和函数体(用一对花括号括起来,包括声明部分和执行部分)。
【例1-3】求5个整数的平均值。
程序代码:

程序运行结果如图1-3所示。

图1-3 求5个整数的平均值
程序分析:
第2行,用一条预处理指令,定义了一个符号常量N。
第4行,定义了包含N个元素的整型数组num和一个整型变量i。
第5行,定义了两个浮点型变量ave和sum,并初始化sum的值为0。
第7行,使用for语句来控制循环次数已知的循环,花括号括起来的语句集就是该循环的循环体。
通过上述三个示例,总结C语言程序的基本构成如下:
(1)C程序由函数构成(1个或多个),必须有且仅有一个名为main的函数,即主函数。无论有多少个函数,整个程序总是从主函数开始执行,并且总会从主函数结束执行。
(2)函数名后面的圆括号是用来写参数的,例如max(int a,int b),参数可以没有,但圆括号不能省略,例如main()。
(3)编译预处理指令放在源程序的最前面,用来提供程序中用到的数据或函数的声明。例如,#include<stdio.h>。
(4)C语言是区分大小写的,例如max和MAX是两个不同的标识符。C语言规定每条语句必须以分号“;”结束。
(5)C语言本身没有输入/输出语句。输入和输出操作通过调用标准函数库中的函数完成。
(6)“/*”和“*/”之间的是注释内容,注释是给读者看的,程序在编译时不会对其进行任何检查。“/*”和“*/”必须成对使用,且“/”和“*”以及“*”和“/”之间不能有空格。注释可以放在一行的最后,也可以单独另起一行。