从下一节开始将详细讨论C语言的各种结构,以及程序设计各方面的问题。本节先通过两个简单的例子,让读者了解C语言程序的概貌。
【例1-1】输出一行文本。
1 /*程序名:prg1-1.c*/
2 /*功能:在屏幕上输出一行文本*/
3 #include<stdio.h>
4
5 int main()/*主函数*/
6 {
7 printf("This is myfirst program in C/C++.\n");/*在屏幕上输出一行信息*/
8
9 return 0;
10 }
程序的运行结果为:
This is myfirst program in C/C++.
下面对该程序进行分析(为方便讲解,在每行前增加了行号):
第1、2行中/*……*/符号里的内容为注释语句,用来对程序进行说明。程序员插入注释语句可以提高程序的可读性,帮助人们阅读和理解该程序。实际运行程序时编译系统会忽略这些注释,即对注释不进行编译。在每个程序前加上注释是一种良好的程序设计习惯。
第3行是一条预处理指令,通知预处理器把标准输入/输出头文件stdio.h中的内容包含进程序中。头文件stdio.h包含了编译器在编译标准输入/输出函数时要用到的信息,每个使用标准输入/输出函数的程序中都要加上该命令。
第5~9行是每个程序都必须有的主函数,主函数以main()来标识。C语言程序可以有一个或多个函数,其中一个必须是main()函数,每个程序都从main()函数开始执行,也结束于main()的最后一个花括号。main()前面的int表示整型,说明主函数返回值为一个整数值。接下来的一对花括号是main()函数的函数体,函数体中定义了要执行的一系列操作。其中第7行调用了C的标准输出函数printf(),把双引号之间的字符串原样输出到屏幕上,其中“\n”是一个转义字符,它使输出屏幕上的光标定位到下一行开始位置,是一个不可见字符,输出时屏幕上看不到。
【例1-2】计算两个整数的和。
1 /*程序名:prg1-2.c*/
2 /*功能:计算两个整数的和并输出结果*/
3 #include<stdio.h>
4
5 int main()/*主函数*/
6 {
7 int i1,i2,sum;/*变量定义*/
8
9 i1=3;/*输入数据*/
10 i2=5;
11 sum=i1+i2;/*计算i1、i2的和*/
12
13 printf("sum=%d\n",sum);/*输出sum的值*/
14
15 return 0;
16 }
程序运行结果为:
sum=8
程序中第7行为变量定义语句,定义了三个整型(int)变量i1、i2和sum,分别存放一个整数。第9、10行分别给变量i1、i2赋值。第11行计算两个变量的和并送入变量sum中。第13行负责打印出字符串“sum=”,以十进制整数格式(%d)输出变量sum的值。
从上一小节中的两个简单例子,大致可以了解C程序的框架:
/*注释:说明程序功能、目的、编写者、编写时间等信息*/
#include<stdio.h>/*编译预处理命令*/
int main()/*主函数*/
{
……/*程序内容*/
printf("……");/*输出结果*/
}
在该框架下,可以根据不同的问题填写不同的内容。C程序的基本概貌如下:
1)在C的结构化程序框架中,函数是程序的基本组成单元。程序的主体通常由若干函数构成。函数是程序中完成一定功能的模块,其中有且仅有一个主函数,即main()函数。main()函数告诉计算机开始执行程序的地方。正是因为main()函数通过调用其他函数来执行相应的功能,所以main()函数有时也称为驱动函数。不管main()函数放在程序的什么位置,程序总是从main()函数开始运行。
2)所有程序的内容都必须用一对花括号{}括起来,称为函数体。左侧花括号可以放在下一行的行首,也可以放在行尾。例如,上面的main()函数还可以写成:
int main(){
……
printf("……");
}
3)程序中可以有注释,放在“/*”和“*/”之间,主要是对程序进行简要的说明,包括程序的名称、完成的功能、编写人及最后修改时间等内容,系统不对该部分进行编译和运行,但它却是非常重要的部分,可以增强程序的可读性。
4)以“#”开头的为预处理命令。要调用系统函数,就应该把描述函数所在的头文件包含进来,如使用输入/输出函数,要加上#include<stdio.h>,使用数学函数,应该加上#include<math.h>等。预处理命令一般写在程序头部。
5)函数体由若干语句组成,包括声明部分和执行部分。声明部分如变量定义int i1,i2,sum,所有用到的变量都要先定义类型然后才能使用。执行部分包括函数的调用(如printf)和一般的运算等(如sum=i1+i2)。C语言的每条语句都必须以分号结束。
6)C程序书写格式自由,一行可以写几条语句,一条语句也可以分在几行上。但是这样写程序一是不方便对语句进行注释,二是如果程序稍长一点,或是程序中出现了选择结构和循环结构等控制结构,程序就很难阅读和理解了。因此在编写较长的程序时,为了便于阅读程序,突出程序的功能结构,函数体应采用缩进和对齐格式书写,使程序结构清晰、易于阅读。
C语言属于高级语言,用C语言写出的程序通常称为源程序(文件扩展名为.c),人们对其非常容易编写和阅读,但计算机不能直接执行。要保证C语言程序能被任何计算机执行,需要有一个编译器,把C语言程序翻译成能被计算机理解的二进制形式。不同的计算机系统有不同的编译器,由它们来完成这个翻译过程。由编译器对源程序文件进行分析和处理,生成相应的机器语言目标模块,保存到目标文件里(文件扩展名为.obj)。目标文件还不能执行,还需要连接器把编译得到的目标模块与其他必要部分(如函数库模块等)连接起来,生成可执行程序(文件扩展名为.exe)。运行该程序就会看到程序执行的效果。
如上所述,开发一个高级语言程序需要经过用编辑器生成源程序、用编译器生成目标程序、用连接器生成可执行文件以及运行已经生成的可执行文件四个步骤。为使程序的开发更加方便,四个步骤中需要的编辑器、编译器、连接器等软件功能通常被集成到一个程序中,形成集成开发环境(Integrated Development Environment, IDE)。集成开发环境是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。C/C++的集成开发环境有很多,主要包括微软的Visual Studio系列、Borland的C++Builder等。