C语言入门基础.doc_第1页
C语言入门基础.doc_第2页
C语言入门基础.doc_第3页
C语言入门基础.doc_第4页
C语言入门基础.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文由duzongfei贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 语言入门基础 C 语言入门基础 本章主要介绍 C 语言的由来和发展,C 语言的特点和应用,C 语言程序在结构上的特 点和书写格式,还介绍 C 语言标准设备上的输入/输出操作以及 C 语言程序的实现方法. 通过对上述问题的了解, 使读者对 C 语言程序有一个概貌的了解, 为后面的学习打下基础. 1.1 1.1.1 C 语言的由来 C 语言的由来和发展 C 语言诞生于 1972 年,它由美国电话电报公司(AT&T)贝尔实验的 D.M.Ritchie 设 计,并首先在一台 UNIX 操作系统的 DEC PDP-11 计算机上实现.C 语言诞生至今已有 30 多年. C 语言是由 ALGOL 60 逐渐演变而来的.早在 1963 年,英国剑桥大学根据当时流行 的高级语言 ALGOL 60 推出一种接近于硬件的语言 CPL Combind Programming Language) ( . 1967 年,英国剑桥大学针对当时的 CPL 语言提出一种改进的语言,称为 BCPL(Basic Combined Programming Language).这些都为 C 语言的诞生打下了基础.1970 年,美国 贝尔实验室的 K. Thompson 以 BCPL 语言为基础,设计出了一种既简单又接近于硬件的高 级语言,称为 B 语言,该语言采用了 BCPL 语言的第一个字母,并用该语言写成了第一个 UNIX 操作系统,然后在 DEC PDP-11 计算机上获得了实现. 1972 年, 美国贝尔实验室的 D. M. Ritchie 在 B 语言的基础上进行了一些改进, 克服了 B 语言中依赖于机器又无数据类型等局限性,开发出了 C 语言.由此可见,一种较好的高 级语言的出现,往往要经历一个长期的演变过程.C 语言的演变过程如下: ALGOL (1960 年) CPL (1963 年) BCPL (1967 年) (1970 年) (1972 年). B C 1.1.2 C 语言的发展 高级语言往往是在人们的某种期盼之下出现的.C 语言就是在人们期盼寻找到一种既 具有一般高级语言的特征,又具有低级语言特点的语言的情况下应运而生的;因此,C 语 言具有高级语言和低级语言的双重特点. 1973 年,C 语言刚刚诞生的第二年,美国贝尔实验室的 K.Thompson 和 D.M.Ritchie 合作使用了 C 语言, UNIX 操作系统进行了修改, 对 修改后的 UNIX 操作系统是第 5 版本. 原来的 UNIX 操作系统是由汇编语言和 B 语言编写的, 修改后的 UNIX 操作系统中 90%以 上是由 C 语言编写的.改写的 UNIX 操作系统在性能上有较大提高.从此,C 语言的命运 与 UNIX 操作系统紧密地联系在一起.随着 UNIX 操作系统的发展和推广,C 语言也得到 2 C 语言基础教程 了广泛的应用和发展. 1975 年,UNIX 操作系统的第 6 版本公布以后,C 语言开始引起了人们的注意,C 语 言的优点也逐渐被人们所认识. 1977 年出现了一种与具体机器无关的 C 语言编译文本, 推 动了 UNIX 操作系统在各类机器上的迅速实现.随着 UNIX 操作系统的日益广泛应用,C 语言也获得了迅速的推广,并受到越来越多的编程者的喜欢.1978 年以后,C 语言先后被 移植到大,中,小和微型机上,很快便成为了世界上应用最广泛的计算机语言之一. 1978 年又推出了 UNIX 操作系统的一个新版本第 8 版本, 该版本以 C 语言编译系 统为基础.B.W.Kernighan 和 D.R.Ritchie 合作(被称为 K&R)编写了The C Programming Language 程序设计语言)一书,从此有了标准的 C 语言,该书为 C 语言的推广使用 (C 起到了积极作用. 1983 年,ANSI(美国国家标准化协会)对 C 语言的各种版本进行了扩充,推出了新 的标准,被称为 ANSI C,它对原来的标准 C 语言做了一些改进和扩充. 1987 年,ANSI 又公布了 87 ANSI C 新版本.后来流行的各种 C 语言编译系统的版本 大多数都是以此为基础的,但是它们彼此又有不同.此后在微机上使用的 C 语言编译系统 多为 Microsoft C,Turbo C,Borland C,Quick C 等,它们都是按标准 C 语言编写的,相互 之间略有差异.每一种编译系统又有着不同的版本,版本之间也有差异,主要表现在功能 上,版本越高的编译系统所提供的函数越多,编译能力越强,使用越方便,用户界面更友 好.一句话,版本越高,功能越强. 1983 年, 美国贝尔实验室又推出了 C+语言, 该语言在 C 语言基础上进行了改进和革 新.C+语言和 C 语言很多方面是兼容的,然而,C+语言是一种面向对象的程序设计语 言.掌握了 C 语言,对今后学习 C+语言是很有帮助的. 1.2 1.2.1 C 语言的特点 C 语言的特点和应用 C 语言是一种开发比较晚的高级语言,它吸取了早期高级语言的长处,克服了某些不 足,形成了自己的风格和特点;因此可以说,C 语言是一种很有特色的高级语言.总的来 说,C 语言是一种简洁明了,功能强大,移植性好的结构化程序设计语言. 1.C 语言是一种结构化程序设计语言 . 结构化程序设计语言的出现和应用是软件开发史上的巨大进步,它比非结构化程序设 计语言具有编程灵活,调试方便,便于分工合作,更利于开发较大的软件等优点.结构化 又称为模块化,使用这种方法可将一个复杂问题分解为若干个简单问题,每个问题可由一 个模块来实现,一个大问题将由多个模块构成.C 语言适应于结构化编程方法.在 C 语言 中,函数是构成结构化程序的最小模块,每个函数实现一个功能,函数之间有相对的独立 性,多个函数共同实现一个大功能.C 语言程序实现上就是由若干个函数组成,即由若干 个模块构成的,它们可放在一个文件中,也可放在多个文件中. C 语言入门基础 3 C 语言是结构化程序设计语言,它具备构成结构化程序设计的三种基本结构模式的语 句.构成结构化程序设计的三个基本结构模式如下: 顺序结构模式.该模式由若干条顺序执行的语句构成,这是程序设计的最基本形 式.C 语言具备构成顺序执行的若干语句. 分支结构模式.该模式用来处理分支选择问题.C 语言中提供了两种高效能的分 支语句:条件语句和开关语句,使用它们可以实现多路分支操作. 循环结构模式.该模式用来实现重复执行某种功能.C 语言中提供了三种循环语 句:while 循环语句,do-while 循环语句和 for 循环语句.使用它们可以实现各种 循环结构模式,完成重复执行某种功能的要求. 但是,C 语言在突出灵活性特点的同时,在结构化方面存在一些不足,因此,有人认 为 C 语言是一种不完全的结构化程序设计语言,其根据有如下两点: 完全结构化程序设计语言不允许使用无条件转向语句 goto,因为该语句会破坏结 构化.但是,C 语言还允许限制性地使用 goto 语句,为使程序简练和灵活,要求 将 goto 语句限制在一个函数体内使用. 完全结构化程序设计语言要求一个模块只有一个入口和一个出口,这样便于结构 化管理.但是,C 语言为了方便灵活,允许在一个函数体内使用多个返回语句, 即允许有多个返回出口. 2.C 语言编程简洁明了 . C 语言是一种非常简练的语言,使用 C 语言编写的程序简洁明了.C 语言的简练表现 在如下几个方面. C 语言中关键字不多.有些关键字采用了简单的符号来替代.例如,条件语句中, if 体和 else 体的定界符采用一对花括号( )来标识,如果只有一条语句,则不 使用花括号,这样比使用关键字作定界符简单多了. C 语言中数据类型说明符采用缩写形式.例如,整型说明符用 int,字符型说明符 用 char,这比说明符使用英文全称要简练一些. C 语言中运算符很丰富,而且功能很强.在编程中尽量使用表达式,这样要比使 用函数调用简练得多.另外,C 语言中有一个三目运算符(?:)具有条件语句的功 能.编程时使用三目运算符的条件表达式要比使用 if-else 语句简练得多. C 语言还有一种其他高级语言不曾有过的预处理功能.使用该功能中提供的某些 预处理命令会使程序的书写变得清晰简洁.例如,C 语言程序常用文件包含命令 (#inclucle ),这样可以少写很多行语句,给程序的书写带来方便. 3.C 语言功能强大 . C 语言功能强大,不仅表现在它具有的高级语言功能上,还表现在它具有的低级语言 功能上.C 语言具有所有高级语言的功能,包含数值运算功能和非数值处理功能.C 语言 还具有低级语言(如汇编语言)中的某些功能.例如,二进制位运算功能,寄存器运算功 能和地址运算功能等.由于 C 语言具备了这些功能,使得它的应用更加广泛.实际上,C 语言不仅可以用来编写一些应用程序,还可以用来编写系统软件. 4 C 语言基础教程 另外,C 语言还提供了丰富的类型,有较多的数据类型和存储类,使用起来比较方便 灵活. 4.C 语言移植性好 . C 语言的编译系统较小,又具有一些预处理命令,因而为它的移植带来一些方便.C 语言移植性好表现在两个方面:一是 C 语言系统只要稍加修改,便可用于各种不同型号的 计算机和各种操作系统中; 另外, C 语言编写的程序可以比较方便地在不同系统下运行. 用 因此,C 语言能够广泛地应用于各个领域. 5.C 语言的不足 . C 语言具有灵活简练的特点,但在有些方面存在不足.了解 C 语言中的不足,对在编 程中避免出错十分重要.下面简单介绍一些不足,在本书后面的学习中应有所注意. 运算符多,难用难记.C 语言共有 44 种运算符,又分为 15 个优先级和 2 种结合 性.记住这些运算符的功能,搞清楚不同的优先级,对初学者有一定难度.但是, 这些运算符是编程的基础,必须尽快掌握.另外,有些不同功能的运算符使用同 一种运算符符号,还应分清它们的区别.例如,*号作为单目运算符表示取内容的 功能,作为双目运算符表示两个操作数相乘的功能. C 语言中类型转换比较灵活,在许多情况下不做类型检查,对类型要求不够严格. 因此,在 C 语言程序中,对类型处理要谨慎,尽量避免出现类型不一致的情况. C 语言中,给数组进行初始化是判界的,越界会发出编译错.但是,数组动态赋 值是不判界的,这样会造成数据方面的混乱.编程时一定要注意避免数组的动态 越界. C 语言的编译系统中,为了优化等原因允许不同的编译系统对表达式中各个操 作数和参数表中各个参数有不同的计算顺序.这对于一般表达式和参数表是没有 什么影响的.但是,当表达式或参数表中出现了具有副作用的运算符时,不同计 算顺序的编译系统将会造成二义性,编程时应该避免. 总之,C 语言的特点中有诱人的优点,也有值得注意的不足,使用时应扬长避短. 1.2.2 C 语言的应用 正是由于 C 语言具有很多方便编程的特点,许多编程者喜欢使用这种语言,因此,C 语言仍然是当前比较流行的一种编程语言,它被用于系统软件和应用软件的开发研制之中. 下面简单介绍 C 语言应用较多的几个方面. 1.数据库管理系统及应用程序方面 . C 语言对非数值处理有较强的功能,又具有汇编语言的特点,因此被广泛用于开发数 据库管理系统和应用软件.大多数关系数据库管理系统软件都是用 C 语言开发的,例如, dBASE,FoxBASE,ORACLE 等.大多数数据库系统的应用软件也是用 C 语言开发的. 因此可见,使用 C 语言开发数据库管理系统和应用软件深受编程者欢迎. C 语言入门基础 5 2.图形图像系统和应用程序方面 . C 语言在图形图像的开发中有着广泛的应用.很多图形图像系统软件包都是采用 C 语 言编写的.例如,广泛被使用的通用图形软件系统 AutoCAD 就是用 C 语言开发的,并直 接支持 C 语言程序.C 语言编译系统本身带有许多具有绘图功能的函数,利用这些函数开 发图形应用软件十分方便,许多人直接使用 C 语言编译系统提供的绘图环境实现不同领域 的专业绘图设计. 3.编写与设备的接口程序方面 . C 语言在创建友好的交互式图形界面上有着广泛应用.使用 C 语言可以方便地实现下 拉式菜单,弹出式菜单和多窗口技术等功能,并且在编写与设备接口程序方面也有着广泛 的应用.通常人们喜欢用汇编语言编写设备接口程序,这样效率较高.由于 C 语言既具有 高级语言的特性又具有汇编语言的部分功能,因此,使用 C 语言和汇编语言混合编写接口 程序也很方便. 4.数据结构方面 . C 语言本身提供了十分丰富的数据类型,包括基本数据类型和构造数据类型. 使用 C 语 言提供的数据类型可以很方便地解决复杂的数据结构问题.例如,可以方便地编写关于链表 结构,队列结构和栈结构以及树结构的程序,而且在许多方面也有成熟的例程供选择使用. 5.排序和检索方面 . 在大量的数据处理问题中,排序和检索是重要的处理方法.使用 C 语言来编写排序和 检索程序既方便又简洁,因为 C 语言支持递归算法,使用递归函数编写排序程序,程序显 得更加清晰明了.所以,使用 C 语言进行烦杂的数据处理会非常得心应手. 以上列举了 C 语言在 5 个方面的应用,而 C 语言的应用还远不止这些方面.C 语言在 各个领域都可以使用,都会有较好的效果. 1.3 C 语言程序的特点 了解 C 语言程序的特点应从 C 语言的实际程序入手. 本节先列举几个 C 语言程序的例 子,进一步分析 C 语言程序的特点以及书写格式方面的要求,为逐步学习 C 语言的词法, 语法及编程打好基础. 1.3.1 C 语言程序举例 下面通过两个 C 语言程序的实例来认识和了解 C 语言程序的特点. 【例 1.1】 编写一个简单程序,输出显示如下字符串. This is a C_Language Program. 6 程序内容如下: C 语言基础教程 #include void main( ) printf(This is a C_Language Program.n); 运行该程序后,输出如下结果: This is a C_Language Program. 程序分析: 初次见到 C 语言程序,先介绍组成该程序的各条语句的功能. 程序的开始是一条具有预处理功能的文件包含命令#include .其中,#号是预 处理命令的标识符号,凡是开头为#号的命令都是具有预处理功能的命令;include 是关键 字,指出这是一条文件包含命令;其后的尖括号()内给出被包含文件的名称 stdio.h, 该文件是 C 语言编译系统提供的一个包含了有关输入输出操作的头文件.包含一个文件, 就是将该文件的内容放置在文件包含命令中,使该文件的内容可以在后面的语句中使用. 程序接下来定义一个主函数,主函数名称系统规定为 main,这里的主函数没有参数, 主函数没有返回值,使用的类型为 void,由于本书程序是在 VC+ 6.0 编译系统下运行, 因此任何函数都不得省略数据类型.主函数的函数体用一对花括号()括起来.该函数 体内只有一条语句,即调用 printf()函数的输出语句.printf()函数是标准格式输出函数,由 stdio.h 文件提供,它的功能是将参数中给定的字符串常量输出显示到显示器屏幕的当前光 标处.在字符串常量中,n 字符是换行符,使光标移到下行首列. 该例是 C 语言程序中最简单的程序,只有一个文件,文件中只有一条主函数,函数中 也只有一条语句,该语句的功能是将一个字符串常量输出显示到屏幕上. 【例 1.2】 编写一个程序,求两个已知的整型数之和. 假定两个整型数是从键盘输入的,要求编写一个求两个整型数之和的函数 add(). 程序内容如下: #include int add(int a,int b) return a+b; void main() int x,y,sum; printf(Enter x and y: ); scanf(%d%d,&x,&y); sum=add(x,y); printf(x+y=%dn,sum); C 语言入门基础 7 运行该程序后,屏幕上显示下述信息: Enter x and y: 15 23 从键盘上输入两个整型数 15 和 23,用空格符分隔,按回车键结束输入后,屏幕上显 示如下结果: x+y=38 程序分析: 该程序是一个文件,文件中有两个函数.一个是 add()函数,用来求两个整型数之和, 该函数有返回值,即两个整型数的和值,该函数被主函数调用.另一个是主函数 main(), 该函数体内共有 5 条语句.第 1 条语句是说明语句,定义了 3 个 int 型变量 x,y 和 sum, 它们是自动类变量,没有默认值,定义后的值是无意义的.第 2 条语句调用 printf()函数, 输出显示一个字符串,具有提示信息的作用.第 3 条语句是调用系统提供的标准格式输入 函数 scanf()的输入语句,该语句的功能是从键盘的输入数据流中获取两个整型数,分别给 变量 x 和变量 y 赋值,使得变量 x 和 y 从键盘上获取值.第 4 条语句是赋值表达式语句, 使用赋值运算符(=)将调用函数 add()的返回值赋值给变量 sum, 使得变量 sum 获取值. 5 第 条语句是调用 printf()函数的输出语句,该语句是格式输出语句,先输出字符串x+y= , 再输出变量 sum 的值,即两个整型数之和的值. 在该程序中出现了两个由系统提供的输入/输出函数scanf() 和printf(). 这两个函数在程 序中经常出现,在本章稍后(1.4 节)讲述. 1.3.2 C 语言程序在结构上的特点 通过例 1.1 和例 1.2 可以看出, 语言的程序是由文件组成的, C 一个程序可以由一个或 多个文件组成,文件由函数组成,一个文件可以由一个或多个函数组成.由此可见,C 语 言程序实际是一个函数串,即 C 语言程序由若干个函数组成.在这些函数中,有且只有一 个是主函数.主函数是执行程序入口点,因此,一个程序既不能没有主函数,又不能有两 个或两个以上的主函数.程序中除了主函数以外的函数都是由主函数或由主函数调用的函 数调用的.程序中,函数之间只有调用关系,不允许在一个函数中再定义函数,即函数定 义不得嵌套. 函数是组成 C 语言结构化程序的最小模块,一个复杂的程序就是由若干个函数构成 的.函数由若干条语句组成.从前边的例子可以看到,函数由函数头和函数体组成;函数 头由函数名,函数类型和函数参数组成;函数体由一对花括号括起的若干条语句组成.语 句是由若干个单词组成的,单词之间用分隔符进行分隔.单词由字符组成,故字符是组成 C 语言程序的最小元素. 为了从头讲述程序的基本构成,本书将按如下顺序由小到大,由浅入深进行分析. (1)字符集,讲述 C 语言程序中的合法字符. (2)单词,讲述词法规则. (3)语句,讲述语法规则. (4)函数,讲述函数定义格式和调用方法. 8 C 语言基础教程 1.3.3 C 语言程序的书写格式 尽管 C 语言语句精练,简洁,语义丰富,格式灵活,然而,C 语言程序的可读性比较 差.为了提高程序的可读性,应该养成良好的书写习惯. C 语言程序的书写格式习惯上有如下要求. 每行通常写一条语句.有些短语句也可以一行写多条;长语句也可以一条写成多 行,一般情况下不加续行符.C 语言程序分行处理比较灵活,只要不将单词分隔就 可以了.例如,字符串常量通常写作一行,如果字符串常量太长,可分成多个字 符串来写. 每条语句结束时加分号(; )作为语句结束符.当一条语句没有结束时,一定不要 加分号.C 语言程序的语句通常不加语句标号,只有 goto 语句要转向的语句才加 语句标号. 花括号的书写格式有三种,本书采用其中的一种,规定如下:每个花括号占一行, 左花括号和右花括号都与使用它们的语句对齐,花括号内的语句向右缩进两个字 符或一个水平制表符. 适当采取缩进格式是很必要的.采用缩进方法会使程序更加清晰易读.例如,循 环语句的循环体,条件语句中if 体,else 体等都要缩进.按照通常的惯例,应该对 齐的一定对齐,应该缩进的缩进,尽量提高程序的可读性. 在程序中尽量使用注释信息,增强程序的可读性.注释信息是用注释符标识的, 注释符开头用/*,结束用*/,其间的字符为注释信息.注释信息用来解释和注释程 序内容. 读者在学习 C 语言编程时,从一开始就要养成良好的书写习惯,按照人们的约定和习 惯来书写 C 语言程序,这样有助于提高程序的可读性.一个 C 语言程序如果书写不规范, 虽然可以编译通过,并输出正确结果,但是阅读程序很困难,有时会因书写不当而引起误 解,造成分析上的错误.所以,读者一定要注意 C 语言程序的书写格式.下面举一个例子, 该例是一个书写不规范的程序,读者会感到读起来很困难. 【例1.3】 将例1.2 的程序以不规范的形式书写如下,请读者试读一下,看看有何体会. 该程序在语法上没有错误,只是书写不规范.规范应该用例 1.2 中的格式书写. 程序内容如下: #include int add(int a,int b) return a+b; void main() int x,y, sum; printf(Enter x and y: );scanf C 语言入门基础 (%d%d, &x,&y);sum =add(x,y);printf (x+y=%dn, sum); 9 运行该程序后,输出结果与例 1.2 相同. 读者将例 1.2 程序与该例程序做一下比较,可以看到 C 语言程序规范书写的重要性. 1.4 标准设备的输入/输出操作 关于输入/输出操作和文件操作将在本书第 10 章中讲述.本节只讲述标准设备常用的 输入/输出操作,因为这些操作经常在程序中出现,为了方便阅读,先在这里讲述标准输入 设备键盘的输入操作和标准输出设备显示器屏幕的输出操作. 1.4.1 键盘的输入操作 键盘是标准输入设备,从键盘上读取数据的函数称为标准文件输入函数,又称标准文 件的读函数.常用的标准文件输入函数有以下 3 种. 1.获取一个字符的读函数 getchar() 该函数的功能是从键盘上一次读取一个字符,通常将它赋值给一个相应的变量.键盘 上输入的字符先被存放到一个输入缓冲区中,使用该函数从缓冲区中读取字符. 该函数格式如下: int getchar() 其中,getchar 是函数名.该函数无参数,返回值类型为整型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论