1、,C程序设计教程,孙爽滋,课程要求,参阅计算机文化基础一书第1、2章,课前请做好预习,保持课堂安静,头脑清醒,思维活跃,认真、独立、按时完成并提交作业,重视上机实践,有效利用宝贵的上机时间,第1章 C语言程序设计初步,第1章 C语言程序设计初步,1.1 程序设计语言1.1.1 程序设计语言的发展,第一代:机器语言=CPU指令系统由0、1序列构成的指令码组成 如:10000000 加 10010000 减 优点:机器可直接执行,速度快。 缺点:程序长,难记,难理解,不易查错。,第二代:汇编语言= =用助记符描述的指令系统。如:Mov Ax,bp+4 push d1, 优点:比机器语言较易理解,执
2、行速度快。 缺点:难度大,非专业人士难以掌握。,面向机器的语言,第三代:面向过程的高级语言= =或称算法语言。如: Fortran,Basic,Pascal,C 等等。 优点:灵活,易于理解,容易查错。 缺点:对大型程序而言维护性较差,对“拟定”好的 程序难以扩充,修改(所谓牵一而动百)。,客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象,第四代:非过程化的高级语言=是一种面向对象的设计 语言,如:C+,Java 等等。 优点:灵活、易于理解、维护、修改、扩充。 缺点:掌握难度较大。,Ada,ALGOL60,ALGOL6
3、8,Pascal,Modula-2,CPL,BCPL,B,C,C+,Java,LISP,PROLOG,COBOL,FORTRAN77,FORTRAN,PL/1,Simula 67,Smalltalk 80,BASIC,ANSI-BASIC,QBASIC,VB,FORTRAN90,第1章 C语言程序设计初步,第1章 C语言程序设计初步,1. 1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(Combined Programming Language), 2. 1967年,Matin Richards对CPL进行改进、简化、推出了BCPL (Basi
4、c Combined Programming Language),附:C语言发展过程, 3. 1970年,美国贝尔实验室Ken Thomson 以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。, 4. 1972年美国贝尔实验室D.M. Ritchie 在B语言基础上设计出了C语言,并用其将UNIX系统全部改写并实现。,附: C语言发展过程,第1章 C语言程序设计初步,附: C语言发展过程, 5. 经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语言广泛应用,各种机器皆可使用。, 6. 1978年,美国Brain W.Kernighan与 Dennis. M
5、. Ritchie 联合出版一书The C Programming Language成为 ANSI C之基础。,第1章 C语言程序设计初步,附: C语言发展过程,注:以ANSI C 为基础: 不同机器有不同版本,尤其是函数均应参考 相应的版本。,特别说明: C语言的编译环境有多种 如:Turbo C, Borland C, Microsoft C 等, 7. 1983年,美国标准化协会(ANSI) 制定了ANSI C。,第1章 C语言程序设计初步,1.1.2 程序设计语言的支持环境,第1章 C语言程序设计初步,1.1.3 源程序的编辑、编译、连接和执行,第1章 C语言程序设计初步,1. 编辑,
6、:建立源程序。,2.编译,3.连接,:二进制目标代码与系统标准模块连 接,生成可执行文件。,:检查源程序中的语法错误,并建立目 标代码。,4.运行,:要计算机执行指定的命令。,程序代码的录入,生成源程序*.c,语法分析查错,翻译生成目标程序*.obj,与其它目标程序或库链接装配,生成可执行程序*.exe,第1章 C语言程序设计初步,1.1.3 源程序的编辑、编译、连接和执行,第1章 C语言程序设计初步,Turbo C向用户提供了一个集成开发环境把程序的编辑(Edit)、编译(Compile)、连接(Link)和运行(Run)等操作全部集中在一个界面上进行。准备工作安装 Turbo C。为了能使
7、用Turbo C,必须先将Turbo C编译程序装入磁盘的某一目录下,例如放在D盘根目录下一级TC子目录下。,附:用Turbo C 运行C程序的步骤,调用 Turbo C程序。DOS状态下,进入TC所在子目录,从键盘键入“tc” 命令即可。WINDOWS状态下,双击“tc”图标,菜单区,编辑区,状态区,调用 Turbo C程序。DOS状态下,进入TC所在子目录,从键盘键入“tc” 命令即可。WINDOWS状态下,双击“tc”图标,菜单区,编辑区,状态区,在集成开发环境的上部,有一行“主菜单”, 其 中包括下面8个菜单项:File Edit Run Compile Project Option
8、Debug Break/Watch以上8个菜单项分别代表:文件操作、编辑、运行、编译、项目文件、选项、调试、中断/观察等功能。用键盘上的“”和“”键可以选择菜单条中所需要的菜单命令。,File菜单,File下拉菜单,执行Load子菜单,Load对话框,编辑(Edit)C语言源文件。根据需要输入或修改源程序。,调用 Turbo C程序。DOS状态下,进入TC所在子目录,从键盘键入“tc” 命令即可。WINDOWS状态下,双击“tc”图标,编译(Compile)源程序。选择“Compile”菜单并在其下拉菜单中选择“Compile to OBJ”命令 ,则进行编译,得到一个后缀为.obj的目标程序
9、。,连接(Link)目标程序,生成可执行文件。选择菜单命令“Compile/Link EXE file”, 进行连接操作,可得到一个后缀为.exe的可执行文件。,在编译或连接时,屏幕上会显示有无错误和有几个错误的提示,在屏幕的下半部分显示出有错误的行和错误的原因。根据提示信息修改源程序,再次进行编译和连接。,出错,按任意键继续,编辑状态下,按F9键进行编译,在编译或连接时,屏幕上会显示有无错误和有几个错误的提示,在屏幕的下半部分显示出有错误的行和错误的原因。根据提示信息修改源程序,再次进行编译和连接。,出错信息窗,在编译或连接时,屏幕上会显示有无错误和有几个错误的提示,在屏幕的下半部分显示出有
10、错误的行和错误的原因。根据提示信息修改源程序,再次进行编译和连接。,按回车键回到编辑程序状态,编辑后,按F9键重新编译,在编译或连接时,屏幕上会显示有无错误和有几个错误的提示,在屏幕的下半部分显示出有错误的行和错误的原因。根据提示信息修改源程序,再次进行编译和连接。,编译(F9)成功后,RUN,按ALT+F5看结果,在编译或连接时,屏幕上会显示有无错误和有几个错误的提示,在屏幕的下半部分显示出有错误的行和错误的原因。根据提示信息修改源程序,再次进行编译和连接。,直接按CTRL+F9,按ALT+F5看结果,第1章 C语言程序设计初步,1.2 计算机中的数据1.2.1进位计数制,是人们利用符号来计
11、数的方法。一种进位计数制包含一组数码符号和两个基本因素 (1)基: 数制所使用的数码个数称为“基”。 (2)权: 数制每一位所具有的值称为“权”。,第1章 C语言程序设计初步,1.2 计算机中的数据1.2.2 二进制计数及其运算,二进制特点,(1)易于物理实现 (2)运算规则简单: R (R+1)/2种规则 (3)机器运行可靠性高 (4)通用性强适于数值信息和非数值信息的处理。,二进制数的表示方法,(1)数码为2个:0和1。 (2)进位方法:逢2进1,借1当2。 (3)位权:23,22,21,20,2-1,2-2,2-3 (4)举例:01011010.01=027+126+025+124+12
12、3 +022+121+020+02-1+12-2,二进制数的算术运算规则:,第1章 C语言程序设计初步,1.2 计算机中的数据1.2.2 二进制计数及其运算,(1) 加法: 0+0=0 0+1=1+0=1 1+1=10 (有进位),(3) 乘法: 00=10=01=0 11=1,(4) 除法: 01=0 11=1,(2) 减法: 0-0=1-1=0 1-0=1 0-1=1 (向高位借位),二进制数的算术运算规则:,例1 1010+0111=? 例2 1010-0111=?,第1章 C语言程序设计初步, 1010 1010 + 0111 -0111 10001 0011,1.2 计算机中的数据1
13、.2.3 不同进制之间的转换,第1章 C语言程序设计初步,1二、八、十六进制 十进制 原则:按位权展开法 即把一个任意R进制数转换成十进制数,其十 进制数值为每一位数字与其位权之积的和。,例1 101101.01B=125+024+123+122+021 +120 +02-1 +12-2=45.25 例2 1705.25O=183+782+081 +580 +28-1 +58-2 =965.328125 例3 49B7.1H=4163+9162+11161+7160 +116-1 =18871.0625,1.2 计算机中的数据1.2.3 不同进制之间的转换,第1章 C语言程序设计初步,2二、八
14、、十六进制 十进制 原则:整数部分除R取余倒排序法 小数部分乘R取整顺排序法 例1 725.625=( ? )B,解1 整数部分: 2|725 2|362 余数=1 2|181 余数=0 2|90 余数=1 2|45 余数=0 2|22 余数=1 2|11 余数=0 2|5 余数=1 2|2 余数=1 2|1 余数=0 0 余数=1 商为0,转换结束,例1 725.625=( ? )B1011010101.101,第1章 C语言程序设计初步,小数部分: 0.625 2 1.250整数=1 0.250 2 0.500整数=0 2 1.000整数=1 0.000 积为0, 转换结束,139,(13
15、9)10=(10001011)2,除余法,(139)10(?)2,第1章 C语言程序设计初步,第1章 C语言程序设计初步,整数部分: 2|59 2|29 .余数=1 2|14 .余数=1 2|7 .余数=0 2|3 .余数=1 2|1 .余数=1 0 .余数=1 商为0,转换结束,提示: 若小数部分经过乘2取整运算后,无法得到0.000,则当达到题目要求的精度即可停止进制间的转换。,=( 111011.0101001 )B,例2 59.32 解2 小数部分: 0.32 2 0.64.整数=0 2 1.28 .整数=1 0.28 2 0.56整数=0 2 1.12整数=1 0.12 2 0.24
16、整数=0 2 0.48.整数=0 2 0.96.整数=0,第1章 C语言程序设计初步,3八、十六进制二进制(1) 每一位八进制数对应一个三位二进制数,逐位展开。 (2) 每一位十六进制数对应一个四位二进制数,逐位展开。,第1章 C语言程序设计初步,3八、十六进制二进制(1) 每一位八进制数对应一个三位二进制数,逐位展开。 (2) 每一位十六进制数对应一个四位二进制数,逐位展开。,例 1. 6 3571.402O=(?)B 2. 91a28.b71H=(?)B,4八、十六进制二进制 (1)二八:将二进制数从小数点开始分别向左(即整数部分)或向右(即小数部分)每三位组成一组,不足三位补零;将每组三
17、位二进制数用相应的一个八进制数表示。 (2) 二十六:将二进制数从小数点开始分别向左(即整数部分)或向右(即小数部分)每四位组成一组,不足四位补零。将每组四位二进制数用相应的十六进制数表示。,例 1. 11100.11001=(?)O=(?)H 2. 1011001.1101011=(?)O=(?)H,3八、十六进制二进制(1) 每一位八进制数对应一个三位二进制数,逐位展开。 (2) 每一位十六进制数对应一个四位二进制数,逐位展开。,第1章 C语言程序设计初步,=011 100.110 010 =34.62O =0001 1100.1100 1000 =1c.c8H,第1章 C语言程序设计初步
18、,解: 1. 11100.11001=(?)O=(?)H,2. 1011001.1101011=(?)O=(?)H,=001 011 001.110 101 100 =131.654O,=0101 1001.1101 0110 =59.d6H,3. 3571.402O=(?)B =110 011 101 111 001.100 000 010B,4. 91a28.b71H=(?)B =1001 0001 1010 0010 1000.1011 0111 0001B,原码表示法最高位表示数的符号,其他为数值位。 如:97原=01100001 若用8位表示一个整数 -97原=11100001反码表
19、示法正数的反码等同于原码 负数的反码是将正数的原码取反 如: 97反= 97原 =01100001 -97反= 97原=10011110,附:原码、反码、补码,第1章 C语言程序设计初步,如: 97补=97反= 97原 =01100001 -97补=1 0011110 +1 1 0011111,补码表示法 正数的补码等同于原码 负数的补码是将各位取反,末位加1,如: 2补=2反= 2原 =00000010-2补= 1 1111101 + 1 1 1111110,附:原码、反码、补码,第1章 C语言程序设计初步,1.3.1 基本符号集 在C语言中可出现的字符:大小写 英文字母、数字转义字符和键盘
20、字符。,第1章 C语言程序设计初步,1.3 C语言符号集,1.3.2 标识符 用来标识变量名、函数名、数组名 和文件名等对象的有效字符序列。,1.3.1 基本符号集,第1章 C语言程序设计初步,1.3 C语言符号集,1.3.2 标识符,命名规则:(1)由英文字母、数字和下划线组成,且首字符必须 是字符或下划线(2)长度不限,但一般前8个字符有效 (3)不可和关键字同名(见表1-2)(4)严格区分大小写(5)做到“见名知意”,第1章 C语言程序设计初步,1.4 用库函数组装C语言,/* The first C Program*/#include main() printf(“Hello,Worl
21、d!”);,输出:Hello,World!,第一个程序 Hello,World!,第1章 C语言程序设计初步,/* The first C Program-modified!*/#include main() printf(“Hello,World!”); getch();,本程序的作用是在屏幕上输出“Hello World!.”一行信息:其中 main 表示“主函数”。每一个C程序都必须有且只有一个 main 函数;函数体由大括弧括起来;本例中主函数内只有一个输出语句-printf语句;“n”是换行符,即在输出“This is a C program.”后回车换行;每条语句最后有一分号;使用
22、getch( )函数观测程序在屏幕上的输出结果。,第二个程序:求任意两个数中的大值。,第1章 C语言程序设计初步,1.5 自己设计C函数,/*the example calculate the maximum of a and b*/#include /* This is the main program */main() int a,b,c; scanf(“%d%d”,运行结果:12 24max=24,第二个程序:求任意两个数中的大值。,第1章 C语言程序设计初步,/*the example calculate the maximum of a and b*/#include /* This
23、 is the main program */main() int a,b,c; scanf(“%d%d”,/*声明部分,定义变量*/,/*通过键盘输入变量a、b的值*/,/*调用max函数,将得到的值赋给c*/,/*输出c的值*/,格式特点习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式,main( ) . . . . . . .,main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum);,优秀程序员的素质之一:使用TAB缩进 对齐有足够的注释有合适的空行,第1章 C语言程序设计初步,结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/* */为注释,不能嵌套不产生编译代码,例: /*This is the main /* of example1.1*/ */,编译预处理命令,第1章 C语言程序设计初步,