C语言程序设计北京洪恩教育科技有限公司第1章C语言概述第1章C语言概述•1.1C语言的发展及主要特点•1.2C程序的基本结构•1.3C程序的开发过程•1.4C语言集成开发环境的使用1.1C语言的发展及主要特点•1.1.1C语言的发展史•1.1.2C语言的主要特点1.1.1C语言的发展史•C语言的祖先是ALGOL60,1963年,英国的剑桥大学和伦敦大学首先将ALGOL60发展成CPL;•1967年英国剑桥大学的MartinRichards将CPL改写成BCPL;•1970年美国贝尔实验室的KenThompson将BCPL修改成B语言,并用B语言开发了第一个高级语言的UNIX操作系统。•1972年KenThompson与在UNIX系统上的亲密合作者DennisRitchie将B语言改成了C语言;•1978年,BrainW.Kernighan、KenThompson与DennisRitchie合著了著名的《TheCProgrammingLanguage》,该书介绍的C语言成为后来广泛使用的C语言版本的基础;•由于C语言自身的优点,在其后的十几年中得到了广泛的使用,适用于不同机种和不同操作系统的C编译系统相继问世。•1983年美国国家标准局(ANSI)制定了C语言标准,这个标准不断完善,并从1987年开始实施ANSI的标准C。•1988年,ANSI公布了标准ANSIC。1.1.2C语言的主要特点(1)C语言简洁、紧凑,使用方便、灵活。(2)C语言是中级语言,同时具备了高级语言和低级语言的特征。(3)C语言是结构化语言,具有结构化的控制语句。(4)C语言具有各种各样的数据类型。(5)C语言适用范围广。(6)生成目标代码质量高,程序执行效率高。1.2C程序的基本结构•1.2.1C程序的实例•1.2.2输入输出函数的简单介绍•1.2.3C程序的基本结构•1.2.4C语言的词汇1.2.1C程序的实例例1.1一个简单的C程序。voidmain(){printf(Hello,Human!\n);/*输出Hello,Human!*/}程序的运行结果为:Hello,Human!对上述程序说明如下:(1)main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有且只有一个主函数main。(2)函数体由大括号{}括起来。上面例子中的程序体只有一个printf输出语句。printf是C语言中的输出函数,其功能是把要输出的内容送到显示器去显示。语句中的双引号用来显示一个字符串,双引号内的字符串将按原样输出;“\n”是换行符,即在输出“Hello,Human!”后回车换行。例1.2一个复杂的C程序。#includemath.h/*include为文件包含命令*/#includestdio.hmain()/*主函数*/{doublex,y;/*定义变量*/printf(inputnumber:);/*输出字符串“inputnumber:”*/scanf(%lf,&x);/*输入变量x的值*/y=cos(x);/*求x的余弦,并把它赋给变量y*/printf(cosineof%lfis%lf\n,x,y);/*显示程序运算结果*/}程序的运行情况为:inputnumber:1.2↙cosineof1.200000is0.362358本书用↙代表回车•上述程序中:(1)/*……*/表示注释部分。注释对编译和运行不起作用。注释可以加在程序中的任何位置。(2)在main()之前的两行语句称为预处理命令,这里的include称为文件包含命令,其意义是把尖括号或引号“”内指定的文件包含到本程序来,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h,因此也称为头文件或首部文件。(3)在本例中,使用了三个库函数:输入函数scanf、余弦函数cos、输出函数printf。cos函数是数学函数,其头文件为math.h文件,因此在程序的主函数前用include命令包含了math.h。说明:scanf和printf是标准输入输出函数,其头文件为stdio.h,在主函数前也用include命令包含了stdio.h文件。C语言的头文件中包括了各个标准库函数的函数原型。因此,凡是在程序中调用一个库函数时,都必须包含该函数原型所在的头文件。(4)在例题中的主函数体又分为两部分:说明部分和执行部分。①说明部分完成变量的类型说明。C语言规定,源程序中所有用到的变量都必须先说明,后使用,否则将会出错。本例中使用了两个变量x,y,用来表示输入的自变量和cos函数值。由于cos函数要求这两个量必须是双精度浮点型,故用类型说明符double来说明这两个变量。②说明部分后的四行为执行部分或称为执行语句部分,用以完成程序的功能。•执行部分的第一行是输出语句,调用printf函数在显示器上输出提示字符串,提示用户输入自变量x的值。•第二行为输入语句,调用scanf函数,接受键盘上输入的数并存入变量x中。•第三行是调用cos函数并把函数值送到变量y中。•第四行是用printf函数输出变量y的值,即x的余弦值。到此程序全部结束。1.2.2输入输出函数的简单介绍1.格式输出函数printf2.格式输入函数scanf1.格式输出函数printf()•格式输出函数printf()的功能是按指定的格式输出数据,其一般的调用格式为:printf(“格式控制字符串”,参数表);•其中,printf是函数名,其后括号中的内容为该函数的参数;格式控制字符串用双引号括起来,用来规定输出格式,如%f用来输出实数,%c用来输出字符;参数表中包含零个或多个输出项,这些输出项可以是实数、变量或表达式,多个输出项之间用逗号隔开。•例如:printf(%d,%d,a,b);•用来按十进制整数形式输出变量a和b2.格式输入函数scanf•格式输入函数scanf的功能是按指定的格式输入数据,其一般的调用格式为:scanf(格式控制字符串,参数表);•其中,printf是函数名,其后括号中的内容为该函数的参数:格式控制字符串用双引号括起来,用来规定输入格式,其用法和printf函数中规定的相同;参数表中至少包含一个输入项,且必须是变量的地址(变量地址的表示形式是在变量名前加上一个“&”),多个输入项之间用逗号隔开。•例如:scanf(%d%d,&a,&b);•用来接收从键盘输入的两个十进制整数,并分别存放在变量a和b中。1.2.3C语言的基本结构•函数是C程序的基本结构,一个C程序由一个或多个函数组成,一个C函数由若干条C语句构成,一条C语句由若干基本单词组成。•C函数是完成某个整体功能的最小单位,是相对独立的模块。简单的C程序可能只有一个主函数,而复杂的C程序则可能包含一个主函数和任意多个其他函数,所有C函数的结构都包括三部分:函数名、形式参数和函数体。图1-1为C程序的一般格式。包含文件子函数类型说明全局变量定义main(){局部变量定义语句序列}sub1(形式参数表){局部变量定义语句序列}......subn(形式参数表){局部变量定义语句序列}图1-1C程序的一般格式•图1-1中,main为主函数名,sub1()到sunbn()为子函数名,在C程序中,主函数名字是固定的,其他的函数名则可以根据标识符的命名方法任意取名;形式参数是函数调用时进行数据传递的主要途径,当形式参数表中有多个参数时,相互之间用逗号隔开。有的函数可能没有形式参数;花括号{}扩起来的部分为函数体,用来描述函数的功能,一般函数体由变量定义和完成本函数功能的语句序列组成。•程序在执行时,无论各个函数的书写位置如何,总是先执行main()函数,再由main()函数调用其他函数,最终终止于main()函数。1.2.4C语言的词汇•1.标识符•2.关键字•3.运算符•4.分隔符•5.常量•6.注视符1.标识符•标识符用来表示程序中使用的变量名、函数名、标号、数组名、指针名、结构体名、共用体名、枚举常量名以及用户定义的数据类型名等,除库函数的函数名由系统定义外,其余都由用户自定义。•C语言规定,标识符由字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。•例如:标识符a,x,x3,BOOK_1,sum5是合法的。而以下标识符是非法的:①3s以数字开头。②s*T出现非法字符*。③-3x以减号开头。④bowy-1出现非法字符-(减号)。•在使用标识符时还必须注意以下几点:(1)标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。例如在某版本C中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。(2)在标识符中,大小写是有区别的。例如BOOK和book是两个不同的标识符。(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于阅读理解,作到“顾名思义”。2.关键字•关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。•用户定义的标识符不应与关键字相同。•C语言的关键字分为以下几类:(1)类型说明符。用于定义和说明变量、函数或其他数据结构的类型。(2)语句定义符。用于表示一个语句的功能。(3)预处理命令字。用于表示一个预处理命令。autovolatileswitchsignedshortsizeofdefaultbreakwhiletypedefunionunsignedfloatdocasecharconstcontinueregisterfordoubleelseenumexternstructreturngotoifintlongstaticvoid表1-1ANSIC标准规定的关键字ANSIC标准规定的关键字有32个,如表1-1所示。3.运算符•C语言中的运算符由一个或多个字符组成。•运算符与变量、函数一起组成表达式,表示各种运算功能。4.分隔符•分隔符用来分隔相邻的标识符、关键字和变量等。•C语言中常用的分隔符有逗号、空格、制表符等5.常量•C语言中使用的常量可分为数值常量(如12,1.2E2等)、字符常量(如’m’)、字符串常量(如”Human”)、符号常量和转义常量等多种。6.注视符•以“/*”开头并以“*/”结尾的字符串为C语言的注释符。•注释可出现在程序中的任何位置,用来提示用户或解释程序的意义。•程序编译时,不对注释作任何处理。1.3C程序的开发过程•1.编辑•2.编译•3.连接•4.运行1.编辑•一般来说,编辑是指C语言源程序的输入和修改。•使用文本编辑器来创建源代码的文件,最后以文本文件的形式存放在磁盘上,文件名由用户自行定义,扩展名一般为.c,例如hello.c,b.c等。•许多文本编辑器都可以用来编辑源程序,例如Windows记事本、DOS的EDIT等。2.编译•编译是编译器把C语言源程序翻译成二进制目标程序。•目标程序文件的主文件名与源程序的主文件名相同,扩展名为.obj。•如果在编译的过程中出现错误,系统会给出“出错信息”,此时用户需要回到编辑阶段进行修改,直到编译通过为止。3.连接•编译成功后的目标程序仍然不能运行,需要用连接程序将编译过的目标程序和程序中用到的库函数连接装配在一起,形成可执行的目标程序。•可执行文件的主文件名与源程序的主文件名相同,其扩展名为.exe。4.运行•连接后生成的可执行文件装入内存后即可以运行,并输出运行结果。•在很多公用环境,如:MS-DOS、UNIX和Linux操作平台中,只要键入相应的可执行文件名即可运行一个程序。•在其他环境下,例如Windows环境下可以通过选择菜单中的选项或按下特殊键来编辑并执行C程序。所产生的程序还可以通过双击文件名或图标直接从操作系统运行。•如果在运行程序的过程中得不到预期的结果,就要重复进行编辑、编译、连接、运行四个步骤,如图1-2所示。图1-2C程序的开发过程1.4C程序的集成开发环境•1.4.1TurboC2.0的启动•1.4.2TurboC的集成开发环境•1.4.3