C程序设计语言最早是由Denis Ritchie于1973年为UNIX操作系统设计并在DEC PDP-11计算机上实现的。从那时开始,C语言已经从其位于贝尔实验室的发源地传播到世界各地。它已经成为全球程序员的公共语言,并由此诞生了两个新的主流语言C++和Java,它们都是建立在C语言的语法和基本结构的基础上的。现在世界上许多软件都是在C语言及其衍生的各种语言的基础上开发出来的。
1.1.入门
学习一门新程序设计语言的唯一途径就是使用这一语言编写程序。当然学习C语言也不例外,所以学习C语言编写的第一个程序和学习其他语言一样都是打印“Hello,world”。那么要实现这个练习首先必须编写程序文本,然后编译并加载、运行,最后是在合适的地方打印输出两个单词。在C语言中,打印上述内容的程序文本是:
#include<stdio.h>
main(){
printf("hello,world\n");
}
然后在系统上通过命令编译该程序,并运行编译通过后产生的文件。
下面对这个简单的程序进行逐条语句分析。c语言程序,无论大小其实都是由函数和变量组成的。函数中包含一些语句,以完成特定的操作;变量则是用于存储计算过程中使用和得到的值。
上述程序中的第一行语句#include <stdio.h>用于告知编译器在程序中包含了标准输入/输出库的信息。
第二行语句main(),其中main为函数名,函数名通常没有限制,但是main是一个特殊的函数名,因为每个程序都是从main函数的起点开始执行的,这就意味着每个程序必须包含一个main函数,而且实际上只能包含一个main函数。
函数之间进行数据交换的一种方法是调用函数并向被调用函数提供一个值(称为参数)列表。而函数的后面的一对圆括号则为该参数列表。当然也可以不需要任何参数,如同本例中的main函数,此时用空参数表()表示。
函数的语句用一对花括号{}括起来。本例main函数中仅包含一条语句:"printf("hello,world\n");"。这条语句将“hello,world\n”作为参数调用printf函数。而printf是一个用于打印输出的库函数。用双引号括起来的字符序列称为字符串或字符串常量。c语言中,\n表示换行符,在打印中遇到时,输出打印将换行。记住不能在程序中直接键入换行代替\n。如果不输入换行符,printf不会自动换行,所以上述程序也可以写成下面的形式:
#include <stdio.h>
main()
{
printf("hello,");
printf("world");
printf("/n");
}
这段程序与前面的程序的输出相同。
注意:类似于\n的转义字符序列用于表示无法输入的字符或不可见字符。除了\n之外,C语言提供的转义字符序列还有:
\t——表示制表符
\b——表示回退符
\"——表示双引号
\\——表示反斜杠符本身
1.2 变量与算术表达式
现在我们来编写一个程序使用公式°C=(5/9)(°F-32)打印华氏温度与摄氏温度对照表:
0 -17
20 -6
40 4
60 14
……
300 148
程序如下:
#include <stdio.h>
/*当fahr=0,20,……300时,
分别打印华氏温度与摄氏温度对照表*/
main(){
int fahr,celsius;
int lower,upper,step;
lower=0; /*温度表的下限*/
upper=300; /*温度表的上限*/
step=20; /*每次改变温度的步长*/
fahr=lower;
while(fahr<=upper){
celsius=5*(fahr-32)/9;
printf("%d\t\t%d\n",fahr,celsius);
fahr=fahr+step;
}
}
程序段中包含在/*和*/之间的内容称为注释,如“/*当fahr=0,20,……300时,分别打印华氏温度与摄氏温度对照表*/”,注释的内容可以换行。程序中允许出现空格/制表符或换行符的地方都可以使用注释。
程序中“int fahr,celsius;”表示变量声明,声明用于说明变量的属性,这里,fahr和celsius表示变量名,int是类型名,表示变量的数据类型为整型。与int相对应的,float表示所列变量为浮点数,也就是可以带有小数部分的数。
注意,声明通常放在函数起始处,在任何可执行语句之前。