1.3 C程序的结构
用C语言编写的程序称为C语言源程序,简称为C程序。为了说明C语言源程序的结构特点,先看以下几个程序。这几个程序由简单到复杂,虽然有关内容还未介绍,但可以从中了解到C语言源程序在基本组成结构上的特点及其书写风格。
1.3.1 简单C程序举例
【例1-1】 编写一个C语言程序,输出“Good Luck!”。
程序如下:
/*c1_1.c*/
#include <stdio.h> /*为文件包含,其扩展名为.h,称为头文件*/
void main()
{
printf("Good Luck!\n"); /*通过显示器输出Good Luck!*/
}
说明:
① C语言程序中可以随时使用注释,但注释内容不参与编译。
② #include称为文件包含命令或编译预处理命令,#include <stdio.h>是文件包含,其意义是把尖括号<>或引号""内指定的文件包含到本程序来,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h,称为头文件或首部文件。C语言的头文件中包括了各个标准库函数的函数原型。因此,凡是在程序中调用一个库函数时,都必须包含该函数原型所在的头文件。需注意:编译预处理命令的末尾不加分号。详细内容将在后面章节介绍。
③ main是主函数的函数名,表示这是一个主函数。每个完整的C语言源程序都必须有主函数,且只能有一个主函数(main函数),程序总是从main函数开始执行,并终止于main函数。函数体由一对大括弧“{}”括起来,其间一般包括程序的说明部分和执行部分。
④ printf函数是一个由系统定义的标准函数,可在程序中直接调用。其功能是将输出的内容送到显示器显示。
该程序正确执行后,会在显示器上显示输出:
Good Luck!
【例1-2】 从键盘输入两个整数yw和sx,将两数之平均值显示输出。
/*c1_2.c*/
#include<stdio.h>
void main()
{
int yw,sx,sum; /*定义3个整型变量*/
printf("Input two numbers:"); /*显示提示信息*/
scanf("%d%d",&yw,&sx); /*输入yw,sx值*/
sum=yw+sx; /*求出yw与sx之和,并把它赋予变量sum*/
printf("average=%d\n",sum/2); /*输出语文和数学的平均成绩*/
}
程序分析:
① 该程序中使用了yw、sx和sum 3个变量,所有变量在使用之前必须先定义。
② scanf函数是一个由系统定义的标准函数,可在程序中直接调用。它的功能是输入变量yw和sx的值。&yw和&sx中“&”的含义是“取变量地址”,表示将从键盘输入的两个值分别存放到地址标志为yw和sx的存储单元中。
③ “%d”是输入/输出数据的“格式说明”,用来指定输入/输出时的数据类型和格式,%d表示“十进制整数类型”,在执行输出时,屏幕上显示一个十进制整数值。
④ sum=yw+sx为赋值表达式,表示将x+y之和赋值给sum变量所标识的存储单元。
该程序正确执行后,会在显示器上显示输出:
Input two numbers:80 90
average=85
【例1-3】 从键盘输入两个整数a和b,进行比较后将较大值输出。
/*c1_3.c*/
#include<stdio.h>
void main()
{
int x,y,z; /*定义三个整型变量*/
int max(int a,int b); /*函数类型说明*/
printf("Input two number:"); /*显示提示信息*/
scanf("%d%d",&x,&y); /*输入x,y值*/
z=max(x,y); /*调用max函数*/
printf("max=%d\n",z); /*将较大数输出*/
}
int max(int a,int b) /*定义max函数*/
{
int c; /*定义一个整型变量*/
c=a>b?a:b; /*求出变量c的值*/
return c; /*将c的值返回到主调函数*/
}
程序分析:
①本程序包括两个函数:主函数main和自定义函数max。max函数的作用是将a和b中较大者的值赋于变量c;return语句将c的值返回主调函数。
②在调用max函数时,将实际参数x和y的值分别对应传给max函数中的形式参数a和b。
③ a>b?a:b是一个条件表达式,当a>b成立时,a>b?a:b表达式的值为a的值;反之则为b的值。详细内容将在第2章介绍。
该程序正确执行后,会在显示器上显示输出:
Input two numbers:10 20
max=20
本例中涉及函数调用、实际参数和形式参数等概念,如果读者对此不大理解,可先不予以深究,第6章中将会有详尽介绍。
1.3.2 C语言程序的结构特点
通过上面3个C语言源程序,可以看出其基本结构具有以下几个特点。
(1)C语言源程序的基本组成单位是函数。所有的C语言程序都由一个或多个函数构成,其中main函数必须有且只能有一个。
(2)main()函数可以出现在C源程序的任何位置,程序执行时总是从main()函数开始,又在main()函数结束。主函数可以调用标准库函数[如printf()、scanf()等]和用户自定义函数,但标准库函数和用户自定义函数却不能调用主函数。
(3)源程序中的预处理命令通常放在源文件或源程序的最前面。
(4)分号“;”是C语句的必要组成部分。每个语句或每个变量说明都必须以分号结尾。但预处理命令、函数头和花括号“{”和“}”后面不能加分号。
(5)标识符、关键字之间必须至少加一个空格以示分隔。
(6)可以在程序的任何位置用“/*注释内容*/”或“//注释内容”的形式对程序或语句进行注释,以增加程序的可读性。
1.3.3 书写程序时应遵循的规则
C语言程序的书写格式非常自由,但从书写清晰,便于阅读、理解、维护的角度出发,建议在书写C语言程序时遵循以下几个规则。
(1)一个说明或一条语句占一行。
(2)用{}括起来的部分,通常表示程序的某一层次结构(如函数体、循环体、复合语句等)。{}一般与该结构语句的第一个字母对齐,并单独占一行。
(3)低一层次的语句或说明比高一层次的语句或说明向后缩进若干格后书写,同一层次的语句或说明左对齐,以增强程序编写的层次感,增加程序的可读性。
(4)函数块与函数块之间加一空行分隔,以便清楚地分出程序中有几个函数。
编程时应力求遵循上述规则,以养成良好的编程习惯。