一种语言只有熟悉它的语法和结构特征,才能更好地理解并掌握它。下面我们通过一个简单的C语言程序实例来对其结构进行分析,是读者对C语言程序有一个初步的认识,在以后的学习中,我们将深入的讲解。
下面是用C语言编写的一个程序,实现的功能是从输入端任意输入两个整型数,并求这两个数的和,最后输出到屏幕上。为了讲解方便我们将每一行的开头用序号标出,要注意的是这些序号不属于编写程序本身,只是为了方便说明而添加上去的。
# include<stdio.h> 1文件包含
void main() 2主函数
{ 3程序开始
int a,b,sum; 4变量定义
scanf(“%d”,&a); /*输入a*/ 5格式输入函数与注释
scanf(“%d”,&b); 6格式输入函数
sum=a+b; /*对a,b求和*/ 7求和与注释
printf(“sum=%d \n”,sum); 8格式输出函数
} 9程序结束
我们用序号将各行语句的作用都标注出来,下面将对C语句的结构和作用进行逐一的讲解。
- 文件包含
## include<stdio.h>是文件包含,通用的格式是#include<文件名>或#include“文件名”,它属于预处理命令中的一种。文件包含的作用是将该程序编译时所需要的文件复制到本文件,在对合并后的文件进行编译。stdio.h是基本输入/输出的头文件,在上例中,我们用到输入/输出函数printf(),scanf(),因此需要在源程序的开头写上#include<stdio.h>。
在编写程序的时候,常会用到不同的函数,如sin(),cos(),abs(),而这些函数虽然已经编好,但需要提供有关信息,这就需要用到这些预处理命令,且要放在程序的开头,故而也称为头文件。当用到数字函数,如sin(),cos(),abs()时,则需要写#include<math.h>。
【实例2-1】输入一个正整数求其平方根。
#include<stdio.h>
#include<math.h>
void main()
{
float a,b; /*定义两个实数型变量a,b*/
scanf(“%f”,&a); /*输入a的值*/
a=fabs(a); /*保证被开平方数为正数*/
b=sqrt(a); /*对a进行开平方,并将其赋予b*/
printf(“%f”,b);
}
程序运行时当输入:4
屏幕上输出的结果为:4的平方根是2
在【实例2-1】中,程序编译时用到sqart()函数,因此在源程序的开头将该函数所在的头文件引入。
- 主函数
main()表示主函数,这是系统提供的特殊函数,每一个C语言程序有且只有一个main()函数。函数的内部用一对大括号括起来,括起来的部分称为函数体,上例中函数体一共包括五条语句,一个C程序执行是从第一个大括号开始到另一个大括号结束。在上面的例子中,3,9表示的是main()函数的开始与结束,同时它也表示源程序的执行的开始与结束,这两个大括号必须配对使用,不能省去。4,5,6,7,8构成main()函数的函数体,4是函数体的说明语句,5,6,7,8是执行语句。每一个语句后面都有以分号结尾,分号是语句结束标志。
不管main()函数在源函数中的位置在何处,执行完主函数中的所有语句后,程序就结束了。
【实例2-2】程序的执行过程示例。
#include<stdio.h>
int c,a=4; /*定义两个整型变量c,a,并对a赋值*/
int func(int a,int b) /*定义func()函数,函数值为整数,a,b为形式参数*/
{
c=a*b;
a=b-1;
b++;
return (a+b+1);
}
void main()
{
int b=2,p=0,c=1; /*定义三个整型变量b,p,c,并进行赋值*/
p=func(b,a); /*调用func()函数*/
printf(“%d,%d,%d,%d\n”, a,b,c,p);
}
程序运行时,屏幕上输出的结果为:4,2,8,9。
【实例2-2】中,源程序的执行不是从开头进行的,而是从main()函数所在的位置开始的,func()函数是用户自定义函数。程序从main()函数开始执行,执行后到main()函数中的第四行时,开始调用func()函数,程序转到func()函数,执行完func()函数中的所有语句后,再返回到主函数func()函数中继续执行。
- 变量的定义
一个变量在内存中占据一定的存储单元,在该存储单元存放变量的值。本行定义了三个变量a,b,sum分别用来存储等待输入的两个整型数和它们的和,便于以后的操作。
C语言中,变量的定义必须符合标识符的命名规则,即标识符只能由字母(大小写均可)、数字和下划线3种字符组成,第1个字母不能是数字。
C语言对大小写严格区分,变量一般用小写。变量遵循先定义后使用的原则,定义变量有利于系统分配存储空间,定义变量其实就是在内存中开辟存储单元。
- 格式输入与输出函数
C语言本身不提供输入/输出语句,输入与输出操作是由函数来实现的。在C标准函数库中有一些输入/输出函数,可以在程序中直接调用,如printf()函数和scanf()函数,它们不是C语言文本的组成部分,而是以函数库的形式存放在系统之中。
输入函数的作用是将输入设备(如键盘)按指定的格式输入一组数据,赋给指定的变量存储单元,作为变量的值。5,6两行是C语言提供的标准输入函数。&a,&b中的“&”表示“地址”,运用输入函数分别从外部输入设备输入两个整型数,存放在a,b,所代表的存储单元里面。5,6,8中的“%d”是输入的“格式说明”,用来指定输入的数据类型和格式,“%d”表示“十进制整数类型”。
输出函数的作用是向系统指定的输出设备(如显示器)输出若干个任意类型的数据。本例中,将输入的两个整型数求和后存放在sum所代表的存储单元中,用输出函数输出到屏幕上。
- 注释部分
例子中的5,7行“/*”开头到“*/”结尾之间的内容表示注释,它可以在一行书写或分多行书写,可写在程序的任何位置。为了便于理解,我们常用汉字表示注释,当然也可以用英文或汉字拼音作注释,将a,b相加的和赋给sum。在程序中添加注释语句可以提高程序的可读性,具有提示的作用,也便于不同程序员之间的交流。
根据上面一个简单的实例,我们对C语言程序的结构做了一些简单的解释,在以后的学习中我们将对各个部分逐一进行详细的讲解。