C语言作为一种中间程序设计语言;即是一种高级语言,同时也提供了丰富的低级操作.
C语言有着众多优点,但和其他程序设计语言一样,它也有一些弱点.比如运算符的优先级较多,有些还与常规约定不同,不便记忆,语法限制不太严格,例如对数组下标不做越界检查,这就令初学者编一个正确的C程序感到可能会比编一个其他高级语言的程序难一些.也就是说,对使用C语言的人来说,必须熟练掌握它才能灵活的使用(这就是有些人说的"C语言难学").
任何一种计算机语言与人类的自然语言一样,都有自己特定的结构特征与书写格式.看下面这个例子:
引用
main()
{
printf("This is an example.\n");
}
该程序的作用是在屏幕上输出一行信息:This is an example.
本例中,main表示"主函数".每个C程序都必须有一个main()函数.函数体用大括号{
}括起来.本例中主函数仅包含一个语句,该语句用printf()输出函数构成.printf()的功能是输出字符,括号内双引号中的字符串按原样输出;"\n"是换行符,即在输出"This
is an
example."后换行;语句后面有一个分号,表示该语句结束,这个分号是必不可少的.
引用
提示:程序中的语句不能使用全角符号,但提示信息可以使用全角符号及汉字.比如上例中";"不能改为";",但是"This
is an example.\n"可以改为"这是一个例子.\n"(在汉字系统支持下)
在看下面这个例子:
引用
main() /*求两数之和*/
{
int a,b,sum; /*定义3个整型变量*/
a=135;b=246;
/*以下3行对a和b进行运算并输出结果*/
sum=a+b;
printf("sum is %d\n",sum);
}
该程序的作用是求两整数a,b之和sum,并在屏幕上输出sum.
程序中,以"/*开头到*/"结尾之间的内容表示注释,当然也可以用英文或汉字拼音做注释.注释是程序员对程序某部分的功能和作用所做的说明,是给人看的,对编译和运行不起任何作用.第3行是变量说明,说明a,b和sum为整型(int)变量.第4行是两个赋值语句,使a,b的值分别为135和246.该行包括两个语句(C语言中,一个语句可以占多行,一行也可以有多个语句).第5行也是一个赋值语句,先计算a,b之和,再把和赋值给sum.第6行中的"%d"是输入输出的"格式说明",用来指定输入输出的数据类型和格式,"%d"表示"十进制整数类型".printf()函数中括号内最右端sum是要输出的变量,现在它的值为381(即135+246之和),因此输出的一行信息为:sum
is 381.
下面来看一个较复杂的例子:
引用
main() /*输入两个整数,输出其中较大的数*/
{
int a,b,c; /*定义3个整型变量*/
scanf("%d,%d",&a,&b);
/*从终端输入a,b的值*/
c=max(a,b);
/*调用max函数,将得到的返回值赋给c*/
printf("max=%d\n",c); /*输出c的值*/
}
/*空一行,使程序清晰可读*/
int max(x,y) /*定义max函数,函数值为整型,x,y为形式参数*/
int x,y; /*对x,y进行说明,为整型变量*/
{
int z;
/*定义函数max中的内部变量为整型变量z*/
if(x>y) /*将x,y中较大的值赋给z*/
z=x;
else
z=y;
return(z);
/*返回这个值,通过max函数带回调用处*/
}
本程序的作用是从键盘上输入两个整数,然后在屏幕上输出它们的较大值.
该程序包括两个函数:一个主函数main()和一个自定义函数max().max()函数的作用是将x和y中较大的值赋给变量z,再通过return语句将z的值返回给主调函数main().第4行中的scanf()是C语言提供的标准输入函数(printf()是C语言提供的标准输出函数),其作用是输入a和b的值.其中,"%d,%d"用于指定输入的两个数据按十进制整数形式输入,其作用与前例相同,只是现在用于"输入".&a和&b中的"&"表示"地址",此形式与其他语言不同,scanf()函数是将两个数值分别输入到变量a和b地址所标志的单元中来完成a和b值的输入.
程序第5行是调用max()函数,在调用过程中将实际参数a和b的值分别传递给max()函数中的形式参数x和y,然后得到一个返回值(即ma()函数中变量z的值),并把这个值赋给变量c.第6行为输出c的值,用法与前例相同.程序的运行情况如下:
引用
4,9 /*输入4和9给a和b*/
max=9 /*输出c的值*/
从以上3个例子中,可以看到C程序有以下结构特征:
(1)
C程序是由函数构成,一个C程序至少有一个main()函数(main()函数必须且只有一个),也可以包含一个main()函数和若干个其他函数.因此函数是C程序的基本单位.C程序中有如下3种类型的函数.
引用
main()函数:这是系统提供的特殊函数,称为主函数,每一个C程序包括一个且只能有一个main()函数.
库函数:如printf(),scanf()等,这是系统提供的函数,用户使用时直接调用即可.Turboc系统提供300多个这类函数.善于使用库函数可以减少编程良,提高编程效率.
编程人员自己设计的函数:如上例中的max()函数,这是用户为解决某类具体问题而构造的函数.
(2) 一个函数由两部分构成.
引用
函数说明部分:即函数的第一行.包括函数类型(即返回值类型),函数名,形参(即函数参数)类型,形参名.如:
int max (x,y)
----- ------ ---------
函数类型 函数名 函数参数
int x,y
------- -------
形参类型 形参名
一个函数名后面必须跟一对圆括号(),函数参数可以没有,如main().
函数体:即由一对大括号"{
}"括起来的语句集合.函数体中一般包含变量定义语句和执行语句.如:
{
int z;
if(x>y)
z=x;
else
z=y;
return(z);
}
(3)
一个C程序总是从main()函数开始执行,而不管main()在援程序中的位置,执行完主函数的所有语句后,程序就结束.
(4)
每个语句和变量定义的最后必须要有一个分号(即使是程序的最后一个语句也应包含分号).分号是C语言的必要组成部分,例如:
引用
c=a+b;
/*分号是一条语句后必不可少的*/
引用
注意:函数说明部分的函数名后面不能加分号,例如主函数main()或int
max(x,y)之后不加分号.另外,预处理命令,大括号"{ "或"
}"之后也不能加分号.
(5)
C语言本身没有提供输入输出语句,输入输出操作通过库函数scanf(),printf()等实现.
(6)
C语言用"/*...............*/"对程序进行注释.一个好的C程序应有必要的注释,以便阅读.
下面再给出一个具体的例子来说明C程序书写格式:
引用
main()
{
int a,b,m; /*定义3个整型变量*/
scanf("%d,%d",&a,&b);
/*输入变量a和b的值*/
if(a>b)
{
printf("a>b\n");
/*如果a>b时,输出a>b*/
m=a;
/*当a>b时,将变量a赋给m*/
}
else
{
printf("a
/*如果a
m=b;
/*当a
}
printf("m=%d\n",m);
/*输出m的值,即a,b之间较大的数*/
}
上述程序书写格式要点如下:
(1)
C程序习惯上使用小写英文字母,只有符号常量或有其他特殊用途的符号才大写.
(2) 不使用行号,通常按语句顺序执行.
(3)
C程序不存在程序行的概念,一个语句可以占多行,一行也可以有多个语句(此时各语句之间要用分号隔开).
(4)
不指定语句在一行中的起始位置,但建议同一结构层次的语句应左对齐.
(5) 用大括号"{
}"表示各接结构层次的范围,可以表示函数,也可以表示循环体等.
(6)
一个语句中不同成分之间应使用空格隔开.标识符,关键字之间必须至少加一个空格隔开.若已有明显的间隔,也可以不再加空格来间隔.
(7)
为了使程序更加清晰,可以使用空行,空行不影响程序的执行,但不要在一个语句内加空行.
(8) 建议多使用注释信息,以增加可读性.