1.1 C语言概述

学习目标

1)了解C语言的发展历史。

2)掌握C语言程序的基本构成及结构特点。

3)了解C语言程序的编译与执行过程。

4)熟悉Dev-C++的运行环境。

实例1

实例1 C语言简介——简单的C语言应用程序

实例任务

输出一个表达式“1+1”的结果,然后再输出一个字符串“Hello World!”,输出一串汉字“北京欢迎您!”。程序的运行结果如图1-1所示。

图1-1 程序运行结果

程序代码

相关知识

1.C语言的发展历程

上面的程序中,main、print、include等都是熟知的英文单词,而计算机不能识别这些单词。实际上,在C语言产生之前,人们编写系统软件主要使用汇编语言。由于用汇编语言编写的程序依赖于计算机硬件,其可读性和可移植性都比较差;而一般高级语言又不具备低级语言能够直观地对硬件实现控制和操作、程序执行速度快的特点。在这种情况下,人们迫切需要一种既有一般高级语言特性又有低级语言特性的语言,于是C语言便应运而生了。

C语言的产生和发展与UNIX操作系统有很大的关系,其发展历程简述如下。

1972—1973年,美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出了C语言。当时的C语言只是为描述和实现UNIX操作系统的一种工作语言,且只在贝尔实验室内部使用。

1973年,K.Thompson和D.M.Ritchie两人合作,将UNIX操作系统90%以上的代码用C语言改写,即UNIX第5版。

1975年,UNIX第6版公布后,C语言突出的优点引起人们普遍关注。

1977年,出现了可移植的C语言。

1978年,UNIX第7版公布,K.Thompson和D.M.Ritchie以该版C编译程序为基础,合著The C Programming Language一书。该书所介绍的C语言,是后来广泛使用的C语言版本的基础,因而被称为标准C语言。

1983年,美国国家标准化协会(ANSI)根据C语言问世以来的各种版本,对C语言进行发展和扩充,并制定了新的标准,称为ANSI C。

1990年,国际标准化组织(ISO)制定了ISO C标准。

1972年以来,C语言几经修改和发展,出现了多个版本。C语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。目前在计算机上广泛使用的版本有多个,各有特点,但它们一般都是以ANSI C为基础的,其中比较常用的版本有Microsoft C、Quick C、Turbo C、Win-TC、C-Free、Dev-C++等。

2.C语言程序的构成

C语言应用程序是由函数构成的,以main()函数作为入口开始执行应用程序。main()是C程序的入口函数,每个C程序都必须有main()函数,且每个C程序只能有一个main()函数。

{}括起来的部分称为函数体,函数体是函数的执行部分。函数体中,每条以分号“;”结尾的元素,称为语句。C语言的语句必须以分号结尾,可以一行写一条,可以一行写多条,一个单独的“;”可以自成一条语句。

程序中的第一行语句:#include "stdio.h"或#include <stdio.h>,用于告诉编译器在本程序中包含标准输入/输出库的信息。函数体中的printf函数是一个用于打印输出的库函数,后面小括号中的内容为这个函数的参数。

函数体中,语句“int i;”定义变量i。变量是内存中用于存放数据的元素,必须先定义,后引用。

程序中,“/*…*/”符号中的内容是某语句或某段程序的注释,为非执行语句,起到帮助读者理解程序的作用。

3.程序的执行方式

计算机只能识别机器语言(即二进制代码),如11011010。但用二进制代码编程难以记忆、检错,故只能用高级语言编程。所以,计算机须完成一个翻译过程,即将高级语言程序翻译成机器代码,如图1-2所示。

图1-2 程序翻译过程

一般,编写完的程序分为以下3种。第一种是汇编程序,其语言源程序代码与机器指令一一对应。第二种是编译程序,是按某种约定将源代码翻译为目标代码,通过连接程序将目标程序与所调用的标准函数库连接为一体,然后执行程序,如常用的Pascal、C语言等。第三种是解释程序,与编译程序思想相似,但是一条一条地翻译,译出一句执行一句,如早期的BASIC语言。

对于编译程序,编译执行是在编写完程序后,通过特别的工具软件将源程序编译成目标程序进而转换成机器代码(即可执行程序),然后直接交给操作系统执行,也就是说,程序是作为一个整体来运行的。这类程序的优点是执行速度比较快,还有编译连接之后可以独立在操作系统上运行,不需要其他应用程序的支持;缺点是不利于调试,每次修改之后都要执行编译连接等步骤才能看到其执行结果。此外,有些集成开发环境与操作系统之间存在一定的依赖性,不同操作系统需要的编译器可能不相同,因此,在一个系统上编译的程序在另一个系统上并不一定能够运行。

C语言的编译执行过程如图1-3所示。

图1-3 C语言的编译执行过程

4.C语言的特点

C语言具有以下几个特点。

1)语言简洁,使用方便灵活。C语言的关键字少,ANSI C标准总共只有32个关键字、9种控制语句,压缩了一切不必要的成分。C语言的书写形式比较自由,表示方法简洁。

2)可移植性好。相对于硬件依赖性很强的汇编语言而言,C语言通过编译来得到可执行代码。统计资料表明:C语言编译程序中80%的代码是公共的,故可以稍加修改即可用于其他的计算机。

3)表达能力强。表达方式灵活,可以进行结构化程序设计。

4)能直接操作计算机硬件。当今应用广泛的嵌入式技术和单片机技术中控制硬件的代码,很多都是由C语言开发的。

5)生成的目标代码质量高。C语言生成的代码仅比汇编语言效率低10%~20%,是其他高级语言无法匹敌的。

5.C语言程序结构的特点

由以上实例程序可以看出,C语言程序的结构有以下几个特点。

1)C语言程序是由若干函数构成的,每个程序都必须有一个主函数,且main后的小括号不能省略。

2)C语言程序的函数体是用{ }括起来的多条语句,且函数体中每条语句均以分号结束。

3)C语言程序的书写格式自由。一行可以写多条语句,一条语句也可以写在多行上。

4)C语言程序可以用/*…*/来对语句进行注释。

实例2

实例2 C语言环境使用介绍——用“*”输出字母A形

实例任务

用“*”符号组成笔画,输出字母“A”的形状。程序运行结果如图1-4所示。

程序代码

图1-4 程序运行结果

相关知识

1.Dev-C++简介

Dev-C++是一个C&C++的开发工具,它是一款自由的软件,遵守GPL(General Public License,通用公共许可证)协议。它集合了GCC、MinGW32等众多自由软件,也是不断升级的免费软件。它的开发环境包括多页面窗口、工程编辑器及调试器等;在工程编辑器中集合了编辑器、编译器、连接程序和执行程序;为减少编辑错误,提供了高亮语法显示;有完善的调试功能,能满足不同层次的用户需求,但它难以胜任规模较大的软件项目。由于Dev-C++具有完善的调试功能并支持中文输出,因此本书选用Dev-C++为开发工具。

2.显示运行结果

在使用Turbo C时,可以通过一步操作查看程序的运行结果,但在Dev-C++中编写程序后,用户找不到运行结果窗口。如果要查看结果,则需要在程序中进行代码操作,分为以下3种情况。

● 在主函数最后添加语句“getch();”,它只适用于C程序。

● 在主函数最后添加语句“getchar();”,它适用于C/C++程序。

● 在主函数最后添加语句“system("pause");”,它适用于C/C++程序。

3.创建并运行C程序

打开Dev-C++,选择“文件”→“新建”→“源代码”菜单命令或按〈Ctrl+N〉组合键,可新建程序,此时光标位于窗口代码编辑区,如图1-5所示。

从图1-5中的光标处开始添加代码,如图1-6所示。

图1-5 新建程序

图1-6 添加代码

选择“运行”→“编译”菜单命令或按〈Ctrl+F9〉组合键进行编译,然后选择“运行”→“运行”菜单命令或按〈Ctrl+F10〉组合键运行并查看结果。也可以一步完成,选择“运行”→“编译运行”菜单命令或按〈F9〉键完成编译运行。并编译时如果文件尚未保存,系统会弹出“保存文件”对话框,此时输入文件名后,在“保存类型”下拉列表框中选择“C source files(*.c)”类型,如图1-7所示。

如果选择了“运行”命令或按〈F9〉键后,则可以看到如图1-4所示的运行结果。如果程序运行过程中陷入死循环,则可以按〈Ctrl+C〉组合键结束程序的运行。

图1-7 “保存文件”对话框

课堂精练

1)新建一个C语言程序,保存并运行之,程序运行结果如图1-8所示。

程序代码如下。

2)新建一个C语言程序,要求从键盘输入两个变量的值,求和并输出。程序的运行结果如图1-9所示。

图1-8 程序运行结果(1)

图1-9 程序运行结果(2)

程序代码如下。