您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第1章 c程序设计基础
第1章c程序设计基础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十进制转换为任意进制可以采用除基取余法将十进制整数转换为r进制整数:将十进制整数除以r,得到商和余数,余数对应为r进制数低位的值;继续让商再除以r,得到商和余数,……重复此操作,直至商为0,如此得到的一系列的余数就是相应r进制数的各位数字,先得到的是低位,后得到的是高位。1.1计算机内的数据表示例如,将(29)10转换为二进制整数:因此,(29)10=(11101)22292141低位27023121101高位1.1计算机内的数据表示可采用乘基取整法将十进制小数转换为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)2由于整数和小数的转换方法截然不同,将十进制数转换为r进制数时,整数部分和小数部分要分开来进行转换。r进制小数能精确的转换为十进制小数,但十进制小数通常不能精确的转换为r进制小数。1.1计算机内的数据表示二进制与八进制、十六进制之间的转换对于一个二进制数,只要依次(整数部分由低位到高位,小数部分由高位到低位)将其每3位或4位分成一组,就可以直接转换为八进制数或十六进制数。例如,(1000101111010011.01101)2=(105423.53)8(1000101111010011.01101)2=(8B13.B8)16将八进制数中的每一位用3位二进制数表示,将十六进制数中的每一位用4位二进制数表示,就能转换为对应的二进制数。1.1计算机内的数据表示原码,反码及补码在计算机中,“位”是数据的最小单位。计算机中的存储量是以字节来计算的,一个字节是8位二进制位。在计算机内,一般规定:用0表示正号“+”,用1表示负号“-”;符号位放在数值位之前。一个数连同其符号在机器中的二进制表示形式称为机器数,它所代表的数值称为机器数的真值。机器数的一般格式为:符号位数值位……1.1计算机内的数据表示原码原码表示法是符号位用0表示正数,用1表示负数,数值位表示数值本身。例如:[+27]原=00011011[-27]原=10011011在原码表示法中,0的表示方法不唯一:[+0]原=00000000[-0]原=10000000。反码反码表示法中正数与负数的表示方法不同,正数的反码与原码同形,如:[+27]反=00011011负数的反码为:符号位仍为1,数值位是对原码取反,如:[-27]反=11100100在反码表示法中,0的表示也不唯一:[+0]反=00000000[-0]反=11111111。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.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.1计算机内的数据表示算法的特性和目标算法必须具有以下五个特性:确定性算法中的每一步都必须有确切的含义,不允许存在二义性;对于相同的输入数据,必须有相同的输出结果。可行性算法中的每一步操作都能通过可以实现的基本运算,执行有限次来完成,并最终得到确定的结果。有穷性一个算法必须总是在执行有限个操作步骤和可以接受的时间内完成其执行过程。也即是说,对于一个算法,要求其在时间和空间上均是有穷的。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语言的历史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程序的结构特点C程序是由函数构成的。函数由函数首部和函数体两部分组成。一般函数的格式如下:类型名函数名(函数参数表){声明部分执行部分}函数体中也可以没有任何内容,即构成一个空函数。一个源程序有一个且只能有一个main函数(又称主函数)。C程序的执行总是从main函数开始的,在调用其它函数后,最后回到main函数中结束整个程序的执行。1.3程序设计语言C程序书写格式自由。既允许在一行内写多个语句,也允许将一个语句分写在多行上,但每个语句必须以分号结束。“/*……*/”表示对函数或语句的功能作注释。在“/”和“*”之间不能有空格,且“/*”和“*/”必须配对使用。注释是供人阅读的,并不参与编译和运行。注释可以出现在程序的任何地方,添加必要的注释可以提高程序的可读性。源程序中可以使用预处理命令(如include命令、define命令),预处理命令以“#”开头,一般预处理命令应放在源文件或源程序的最前面。1.3程序设计语言C程序的一般形式如下:预编译处理命令全局变量定义main(){声明部分执行部分}sub1()/*自定义函数*/{……}……subn()/*自定义函数*/{……}1.3程序设计语言C程序的特点简洁、紧凑模块化、结构化功能强大可移植性好C语言的不足运算符多,难以掌握C程序中常常为了类型转换上的方便不要求类型检查,这就导致有些情况下即使要求类型一致,但实际类型不一致也不出错,而产生莫名其妙的运算结果。C语言中对数组进行处理时对数组元素的下标不做越界检查,若程序中引用数组元素时越界,容易造成数据的混乱,甚至更严重的错误。1.4结构化程序设计结构化程序设计方法结构化程序设计方法是一种用来编写清晰、可读性好、易修改性强的程序的严格的设计方法。结构化程序设计方法要求程序仅由三种基本结构:顺序结构、选择结构和循环结构经组合、嵌套而成。而且,要求每个程序模块是单入口单出口的;程序中没有永远执行不到的语句,没有死循环(无终止的循环)。结构化程序设计方法要求采用“模块化”的设计方法。程序的设计过程采用“自顶向下,逐步求精”的策
本文标题:第1章 c程序设计基础
链接地址:https://www.777doc.com/doc-4150899 .html