第1章概论 C语言ppt课件.ppt
2023/1/10,华中科技大学计算机学院C语言课程组,1,C语言与程序设计The C Programming Language,第1章 概论华中科技大学计算机学院,2023/1/10,华中科技大学计算机学院C语言课程组,2,主要内容,程序设计语言与程序设计学习C语言程序设计的第一个例子。C语言的产生与发展,C语言的语言特征,C语言的标准。计算机硬件系统的组成,数的编码表示以及数在内存中的表现形式。算法的概念及其表示方法。对C语言程序设计作了概略性的介绍。同时介绍了N进制数,数之间转换的方法,以及原码、补码、反码及其相关运算。,2023/1/10,华中科技大学计算机学院C语言课程组,3,1.1 程序设计语言与程序设计,计算机语言包括机器语言、汇编语言和高级语言这三类语言。如果不涉及汇编语言,程序设计语言往往就是指高级语言。程序设计语言是以具有特定语义的符号为基本构成单位、以语法为程序构成规律、专门用于定义、组织、并完成各种各样的计算任务而形成的体系。,2023/1/10,华中科技大学计算机学院C语言课程组,4,程序与程序设计,程序是用程序设计语言表示的计算机解题算法或计算机解题任务。程序设计是将解题任务转变成程序的过程。Nell Dale等人指出:程序就是要求计算机执行的指令序列。程序设计就是如何计划、安排计算机必须遵循的操作步骤及顺序的过程。,2023/1/10,华中科技大学计算机学院C语言课程组,5,1.2 学习C语言程序设计的第一个例子,例1.1 输入自己的名字的汉语拼音,要计算机问候自己并且输出这是自己学习C语言的第一个程序的句子。,2023/1/10,华中科技大学计算机学院C语言课程组,6,例1.1的程序,#include void show(char str);int main(void)char name20;printf(Input your name please!n);gets(name);printf(Hello%s!n,name);show(name);return 0;void show(char str)printf(This is the first program for%s to learn C programming!n,str);源程序ex1_1.c,2023/1/10,华中科技大学计算机学院C语言课程组,7,操作例1.1的程序,双击Visual C+6.0(即VC 6.0)图标打开VC 6.0 选File,再选下拉菜单中的New,在New窗口中的Project页(缺省)中选择Win32 Console Application(选中变蓝),并且在Project Name编辑框中输入工程名,如:Myproject。再单击OK按钮,在打开的窗口中单击An empty project(缺省),再单击Finish按钮。在打开的窗口中单击OK按钮。此时VC将创建一个空的工程。单击FileView,选中Source Files(变成蓝色),选File,再选下拉菜单中的New,单击C+Source File(变成蓝色),在File编辑框中输入hello.c,2023/1/10,华中科技大学计算机学院C语言课程组,8,操作例1.1的程序,点开Source Files目录,可以看见hello.c文件,双击hello.c,在右侧文本编辑区域输入例1.1中的源程序。选Build,再选下拉菜单中的Rebuild All。此时VC编译器将对源程序进行编译、链接,并且生成名字为Myproject.exe的可执行文件。选Build,再选Execute Myproject.exe运行Myproject.exe程序,2023/1/10,华中科技大学计算机学院C语言课程组,9,例1.1的程序的结果,人机交互与运行结果如下:Input your name please!Ping Li(此为输入信息)Hello Ping Li!This is the first program for Ping Li to learn C programming!,2023/1/10,华中科技大学计算机学院C语言课程组,10,#include stdio.h/*文件包含编译预处理命令*/void show(char str);)/*函数原型说明语句*/int main(void)/*主函数*/char name20;)/*声明语句*/printf(“Input your name please!n”);)/*输出提示*/gets(name);)/*读取用户名字*/printf(Hello%s!n,name);/*输出Hello和用户名*/show(name);/*调用show函数*/return 0;void show(char str)/*show函数的定义*/printf(“This is the first program for%s to learn C programming!n”,str);/*上行尾的是续行标志*/直接打开ex1_1.c,里面有详细注释源程序ex1_1.c,1.2.2 解释分析第一个C程序,2023/1/10,华中科技大学计算机学院C语言课程组,11,1.3 C语言的产生、发展与语言特征1.3.1 C语言的产生与发展,FORTRAN(1957年)ALGOL 60(1960年)传统C或K&R C(1978)CPL(1963年)ANSI C(1989,美国国家标准)BCPL(1967年)标准 C(ISO/IEC 9899:1990,俗称C90)B(1969年-1970年)标准 C(ISO/IEC 9899:1999俗称C99)C(1971年-1973年)最新标准 C(ISO/IEC 9899:2011俗称C11)图1.1 C语言的继承、产生与发展历程,2023/1/10,华中科技大学计算机学院C语言课程组,12,1.3 C语言的产生、发展与语言特征1.3.1 C语言的产生与发展,Matin Richards(BCPL语言),Ken Thompson(B语言),Dennis M.Ritchie(C语言,C语言之父,UNIX之父),2023/1/10,华中科技大学计算机学院C语言课程组,13,1.3.2 C语言的标准化,以1978年K&R C为代表的C语言被称为传统的C语言 1989年底公布美国第一个C语言的国家标准ANSI 89,简称C89 1990年,国际标准化组织ISO将其接受为C语言的国际标准,称为ISO/IEC 9899-1990。它是C语言的第一个国际标准,也称为标准C,简称C90。ISO/IEC在1995年公布了一个新的C语言标准草案,称为C95,供讨论和征求意见。接着ISO/IEC在1998年又公布新标准的草案WG14/N843和WG14/N897,进一步就C语言标准的完善征求意见。ISO/IEC于1999年12月公布了C语言国际标准ISO/IEC 9899:1999(E)。它是C语言国际标准9899的第二版。ISO/IEC于2011年12月公布了C语言国际标准ISO/IEC 9899:2011。它是C语言国际标准9899的第三版。,2023/1/10,华中科技大学计算机学院C语言课程组,14,1.3.3 C语言的特征,语言简洁紧凑目标代码质量高语言表达能力强 流程控制结构化 弱类型“中级语言”特性 书写自由、使用灵活 可移植性好,2023/1/10,华中科技大学计算机学院C语言课程组,15,1.4 计算机系统及内存编址,一台计算机硬件系统由CPU、内存、外存、其他I/O设备和总线组成。CPU 又称为中央处理器。CPU又是由运算器、控制器、指令计数器、内部寄存器、标志寄存器等部件组成。内存又称为内存储器,用以存放程序和数据。总线是用以连接计算机各个部件的线路,它完成各个部件之间的信息传送。根据传送信号种类的不同,总线又分成地址总线、数据总线和控制总线。,2023/1/10,华中科技大学计算机学院C语言课程组,16,内存编址,内存容量,字长,内存以字节为单位线性连续编址。即按照0 x0000,0 x0001,0 x0002,的方式;从低地址端开始向高地址端为每一个内存字节进行顺序连续编号。1024个字节称为1K字节,1024K字节称为1M字节,1024M字节称为1G字节。1024G字节称为1T字节。CPU数据总线的宽度(bit数)称为计算机的机器字长。对位,机器字长为字节;对位,机器字长为字节;对位,机器字长为字节。,2023/1/10,华中科技大学计算机学院C语言课程组,17,外存和其他I/O设备,外存指计算机的外存储器。常用的硬盘、软盘、U盘、光盘、以及磁盘阵列都属于外存。外存存储的信息在断电之后仍然能够保存。其他I/O设备:键盘,显示器,打印机,绘图仪,2023/1/10,华中科技大学计算机学院C语言课程组,18,1.5 数和字符的编码表示,1.5.1 进位计数制数量用于描述事物的多少。数目则是表示事物的个数。而表示数目的符号则是数字,往往简称为数。一个数在不同的进位制下具有不同的表示,因而形成数制的概念。数制是关于记数的法则。根据进位基数的不同,常用的有十进制、二进制、八进制、十六进制等。,2023/1/10,华中科技大学计算机学院C语言课程组,19,1.二进制数及其运算,1)二进制数二进制数是由0和1组成的数字串。对于一个二进制数来讲,它具有两个下面基本特点:(1)只有0和1两个不同的数字符号。(2)逢2进位1。,2023/1/10,华中科技大学计算机学院C语言课程组,20,二进制数的权值,对由进位计数制描述的数来讲,一个数字符号在该数的不同的数位具有不同的权(也称为权值或基值),因此所表现的值是不一样的。二进制数也是如此。二进制数中不同的数位所具有的权值见教材表1.1 二进制数的权值.二进制数整数(10110110)2的值是:(10110111)2=127+026+125+124+023+122+121+120=(183)10而带二进制小数的二进制数(1011.1101)2的值是:(1011.1101)2=123+022+121+120+12-1+12-2+02-3+12-4=(11.8125)10,2023/1/10,华中科技大学计算机学院C语言课程组,21,2)二进制数的运算,二进制加法规则有四条:0+0=0 0+1=1+0=1 1+1=0 向高位进位1 1+1+1=1 向高位进位1二进制减法规则也有四条:0-0=0 1-1=0 1-0=1 0-1=1 向高位借位1,2023/1/10,华中科技大学计算机学院C语言课程组,22,二进制加法举例,例1.2 二进制加法举例,求(10110111)2+(01011011)2的和。1 0 1 1 0 1 1 1+0 1 0 1 1 0 1 1进位 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0所以,(10110111)2+(01011011)2=(100010010)2,2023/1/10,华中科技大学计算机学院C语言课程组,23,二进制减法举例,例1.3 二进制减法举例,求(10110111)2-(01011011)2的差。借位 1 0 1 1 0 0 01 0 1 1 0 1 1 1-0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0所以,(10110111)2-(01011011)2=(01011100)2,2023/1/10,华中科技大学计算机学院C语言课程组,24,2.八进制数及其运算,八进制数是由0到7组成的数字串。八进制数具有如下两个基本特点:(1)只有0,1,2,3,4,5,6,7八个不同的数字符号。(2)逢8进位1。在C语言中,通过加前导零的方式来表示一个数是八进制数。如:0136表示的是八进制数(136)8。,2023/1/10,华中科技大学计算机学院C语言课程组,25,3十六进制数及其运算,将4位二进制数组合成为十六进制数。与二进制、八进制数类似,十六进制数也有两个基本特点:(1)只有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六个不同的数字符号(AF也可以采用小写英文字母af)。这十六个数字符号与二进制、八进制、十进制数之间的关系如表1.2所示。(2)逢16进位1。在C语言中,通过加前导0 x或前导0X的方式来表示一个数是十六进制数。如:0 x2d5b表示的是十六进制数(2d5b)16。0XABCD也是合法的十六进制数。,2023/1/10,华中科技大学计算机学院C语言课程组,26,表1.2十六进制的16个不同数字符号与十进制、八进制、二进制数之间的关系,2023/1/10,华中科技大学计算机学院C语言课程组,27,十六进制加减法运算举例,例1.5 十六进制加减法运算举例,求0XABCD与(2d5b)16的和,以及0XABCD与(2d5b)16的差。解 0XABCD+(2d5b)16=0XD928 0XABCD-(2d5b)16=0 x7E72,2023/1/10,华中科技大学计算机学院C语言课程组,28,1.5.2 进位制数之间的转换,1.十进制整数转换为二进制整数,2023/1/10,华中科技大学计算机学院C语言课程组,29,进位制数之间的转换,2.二进制整数转换为十进制整数用按权展开的方式即可求得该数的十进制表示。例1.7 二进制数(10111101)2转换为十进制数。解(10111101)2=127+026+125+124+123+122+021+120=128+32+16+8+4+1=(189)10,2023/1/10,华中科技大学计算机学院C语言课程组,30,进位制数之间的转换,3.二进制整数转换为八进制整数二进制数转换为八进制数可以采用3位分组法。从整数部分的最低位起,每3位分成1组,高位部分不足3位则通过加前导0的方式补足3位,然后把每3位二进制数用对应的八进制数来表示即可。例1.8 将二进制整数(10111101)2转换为八进制整数。解(10111101)2=(010 111 101)2=(275)8,2023/1/10,华中科技大学计算机学院C语言课程组,31,进位制数之间的转换,4.八进制整数转换为二进制整数八进制整数转换为二进制整数只需要将每一位八进制数用对应的二进制数表示即可。例1.9 将八进制数(177777)8转换为二进制数。解(177777)8=(001 111 111 111 111 111)2=(1111111111111111)2,2023/1/10,华中科技大学计算机学院C语言课程组,32,进位制数之间的转换,5.二进制整数转换为十六进制整数将二进制整数转换为十六进制整数采用4位分组法。4位二进制数的不同取值可以一一对应的完整描述十六进制中的09和AF。方法:从整数部分的最低位起,每4位分成1组,高位部分不足4位则通过加前导0的方式补足4位,然后把每4位二进制数用对应的十六进制数来表示。例1.10 将二进制数(10111101)2转换为十六进制数。解(10111101)2=(1011 1101)2=(BD)16,2023/1/10,华中科技大学计算机学院C语言课程组,33,进位制数之间的转换,6.十六进制整数转换为二进制整数十六进制数转换为二进制数只需要将每一位十六进制数用对应的4位二进制数表示即可。例1.11 将十六进制数(ABCD)2转换为二进制数。解(ABCD)2=(1010 1011 1100 1101)2=(1010101111001101)2,2023/1/10,华中科技大学计算机学院C语言课程组,34,1.5.3 数的机器码表示,1.机器数与真值机器数:在计算机中,将一个数的最高位定义为符号位,其余各位为数值位。并且规定符号位之值为0表示正,符号位之值为1表示负。用这种方法表示的数称为机器数。真值:机器数的数值称为该机器数的真值。也就是正、负号后跟二进制数的绝对值就构成真值。,2023/1/10,华中科技大学计算机学院C语言课程组,35,2.原码,定义:对于一个二进制数X,如果规定用最高位为符号位,其余各位为该数的绝对值。并且规定符号位之值为0表示正,符号位之值为1表示负,则采用这种方式形成的二进制编码称为称为该二进制数X的原码。,2023/1/10,华中科技大学计算机学院C语言课程组,36,求十进制数的原码表示,例1.12 求十进制数125和-125的8位、16位原码表示。解 先求十进制数125和-125的二进制表示:(125)10=0X7D=(+1111101)2,而(-125)10=-0X7D=(-1111101)2;根据定义:+1111101原=01111101(8位)+1111101原=0000000001111101(16位)而:-1111101原=11111101(8位)-1111101原=1000000001111101(16位),2023/1/10,华中科技大学计算机学院C语言课程组,37,真值0的原码表示不惟一,值得注意的是,根据定义,真值0的原码表示不惟一,有+0和-0之分。+0原=00000000(8位)-0原=10000000(8位),2023/1/10,华中科技大学计算机学院C语言课程组,38,3.补码,补码的定义是正数的补码等于正数的原码,负数的补码为其原码除符号位不动,其余各位变反再加1所得。例1.13 分别求十进制数35和-1在8位机和16位机中的补码表示。解 设x1=35,x2=-1;在8位机中,x10,x1 补=x1 原=00100011;x20,x2原=10000001,x2 补=11111110+1=11111111;在例1.13中,如果令x1和x2都为零,则容易算出它们的补码都是零。也就是说,对于真值0,其补码是惟一的。即:+0补=-0补=000000最右边式子中0的个数等于机器的字长数。,2023/1/10,华中科技大学计算机学院C语言课程组,39,4.反码,在计算机中,有时还会用到数的反码。对正数而言,其反码与原码、补码的表示相同;对负数而言,反码符号位的定义与原码、补码相同,但需要将对应原码的数值位按位变反。例1.14 分别求十进制数6和-1在8位机中的反码表示。解 6反=00000110;-1反=对10000001的数值位按位变反=11111110,2023/1/10,华中科技大学计算机学院C语言课程组,40,5码的内存存储形式,码是指计算机内存中存储的数据。根据存储数据的性质,码可以分为数值码、字符码和图象码。数值码用于表示数的大小,常见的有整数和浮点数。字符码用于表示英文字母、标点符号、控制字符以及汉字和其它文字的编码。图像码是用于表示图象中象素的颜色或灰度。虽然它们都是以二进制码的表现形式存储在内存之中,但物理意义却各不相同。C语言的基本处理对象是字符和数字。在16位计算机中,整型数占2个字节,在32位计算机中,整型数占4个字节。,2023/1/10,华中科技大学计算机学院C语言课程组,41,1.5.4 字符的编码表示,1字符的编码的概念计算机在屏幕上能够输出英文、汉字,乃至各种各样的民族文字,其基础在于对字符进行编码以及构造相应的点阵字模。用户的字符输入通过编码在内存中以二进制数码存储,机器内部对字符的处理实际上是对字符编码的处理。输出的时候则是通过字符的编码去索引对应的点阵字模到内存中,然后进一步通过内存中的点阵字模去控制显像管,在屏幕的指定位置将字符显示出来。,2023/1/10,华中科技大学计算机学院C语言课程组,42,1.4.4 字符的编码表示,解释教材:图1.3 英文字符O和汉字字符中的点阵字模示意图大写字母O的二进制编码依次是:0 x18,0 x24,0 x42,0 x42,0 x42,0 x42,0 x24,0 x18。中国的“中”字的二进制编码按照从上到下,从左到右顺序依次进行二进制编码,共需要32个字节。“中”字前8个字节的二进制编码是:0 x01,0 x80,0 x01,0 x80,0 xff,0 xff,0 xc1,0 x83,2023/1/10,华中科技大学计算机学院C语言课程组,43,2ASCII码,对于西文字符,其编码国际上采用的是ASCII码(American Standard Code For Information Interchange),是美国国家信息交换标准字符码的英文缩写。ASCII码采用单字节编码,并且规定字节的最高位留做校验位,只有低7位参与编码。ASCII码字符集中共有128个字符的编码。其中0 x00到ox1f前32个码和0 x7f最后一个码作为控制码,如控制回车、换行、振铃、空等等;从0 x20到0 x7e共95个编码,它们用来对数字字符09,大小写英文字母az和AZ,以及标点符号。计算机的终端(键盘、显示器)只能输入和显示这95个编码对应的字符。同时,打印机也只能打印输出这95个编码对应的字符。完整的ASCII码字符集请参阅附录1。,2023/1/10,华中科技大学计算机学院C语言课程组,44,3汉字编码,根据标准规定和计算机的输入、存储和显示过程,汉字编码有许多方式。常用的有国标码、区位码、拼音码、五笔字型码和汉字的机内码。拼音码和五笔字型码用于汉字的输入。国标码是我国于1981年颁布的通用汉字字符集(基本集)及其交换码标准规定的汉字字符编码方案,标准编号是GB231280总共收集了7445个汉字、字母、数字和符号。由于汉字属大字符集,单个字节不足以描述全部字符,因此汉字采用两字节编码方案。,2023/1/10,华中科技大学计算机学院C语言课程组,45,汉字区位码和机内码,区位码是将GB231280中的字符按其位置划分为94个区,每区94个字符的汉字编码方案。区位码是国标码的一种变形码,两者之间的转换可由下面的式子描述:国标码(十六进制)=区位码(十六进制)+0 x2020机内码是计算机存储和处理汉字时采用的汉字编码。为了与基本ASCII相互区分,机内码一般采用将国标码两个字节的每个字节的最高位置“1”的方式形成。机内码与国标码之间的转换关系是:机内码(十六进制)=国标码(十六进制)+0 x8080例如,中国的“中”字的机内码是0 xd0d6。因此它的国标码是0 x5056,而它的区位码是0 x3036。,2023/1/10,华中科技大学计算机学院C语言课程组,46,1.6 算法及其表示,1.6.1 算法的定义算法是指为解决某个问题所采取的方法和步骤,并且要具备下列性质。(1)有零个或多个执行算法所需要的数据作为输入。(2)有一个或多个经算法处理的数据作为输出。这种数据也称为算法的执行结果。(3)应只包含有限个步骤,且执行算法所需的时间也是有限时间。算法的这种性质称为算法的有限性或有穷性。(4)算法每一步所规定的动作应该是唯一确定的,没有二义的。算法的这种性质称为算法的确定性。,2023/1/10,华中科技大学计算机学院C语言课程组,47,1.6.2 算法的表示,选用一种合适的工具或方法来表达算法设计者的算法思想称为算法的表示或算法的描述。算法的表示方式多种多样,如自然语言方式,流程图方式、表格方式、伪码方式,等等。自然语言方式显然非常容易理解,但是在将算法转换为具体程序方面不够直观,它最适合表达算法的设计思想。流程图方式则非常具体,易于将它描述的算法编写成具体的程序,但是在程序规模变大的情况下,用流程图来完整描述算法不仅多余,而且不太可能。因此,流程图方式尤其适合初学者。本书重点介绍流程图方法。,2023/1/10,华中科技大学计算机学院C语言课程组,48,1.流程图的图符,流程图又称为框图。它是用它的图符来表示算法的每一步骤以及这些步骤之间的相互联系。学习用流程图来表达自己的算法思想首先要从认识组成流程图的图符的功能入手。流程图图符及其功能由表1.4 描述。,2023/1/10,华中科技大学计算机学院C语言课程组,49,2023/1/10,华中科技大学计算机学院C语言课程组,50,2.用流程图描述算法,问题问题:输入10个整数,统计正数和负数的个数。算法设计用变量x存储输入的整数,k表示输入的次数,positive表示正数的个数,negtive表示负数的个数。,2023/1/10,华中科技大学计算机学院C语言课程组,51,该问题算法的自然语言描述(1),(1)定义变量x,k,positive,negtive。(2)positive,negtive清零,k赋初值1。(3)判断k11吗?(或k10吗?)如果是,顺序执行步骤(4);否则转步骤(10)。(4)从键盘输入一个整数并且赋给变量x。(5)判断x是否等于零?如果是,转步骤(9);否则顺序执行步骤(6)。(6)判断x是否大于零?如果是,转步骤(8);否则顺序执行步骤(7)。,2023/1/10,华中科技大学计算机学院C语言课程组,52,该问题算法的自然语言描述(2),(7)负数个数negtive加1;转步骤(9);(8)正数个数positive加1;顺序执行步骤(9)。(9)次数k加1,转步骤(3)。(10)输出正数个数positive,负数个数negtive。(11)结束。,2023/1/10,华中科技大学计算机学院C语言课程组,53,该问题算法的流程图描述,2023/1/10,华中科技大学计算机学院C语言课程组,54,1.6.3 算法的实现,#include/下面的main为主函数名,括号中的void表示无参 int main(void)/main函数的函数体开始 int x,k,positive,negtive;/*说明语句说明各个整型变量*/k=1;/*循环次数变量k赋初值1*/positive=negtive=0;/*具有累加作用的变量清零*/,2023/1/10,华中科技大学计算机学院C语言课程组,55,while(k0)/*如果x0,执行内层if块,否则执行else块*/*内层if块开始*/positive+;/*正整数个数加1*/*内层if块结束*/else/*如果x0,转到此处执行*/*else块开始*/+negtive;/*负整数个数加1*/*else块结束*/*外层if块结束*/k+;/*循环次数变量k加1*/,2023/1/10,华中科技大学计算机学院C语言课程组,56,printf(positive=%d n,positive);/*输出正数个数*/printf(negtive=%dn,negtive);/*输出负数个数*/return 0;/main函数的函数体结束输入10个整数及程序的运行结果如下:8 0-3-5-7 5 9 6-16 20(符号表示回车,)positive=5 negtive=4,2023/1/10,华中科技大学计算机学院C语言课程组,57,1.7 学习C语言与程序设计的方法,作为初学者,如何学会、掌握、以及熟练使用C语言?如何用C语言去解决实际工作中的应用问题呢?这主要涉及四个方面的学习和训练。首先,要学习并理解C语言的语法和语义;其次,要学习并掌握一些基本数据结构和常用算法的设计;第三,要学习并熟悉与C语言的集成开发环境(Integrated Development Environment,简称IDE),如VC或者CodeBlocks集成开发环境;第四,要熟悉C语言相关的库函数(如C提供的各种各样的标准库函数)。,2023/1/10,华中科技大学计算机学院C语言课程组,58,1)学习并理解C语言的语法和语义,在C语言中,语义指的是构成C语言的各种符号的含义。由于C程序是由C语言的符号所组成,因此只有准确理解各种符号的语义,才有可能合适的使用各种符号来表达自己的编程思想。另一方面,C的语法规定了C语言符号集中各种符号的结合方式,规定了各种表达式、语句、函数、乃至程序结构等的构造规则。只有理解和掌握C语言的语法,才有可能正确的用各种符号去构造程序的各种成分,并进而构成满足算法要求、能解决实际应用问题的程序。,2023/1/10,华中科技大学计算机学院C语言课程组,59,2)学习并掌握一些基本数据结构和常用算法的设计,C语言对机器硬件有很强的操纵能力,在大多数情况下可以代替汇编语言。因此,要学好用好C,需要对字符、整型变量、数组元素在内存中的存储形式,对原码、补码,对字节中的位(bit)的操作做到熟练掌握。深刻理解各类指针及所指对象的声明、使用以及物理含义。对结构,结构数组、链表都要熟练掌握。由于文本是C语言的基本研究对象,对文本操作的各种算法,如统计字符、单词的个数,字符串的各种操作所涉及的算法要熟练掌握。熟练掌握各种算法,包括查找、排序、枚举、递推、迭代、分治、贪心、递归、回溯、动态规划、高精度计算等,都应该熟练掌握。这样才能奠定程序设计的扎实基础。,2023/1/10,华中科技大学计算机学院C语言课程组,60,3)熟悉集成开发环境,早期的编程者都是在行编辑程序(如:EDLIN)或者全屏幕编辑程序(如:WORDSTAR、SEE等)下编辑创建源程序,也称为源文件(如:.c程序)。然后以命令行方式对源程序进行编译,产生对应的目标程序(如:.obj文件)。由于目标程序地址的浮动性,它还需要经过链接程序Link进行链接,生成对应的可执行程序(如:.exe文件)。最后将可执行程序投入运行以得到运行结果。,2023/1/10,华中科技大学计算机学院C语言课程组,61,3)熟悉集成开发环境,时至今日,几乎所有的程序设计语言都有自己的集成开发环境。集成开发环境将源程序的创建、编辑,以及其后的编译、链接,乃至程序的调试与跟踪全部都集成于一体。为编程者提供了方便的程序开发环境。编程者要能够进行程序的设计和开发,调试与跟踪,就必须学会使用相应的集成开发环境。编程者只有学会使用集成开发环境提供的这些功能,才能进行程序的设计与开发。,2023/1/10,华中科技大学计算机学院C语言课程组,62,4)熟悉库函数,在C语言中,编译系统提供了一些标准的库函数。如输入/输出的标准库函数、字符串处理的标准库函数、数学计算的标准库函数等。编程者只要知道这些标准库函数的功能、调用方式、返回何种结果,并且能够在自己的程序中调用这些标准库函数就行了。完全没有必要自己去编写这些函数。,2023/1/10,华中科技大学计算机学院C语言课程组,63,本章小结,本章首先通过介绍学习C语言程序设计的第一个例子,说明了如何创建并运行第一个C程序同时,对第一个C程序进行了解释分析。从C语言的产生与发展,C语言的标准化,以及C语言的特征三个方面对C语言进行了概述。简单介绍了计算机硬件系统的概念。从进位计数制、数的机器码表示,以及字符的编码表示三个方面介绍了数和字符的机器码表示。尤其是ASCII码,要熟练掌握。在算法方面,介绍了算法的定义、算法的表示、算法的程序实现。最后,从学习并理解C语言的语法和语义、学习并掌握一些基本数据结构和常用算法的设计、熟悉集成开发环境,以及熟悉库函数四个方面介绍了C语言的学习方法。,谢谢观看!2020,