C语言电子教案第1章 程序设计基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言程序设计基础主讲教师:李玉凤1、掌握C语言的基本语法规则、数据类型,掌握C程序的基本结构。课程的基本要求3、熟悉并掌握一些基本算法和C语言程序设计技术,并能用C语言解决实际问题。2、学习运用高级语言进行程序设计的思想和方法。第1章程序设计基础1.1计算机内的数据表示1.2算法及其表示1.3程序设计语言1.4结构化程序设计1.1计算机内的数据表示数制及其转换常用计数方法十进制计数法进制计数法是“逢十进一”的例如:(1234.56)10=1×103+2×102+3×101+4×100+5×10-1+6×10-2各位的权值分别为:103、102、101、100、10-1、10-2。二进制计数法二进制计数法是“逢二进一”的。例如:(1001101.11)2=1×26+0×25+0×24+1×23+1×22+0×21+1×20+1×2-1+1×2-2各位的权值分别为:26、25、24、23、22、21、20、2-1、2-2、2-3。1.1计算机内的数据表示八进制数与十六进制数八进制计数法是“逢八进一”的,数码为:0、1、2、3、4、5、6、7。例如:(621)8=6×82+2×81+6×80各位的权值分别为:82、81、80。十六进制计数法是“逢十六进一”的,数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。例如:(8A1F)16=8×163+10×162+1×161+15×160各位的权值分别为:163、162、161、160。1.1计算机内的数据表示数制转换任意进制转换为十进制由r制数转换为十进制数可按照如下公式进行多项式展开求和即可:KnKn-1…K1K0.K-1K-2…K-m=Kn×rn+Kn-1×rn-1+…K1×r1+K0×r0+K-1×r-1+K-2×r-2+…K-m×r-m十进制转换为任意进制o可以采用除基取余法将十进制整数转换为r进制整数:将十进制整数除以r,得到商和余数,余数对应为r进制数低位的值;继续让商再除以r,得到商和余数,……重复此操作,直至商为0,如此得到的一系列的余数就是相应r进制数的各位数字,先得到的是低位,后得到的是高位。1.1计算机内的数据表示例如,将(29)10转换为二进制整数:因此,(29)10=(11101)22292141低位27023121101高位1.1计算机内的数据表示o可采用乘基取整法将十进制小数转换为r进制小数:将十进制小数乘以r,去掉乘积的整数部分,再将余下的纯小数乘以r,……重复此操作,直至乘积等于0或达到所需的精度为止,如此得到的一系列整数就是r进制小数的各位数字,先得到的是高位,后得到的是低位。例如,将(0.625)10转换为二进制小数:0.625×2=1.251高位0.25×2=0.500.5×2=11低位因此,(0.625)10=(0.101)2o由于整数和小数的转换方法截然不同,将十进制数转换为r进制数时,整数部分和小数部分要分开来进行转换。r进制小数能精确的转换为十进制小数,但十进制小数通常不能精确的转换为r进制小数。1.1计算机内的数据表示二进制与八进制、十六进制之间的转换o对于一个二进制数,只要依次(整数部分由低位到高位,小数部分由高位到低位)将其每3位或4位分成一组,就可以直接转换为八进制数或十六进制数。例如,(1000101111010011.01101)2=(105723.32)8(1000101111010011.01101)2=(8BD3.B8)16o将八进制数中的每一位用3位二进制数表示,将十六进制数中的每一位用4位二进制数表示,就能转换为对应的二进制数。1.1计算机内的数据表示原码,反码及补码在计算机中,“位”是数据的最小单位。计算机中的存储量是以字节来计算的,一个字节是8位二进制位。在计算机内,一般规定:用0表示正号“+”,用1表示负号“-”;符号位放在数值位之前。一个数连同其符号在机器中的二进制表示形式称为机器数,它所代表的数值称为机器数的真值。机器数的一般格式为:符号位数值位……1.1计算机内的数据表示原码原码表示法是符号位用0表示正数,用1表示负数,数值位表示数值本身。例如:[+27]原=00011011[-27]原=10011011在原码表示法中,0的表示方法不唯一:[+0]原=00000000[-0]原=1000000。反码反码表示法中正数与负数的表示方法不同,正数的反码与原码同形,如:[+27]反=00011011负数的反码为:符号位仍为1,数值位是对原码取反,如:[-27]反=11100100在反码表示法中,0的表示也不唯一:[+0]反=00000000[-0]反=1111111。1.1计算机内的数据表示补码正数的补码与原码、反码同形,如:[+18]原=[+18]反=[+18]补=00010010负数的补码为:符号位为1,数值位等于原码的数值位取反,再加1,或者说:[x]补=[x]反+1;如:[-18]原=10010010[-18]反=11101101[-18]补=11101110补码形式的数据进行运算时,符号位和数值位一样的参与运算。例如,计算-36+58,[-36]补=11011100[+58]补=0011101011011100+00111010溢出100010110在补码表示法中,0的表示是唯一的,假设用一个字节存放数据[0]补=000000001.1小数的表示计算机中小数分为定点表示和浮点表示两种1、定点表示:定点纯整数-小数点固定在数的最低位定点纯小数-小数点固定在数的最高位2、浮点表示:浮点表示把存储单元分为阶码和尾数两部分阶码为指数阶符是指数的符号位尾数为实际数数符是实际数的符号位阶符阶码数符尾数JS1.1小数的表示例:某机器用32位表示一个实型数,指数8位阶符一位,尾数24位,数符一位,基数为2,存放256.5这个数。00001001010000000010000000000000阶符数符即(256.5)10=(0.1000000001)2X2929291—+—=28+—22-1021.2算法及其表示算法为解决一个问题而采取的方法和步骤,称为算法。算法就是被精确定义的一组规则,规定先做什么,再做什么,以及判断某种情况下做哪种操作。例如,下面是用自然语言表示的对三个数进行从小到大排序的算法。①输入三个数x、y、z;②将x与y比较,若x>y,交换x与y的值;③将x与z比较,若x>z,交换x与z的值;④将y与z比较,若y>z,交换y与z的值;⑤输出此时的三个数x、y、z1.2计算机内的数据表示算法的特性和目标算法必须具有以下五个特性:确定性算法中的每一步都必须有确切的含义,不允许存在二义性;对于相同的输入数据,必须有相同的输出结果。可行性算法中的每一步操作都能通过可以实现的基本运算,执行有限次来完成,并最终得到确定的结果。有穷性一个算法必须总是在执行有限个操作步骤和可以接受的时间内完成其执行过程。也即是说,对于一个算法,要求其在时间和空间上均是有穷的。1.2算法及其表示输入一个算法有零个或多个输入数据。有些算法需要提供输入数据,有些算法则不需要。输出一个算法应该有1个或多个输出数据。算法应达到的目标正确性可读性健壮性高效率与低存储空间需求1.2算法及其表示算法的表示自然语言传统流程图传统流程图是用规定的一组图形符号、流程线和文字说明来表示各种操作的算法表示方法。1.2算法及其表示1.2算法及其表示流程图只包括三种基本程序结构顺序结构选择结构真处理A处理B假条件选择结构处理A处理B顺序结构1.2算法及其表示循环结构真处理A假条件直到型循环结构假真处理A条件当型循环结构开始输入x,y,z结束输出x、y、z对三个数进行排序交换x、y假真xy??交换x、z假真xz?交换y、z假真yz?1.2算法及其表示N-S流程图顺序结构选择结构顺序结构处理A处理B分支结构条件处理A处理B成立不成立1.2算法及其表示循环结构当条件成立时继续处理A当型循环结构处理A直到条件成立时结束直到型循环结构1.2算法及其表示输入x,y,zxy?YN交换x、yxz?YN交换x、zyz?YN交换y、z输出x、y、z三个数进行从小到大排序1.2算法及其表示伪码伪码是用一种介于自然语言和计算机语言之间的文字和符号来描述算法。例如,用伪码描述上述算法:inputx,y,zx→maxifymaxtheny→maxifzmaxthenz→maxoutputmax1.3程序设计语言程序与程序设计语言程序计算机程序是指为让计算机完成特定的任务而设计的指令序列。程序设计语言机器语言汇编语言高级语言面向对象的语言C语言简介C语言的历史概述常用的高级语言有面向过程及面向对象的高级程序设计语言两类。如:Basic,Fortran,Pascal,C,Java,Vc,Vb,Vfp等等。C语言是一种用来编写系统软件和应用软件的高级语言。C语言是在20世纪60年代的ALGOL60基础上发展为B语言,再发展为C语言的,它具有较好的可读性和可移植性。1978年C语言被标准化,称为ANSICC语言的种类:有微软的MSC++、VisualC++。有Borland的TurboC、BorlandC++、C++Builder等等。C语言的特点:1、语言简洁、紧凑、使用方便、灵活:共有32个关键字、9种控制语句。2、运算符丰富,有34种运算符。3、数据结构丰富,有整型、实型、字符型、数组类型、指针类型、结构体和共同体类型。4、具有结构化的控制语句,if块、循环块、函数、程序模块等等。5、语法限制不太严格,程序设计自由度大。6、允许直接访问物理地址,能进行位(bit)操作,实现汇编语言的大部分功能。7、生成目标代码质量高,程序执行效率高。8、可移植性好,可用于不同型号的计算机和操作系统。1.3程序设计语言C程序的结构C程序是一种函数结构,一般由一个或若干个函数组成;其中必有一个名为main()的主函数,程序的执行就是从这里开始的。【例1.1】编写程序判断一个整数是否是3的倍数,如果是输出“YES”,否则输出NO”。main()/*main函数的首部*/{/*main函数体的开始*/intm;/*定义整型变量m*/printf(\nPleaseinputainteger:);/*输出提示信息*/scanf(%d,&m);/*读入变量的值*/if((m%3==0))printf(YES);elseprintf(NO);/*如果flag值为0,输出“YES”,否则输出“N0”*/}1.3程序设计语言运行情况如下:Pleaseinputainteger:20↙NO【例1.2】编写程序求任意三个整数中的最小值。main()/*main函数的首部*/{/*main函数体的开始*/intn1,n2,n3;/*定义三个整型变量*/intminnum;/*定义变量minnum,用于存放最小值*/printf(\nEnterthreeintegers:);/*输出提示信息*/scanf(%d,%d,%d,&n1,&n2,&n3);/*读入变量的值*/minnum=min(n1,n2,n3);/*调用自定义函数min,将所求的最小值赋给变量minnum*/printf(\nMaximumis:%d,minnum);/*输出minnum值*/}1.3程序设计语言intmin(intx,inty,intz)/*num函数的首部*/{/*num函数体的开始*/intm;m=x;/*默认第一个数最小*/if(ym)m=y;/*如果第二个数更小,则修改m*/if(zm)m=z;/*如果第三个数更小,则修改m*/returnm;/*将m的值作为函数值返回*/}/*max函数体的结束*/运行情况如下:Enterthreeintegers:18,25,12↙Maximumis:121.3程序设计语言C程序的结

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功