C语言数据描述和C程序设计初步.ppt

上传人:tia****nde 文档编号:12805514 上传时间:2020-05-25 格式:PPT 页数:77 大小:601.50KB
返回 下载 相关 举报
C语言数据描述和C程序设计初步.ppt_第1页
第1页 / 共77页
C语言数据描述和C程序设计初步.ppt_第2页
第2页 / 共77页
C语言数据描述和C程序设计初步.ppt_第3页
第3页 / 共77页
点击查看更多>>
资源描述
程序设计技术,C语言数据描述和C程序设计初步结构化程序设计基础和C语言的控制结构数组及其应用函数与C程序结构指针与函数指针与数组字符串及其应用结构体类型和联合体类型C语言的文件处理及其应用位运算与枚举类型,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.1C程序的基本结构,C语言的特点:C是一种高级计算机程序语言C是一种面向过程的结构化程序语言C语言简洁、紧凑,使用方便、灵活C语言数据类型丰富C语言运算符丰富C语言程序可移植性好C程序开发环境中包含了语言核心、与处理器和标准函数库三个部分C语言本身没有提供用于程序中数据输入输出的语句,1.1.1C源程序的组成成分,#include/*头文件声明*函数头*/voidmain()/*定义主函数且无返回值*/floatave,x,y,z;/*定义变量*/scanf(“%f,%f,%f”,/*调用printf函数输出结果*/,说明:1.程序由予处理命令和至少一个函数组成,但必须而且只有一个主函数,函数名必须是main。2.函数由函数头和函数体组成。函数体总是从花括号“”开始。以反花括号“”结束。,3函数体由语句组成。每一个分号“;”就代表一条语句的结束。4以/*开头到*/结束的部分叫注释行。即注解。不是语句,可以在程序中的任何位置,结尾不要分号“;”,不引起计算机任何动作。5语句由C语言规定的符号组成,结尾一定是分号“;”不同的语句引起不同的计算机动作,是计算机执行程序的最小单位。6当程序由多个函数组成时,除主函数main外,其他的函数叫子函数。冠以名字后,就叫某某函数。例1-1C语言源程序的组成成分和基本结构,1.1.1C源程序的组成成分,用C言符号书写的程序称为源程序,高级语言源程序必须被转为机器语言程序才能被执行。,1.1.1C源程序的组成成分,1.1.2C语言的基本元素,1C语言的字符集小写英文字母abcz大写英文字母ABCZ数字01239特殊字符+=-_()*:“/?不可印出字符空格、换行、制表符等2标识符标识符是给程序中处理的数据对象(如变量、常量、函数、数据类型等)取的名字.,1.1.2C语言的基本元素,标识符取名规则组成标识符的字符为字母、数字和下划线标识符中第一个字符必须是字母或下划线多数C编译系统在构成标识符时都要区分字母的大小写,即abc和Abc是不相同的标识符构成标识符的字符个数(标识符长度)与所使用的环境相关保留字操作系统或编译系统或其他系统已经用了的名字例如doubleelseenumexternfloatforgotoif_Imaginary*inline*intlongregisterrestrict*用户标识符用户自己取的名字,1.1.2C语言的基本元素,程序员(用户)在程序中自定义标识符时,除了避免使用保留字和必须遵守标识符的命名规则外,还需要注意以下两个方面:一是要将标识符取得既有意义,又便于阅读;二是要注意避免含义上或书写时引起混淆。例如下面是一些合法用户自定义标识符的例子:ab1file_name_buf下面是不合法的用户自定义标识符例子及错误原因:123abc/*不是以英文字母开头*/float/*与系统保留字同名*/up.to/*标识符中出现了非法字符“.”*/zhangsan/*标识符中间出现了非法字符空格*/,1.1.2C语言的基本元素,3函数函数是构成程序的基本模块,每个函数具有相对独立的功能函数有三种:主函数(即main()函数)、C语言编译系统提供的标准库函数和用户自定义的函数主函数是C程序执行的入口,即程序总是从主函数中的第一条可执行的语句开始执行;一般情况下也是程序执行的出口标准库函数是语言处理系统提供的常用功能的处理程序代码,在程序中如要使用标准库函数,则需要在程序中合适的地方(调用标准库函数之前)用文件包含预处理语句将与所使用库函数相应的头文件包含到程序中来如例前面例题中的“#include”用户自定义函数即程序员根据所设计应用程序的功能自己编写的函数,1.1.2C语言的基本元素,4C程序书写的基本要点C程序习惯上使用小写英文字母。为了清晰起见,在C程序中往往使用大写英文母来表示宏定义或其它具有特殊意义的标识符。C程序中不强调程序行的概念。一行中可以有多条语句,一个语句也可以写在多行上,但语句与语句之间要用分号(;)分隔。C程序为了增强程序的可读性,可以使用适量的空格、空行和适当的行间缩进结构。但要注意,程序中的变量名、函数名以及C语言本身使用的单词(如保留字、语句结构等),不能在其中插入空格。,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.2C语言的基本数据类型,数据和数据类型在C语言源程序中能直接书写的、需要被处理的符号只有数和字符两种,这种符号称为C语言的数据。计算机程序只能处理已经存入计算机系统内存的数据,任何需要用计算机程序处理的信息都需要被转换为内存中的数据才能被处理。计算机系统的内存是按字节编址的,在内存里存放一个数据所需要的内存字节数称为一个数据所需要的内存空间,程序中不同的数据在系统内存中所要求的存储空间大小也不一样,因而在程序设计中需要区分所处理数据的数据类型。,1.2C语言的基本数据类型,C语言提供的数据类:数据类型,1.2C语言的基本数据类型,常量和变量C源程序中直接书写的数据称为常量,存放一个数据所需要的内存空间称为变量,内存空间中存放的数据内容称为变量值。变量是由变量名(标识符)来区别的。变量值是通过引用变量名来引用的,是数据。所以,常量和变量在程序中表现的都是数据。常量数据在源程序中给定后,在程序的整个执行过程中保持不变。而变量在程序的执行过程中是一个其值可以被程序修改的量。是一个变化的量。,1.2.1C语言的整型数据类型,整型量1整型常量C语言源程序能直接书写的整型常量可以有三种形式:十进制整数。如888、-123、0等。八进制整数。以0开头的整数是八进制整型常量,如0777、-011等。十六进制整数。以0 x开头的整数是十六进制整型常量,如0 x123、0 xff等。在C语言中整型数据用机器的一个字长来存储,所以整型数据的表示范围与计算机系统的软硬件环境有关。在字长为16位计算机系统中,整型数据表示的范围为-3276832767(-215215-1);在字长为32位的计算机系统中,则表示的数据范围为-231231-1。,1.2.1C语言的整型数据类型,2整型变量存放整型数据的内存空间称为整型变量,C语言提供了基本整型、短整型、长整型和无符号整型四种大小不同的单位空间来存放整形数据。,类型名意义字节数经度范围short短整型2-3276732768int基本整型4-21474836472147483648long长整型4-2147483647L2147483648Lunsignedshort无符号短整型2065535unsignedint无符号基本整型404294967295UUnsignedlong无符号长整型404294967295UL,1.2.1C语言的整型数据类型,3.变量定义整型变量定义的一般形式为:类型名;该语句的功能是:指定具有类型名定义的多个内存空间,取名为变量列表中的标识符(变量名),数量与变量列表中变量名的个数一致。例如:intx1,x2;(定义变量x1,x2为整型变量)longx,y;(定义变量x,y为长整型变量)unsignedc,d;(定义变量c,d为无符号整型变量)例1-2整型变量的定义和输出示例。,1.2.2C语言的实型数据类型,实型量1实型常量在C语言源程序中能直接书写的实型数,称为实型常量。实型数在C语言中又称为浮点数,实型常数有两种表示形式:实数形式:实数形式由数字和小数点组成。如:888.88,0.88等。指数形式:数据由数字09、小数点和表示阶码的标志“e”或“E”组成,其组成形式一般为:整数部分.小数部分E指数部分指数形式对应于自然科学中的科学计数法,其中用字母“e”或“E”来表示幂的底,在“e”或“E”之后用整数表示数的指数。如123e5表示123105,123e-5表示12310-5。,1.2.2C语言的实型数据类型,在使用实型数的指数表示形式时应该注意下面两点:指数部分只能是整数而不能用实数表示,如123E1.5是错误的表示方法。字母“e”或“E”之前的尾数部分不能省略,如10-8不能只写为E-8,而应该写成为1E-8(或者1e-8).2实型变量C源程序文件中存放实型数据的数据对象称为实型变量。C语言中的实型变量按其表示的数据范围不同和精度不同分为单精度型和双精度型,其类型名分别为float和double。,1.2.2C语言的实型数据类型,3.变量定义定义实型变量的一般形式为:类型名;功能意义与整形变量定义相同例如:floatx,y;(定义变量x,y为单精度实型变量)doublez;(定义变量z为双精度实型变量)例1-3实型变量的定义和输出示例。,类型名意义字节数精度范围float单精度实型41.175494e-0383.402823e+038Double双精度实型82.225074e-3081.797693e+308,1.2.3C语言的字符型数据类型,字符量在C语言源程序中直接书写的、需要被处理的字符就是字符常量。同样,用于存放这个字符的内存空间就是字符变量。1.字符常量普通字符:普通字符是由单引号括起来的一个可打印字符,如a、?、A等。转义字符:转义字符是由反斜杠开头的字符序列,此时反斜杠字符后面的字符或字符序列不表示自己本身的含义而转变为表示另外的特定意义。,1.2.3C语言的字符型数据类型,2字符变量字符类型变量用以存储和表示一个字符,占用一个字节。字符型变量的定义形式如下:char;例如:charch;(定义变量ch为字符型变量)在C语言中字符型变量和整型变量是兼容的,系统中存储的是对应字符的ASCII码值,因此在C语言中字符数据和整数之间可以通用,即字符型数据可以与整型数据一起参与运算,但在使用时要注意其表示的合理范围(0255范围内的整数),1.2.3C语言的字符型数据类型,例如,若有C语句序列:charch;ch=A;ch=ch+1;,则执行该语句序列后ch的内容是字符B。例1-4字符变量的定义和输出示例。3字符串常量C语言中,字符串常量是用双引号括起来的由0个字符或若干个字符构成的字符序列,例如“Thisisastringconstant”。其中,双引号只是作为定界符使用,并不是字符串中的字符。存储字符串常量时分配一段连续的存储单元用于依次存放字符串中的每一个字符,然后在字符串的最后一个字符后添加转义字符0表示字符串的结尾,所以其需要的空间长度是串中字符存储所需要的长度再加一个字节,1.2.3C语言的字符型数据类型,4符号常量在C语言中,除了可以具体的各种类型常量外,还可以可以用符号代替常量,用以代替常量的符号称为符号常量(或称为宏常量)。符号常量在使用之前也必须预先定义。其定义的格式为:#define标识符被替代的常量,例如:#definePI3.1415926#defineEOF-1#defineprecision1e-8,1.2.4变量的初始化,变量的初始化指的是为变量第一次赋值。在C语言中变量初始化的方法有两种,一是在程序的执行过程中通过赋值运算符实现赋值;二是在定义变量的同时为变量赋初值。C语言中,定义变量的同时对其初始化的一般形式为:=;例如inta,x1=100;longb,x2=100L;floatc,x3=100.30;doublex4=100.5;charch=A;,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.3基本运算符和表达式,在完成数据存入内存后,需要对这些数据做相关的处理或运算,以得到我们所需要的结果。C语言提供了多种运算符号,通过由这些运算符组合成表达式和表达式语句对数据进行处理。这些运算符是C语言规定的。各个运算符有各自的意义。1算术运算符2关系运算符3逻辑运算符4赋值运算符5条件运算符6位运算符7逗号运算符8指针运算符9.其它运算符,1.3基本运算符和表达式,一些运算符只需要一个运算对象(操作数),这种运算符称为单目运算符;另外一些运算符需要两个运算对象,这些运算符称为双目运算符;还有比较特殊的运算符需要三个运算对象,称这种运算符为三目运算符。运算符的优先级和结合性优先级表明计算顺序,计算的先后关系结合性表明计值方向。左结合(从左到右)和右结合(从右到左)。,1.3.1算术运算符和算术表达式,C语言提供了加,减、剩、除和求摸五种算术运算符,对应的符号分别是:+、-、*、/和%。这些运算符都需要两个运算对象,称为两目运算符。而且是从左到右的运算顺序,称为左结合性。除求摸运算符外,满足数据的正、负符号规则。例如:3+2结果为5,3*-结果为15.当两个整数相除时,得到的结果仍然是整数。既取整运算。例如:7/5结果为1,-7/5结果为-1,3/5结果为0.求模运算就是求余数,参加求模运算的两个对象必须都是整型对象,运算结果的符号与第一个运算对象相同。例如:7%5结果为2,-7%5结果为-2,7%(-5)=2。,1.3.1算术运算符和算术表达式,由算术运算符和括号将运算对象连接起来的、符合C语言语法规则的算术表达形式称为C语言的算术表达式。运算对象包括常量、变量、函数、表达式等,值得注意的是单个的常量、变量或函数名本身也是表达式。如:a*b/c-1.5+a是一个合法的表达式。而表达式a+b-2.3%6就不是一个合法的C语言表达式。优先级高()函数+、-*、/、%+、-优先级低例1-5算术运算符使用示例。,1.3.2赋值运算符和赋值表达式,C语言规定符号“=”为赋值运算符,由“=”连接的表达式称为赋值表达式。赋值表达式的书写格式为赋值运算符左边只能是一个变量,右边是一个表达式,格式如下:变量名=表达式其意义为:将赋值运算符右边的表达式的值存入左边变量名所指定的单位内存空间中,替换掉以前的值。或简述为将表达式的值赋给变量。例如a=10的意义是将整型数10赋给变量a作为其值;y=x+110的意义是先计算x+110的值,然后将它赋给变量y作为其值。,1.3.2赋值运算符和赋值表达式,当赋值运算符两边的数据对象类型不一致时,在赋值时要进行数据类型的转换。转换的基本规则是以赋值运算符左边变量的数据类型为准。例如有如下程序段:inta;floatx=10.5,y=10.6;a=x+y;执行这段程序时,首先计算出算术表达式x+y的值为:21.1,然后将该值用截取法取整得到21后再赋值给左边的整型变量a,使得a的值为整数21。,1.3.2赋值运算符和赋值表达式,C语言程序中,能执行操作运算的只有语句。表达式的功能只能在语句里才能被实现。而单独的表达式是不合法和不被执行的。赋值语句由赋值表达式加上C语句结尾符号分号“;”构成,其一般形式为:;或变量名=表达式;例如:a=x+y是赋值表达式,而a=x+y;则是赋值语句注意:1.赋值运算符的左边必须为变量,不能为常量或表达式。2.赋值运算符的优先级低于逻辑运算符、关系运算符、算术运算符。其结合性为从右至左(即:右结合性)。3.在C语言中,赋值表达式可以作为一个对象出现在另外的表达式中。例1-6赋值运算符和赋值表达式使用示例。,1.3.3自反运算符,复合赋值符:凡是双目运算符都可以与赋值运算符一起组成复合赋值符,其结合性为右结合性。这些复合赋值符共有10个,它们是:+=、-=、*=、/=、%=、=、a+;/*试图对实型变量a施加自增运算*/自增运算符和自减运算符不能作用于常量数据或者表达式。例如下面的语句序列存在着错误:inta=100;-(a+100);/*试图对表达式a+100施加自减运算*/300+;/*试图对整型常数300施加自增运算*/,1.3.4自增、自减运算符,自增、自减运算符的前缀形式前缀形式即自增、自减运算符(+、-)出现在变量的左侧,如:+i、-i。自增、自减运算符的前缀形式对变量实施的运算是“先增/减值后引用”。自增、自减运算符的后缀形式后缀形式即自增、自减运算符(+、-)出现在变量的右侧,如:i+、i-。自增、自减运算符的后缀形式对变量实施的运算是”先引用后增/减值”。例1-9自增、自减运算符使用示例。,1.3.5逗号运算符和逗号表达式,逗号运算符是C语言中提供的一种特殊运算符。逗号运算符用于将两个以上的表达式连接成一个逗号表达式。逗号表达式的一般形式为:,逗号运算符是C语言所有运算符中级别最低的运算符,其结合性为左结合性。逗号表达式在求值时,按从左到右的顺序分别计算各表达式的值,用最后一个表达式的值和数据类型来表示整个逗号表达式的值和数据类型。例如,逗号表达式a=1,b=a-4,c=b+2;等价于以下3个有序语句:a=1;b=a-4;c=b+2;例1-10逗号运算符和逗号表达式使用示例。需要注意的是,在C程序中并不是任何地方出现的逗号都是逗号运算符,逗号在许多地方也作为分隔符用以分隔若干个对象,,1.3.6sizeof运算符,sizeof运算符是C语言特有的一个运算符,运算符使用形式为:sizeof()其中,数据对象既可以是某个具体的变量名,也可以是某种数据类型的常量,还可以是某种数据类型的名字,甚至于还可以使一个合法的C表达式。sizeof运算符的功能是返回其所测试的数据对象所占存储单元的字节数。例1-11sizeof运算符使用示例。例1-12sizeof运算符使用示例。,1.3.7运算符优先级别和结合性规则,将表达式中的各种运算符运算的先后顺序规定为15个由低到高的优先级别,同时还为运算符规定了结合性。在表达式求值时,若运算对象两边的运算符优先级不同,按优先级别从高到低运算。若运算对象两边的运算符优先级相同,则按其结合规则处理,对于表达式而言同级运算并不是都遵从从左到右的原则。C运算符有两种结合性,即左结合性和右结合性。运算符的优先级和结合性只有在表达式里才有实际意义,表明C语言表达式的计值规则。例1-13右结合性运算符使用示例。,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.4不同类型数据混合运算及数据转换,不同数据类型隐式转换隐式转换是系统的自动转换,数据类型转换的原则是向表达数据能力更强的方向转换。即当在表达式运算过程中出现了不同数据类型的数据进行混合运算时,系统先自动按图1.4所示的规则将参加运算的数据对象转换成同一类型的数据再进行运算。例1-14表达式混合运算中的自动数据类型转换示例。,1.4不同类型数据混合运算及数据转换,不同数据类型显式转换在C程序设计中,如果有需要可以对数据进行显式类型转换。显式转换又称为强制类型转换。显式类型转换的一般形式是:(类型名)()显式类型转换的功能是:在本次运算中,强迫表达式的值转换成指定的数据类型参加运算。注意,若被转换的对象是表达式,则需用括号将整个被转换对象括住;若被转换的对象是单个变量,则括号可以省略。例如,有如下语句序列:floatx=2.5;inta=10,m,n;m=a+(int)x;n=a+(int)(x+1.8);特别注意:类型转换只对标注强制转换这一次起作用,在程序的其余地方,变量还保留其原有的值。例1-15表达式混合运算中的强制数据类型转换示例。,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.5C程序设计初步,1.5.1算法基本概念及算法描述算法是符合计算机特征的、处理实际问题的计算机操作步骤的描述。1算法的基本概念和算法的特征(1)算法必须准确反映了应用问题的数学模型。(2)算法的每一步最后都能用计算机高级语言描述。(3)算法执行的步骤逻辑(即程序执行逻辑)应该与实际问题的处理逻辑一致。例如,在计算机系统中实现任意两个数由大到小排序输出的算法设计如下:第1步算法开始第2步输入两数,取名a和b第3步判断:如果ab,则先输出a然后再输出b:;否则先输出b然后输出a;第4步算法结束,1.5.1算法基本概念及算法描述,(1)数据的组织根据所建立数学模型的需要,指定用于存放输入数据、中间处理结果和最终结果的内存空间的类型和个数。特别是在处理数据量大,数据关系复杂的时候,这点尤为重要。计算机科学技术范畴中的数据结构学科就专注于这类问题的研究。(2)问题的数值计算方法计算机高级程序设计语言提供了一些算术运算方法和常用函数计算功能。但是数学模型中有些数学公式,如定积分,不能直接用计算机程序设计语言描述。在处理这类问题时,需要将这些问题转化为适合计算机语言描述的的数值计算方法。数值计算方法也是计算机科学技术的一个重要分支。,1.5.1算法基本概念及算法描述,算法必须同时具有以下4个特征:(1)有穷性。一个算法必须能够在算法所涉及的每一种情况下,都能在执行有穷步操作之后结束。(2)确定性。算法的每一步操作,其顺序和内容都必须精确地惟一确定,不能有任何的歧义性。(3)可执行性。算法所描述的每一步操作都必须是可行的,即必须是可以付诸实施并能够具体实现的基本操作。(4)输入、输出数据。必须有1个以上的输入和输出,1.5.1算法基本概念及算法描述,2算法的描述方法,(1)顺序结构(2)选择(分支)结构(3)循环结构,2算法的描述方法,1.5.1算法基本概念及算法描述,算法描述示例1:已知鸡兔同笼,总头数为H,总脚数为F,求鸡兔各有多少只?问题分析根据已知的条件,设鸡为X只,兔为Y只,可以列出如下关方程组:解该方程组,有:,1.5.2C语句概述,语句按其功能可以分为两大类:用于描述计算机操作运算的操作运算表达式语句和控制操作的执行顺序的程序流程控制语句。表达式语句赋值语句赋值语句由赋值表达式接一个分号组成。例如y=x+1;函数调用语句函数调用语句由函数调用表达式后接一个分号组成。例如printf(“Hello,World!n”);空语句空语句只由一个分号组成,它不进行任何操作(或者称之为进行空操作)。,1.5.2C语句概述,流程控制语句条件语句ifelse循环语句for语句、while语句、dowhile语句提前结束本次循环语句continue循环或多分支终止语句break无条件转移语句goto返回语句return复合表达式语句C语言允许把一组语句括在花括号之中构成一个语句块,称之为复合语句。例如charch;ch=getchar();putchar(ch);,1.5.3C程序的输出最基本的输出函数,C语言中没有提供输入和输出语句,其所有的输入输出均通过调用标准库函数来实现。C语言中的I/O类标准库函数的声明包含在头文件stdio.h中,所以在C程序源文件中开始位置应该加上如下包含编译预处理命令:#includestdio.h或#include1格式化输出函数printfC语言中的格式化标准输出函数为printf函数,函数调用的一般格式为:printf(“格式控制字符串”,输出表列);,1.5.3C程序的输出最基本的输出函数,函数的功能是:按“格式控制字符串”的要求向标准系统输出设备(显示器)输出一个或多个任意类型的数据。其中的输出表列由一到若干个输出表达式组成,两个输出表达式项之间用逗号分隔。格式控制字符串则由普通字符和格式控制项组成。格式控制字符串中的普通字符在格式控制字符串中,普通字符在输出时照原样输出,所谓原样输出指的是在给定的位置输出给定的字符。例如对于输出函数调用语句:printf(Result=%fn,x+c+y);,格式控制字符串Result=%fn中的字符序列“Result=”和“n”都是普通字符,则在输出时结果由:三个部分构成。,1.5.3C程序的输出最基本的输出函数,格式控制字符串中的格式控制项在格式化输出函数的格式控制字符串中,格式控制项与输出表列中的输出表项一一对应,用于规定或说明输出表项的输出格式。在格式控制项中,百分号(%)是格式控制项的引导符号,一个格式控制项以%开始到格式控制字符结束,中间含有若干个可选项。格式控制项的一般形式为:%-0*m.nl/h,1.5.3C程序的输出最基本的输出函数,1.5.3C程序的输出最基本的输出函数,长度修正可选项(l/h)长度修正项(l/h)只能选取字符l和字符h二者之一,用于指定对应的输出数据按长整型或双精度型输出还是按短型数据输出。当选用字母l(long)时,按长整型或双精度型输出;当选用字母h(short)时,按短型数据输出。域宽可选项(m或m.n)域宽可选项用于指定对应输出项所占的输出宽度。该可选项取单一整数时,说明输出数据的宽度.例如%5d说明输出域宽为5,%5.2f说明输出域宽位5位,整数和小数部分各占2位。例如printf(“%5dn”,88);的结果为:88,即在输出的实际数据之前有3个空格字符。,1.5.3C程序的输出最基本的输出函数,当输出数据是字符串并且域宽可选项取m.n格式时,m指定了输出数据占用的宽度,但此时的n却指定的是输出字符串数据中的前n个字符。例如:printf(%10.5sn,abcdefg);/*输出字符序列:abcde,前面有5个空格字符*/printf(%6.5sn,abcdefg);/*输出字符序列:abcde,前面有1个空格字符*/printf(%.5sn,abcdefg);/*输出字符序列:abcde,前面没有空格字符*/,1.5.3C程序的输出最基本的输出函数,空位填零可选项(0)空位填零可选项规定,当指定的输出宽度大于数据输出所需要的的实际宽度时,输出数据左边的空位不是用空格而是用数字0来填充。例如语句printf(“%05dn”,88);的输出结果为:00088。星号可选项(*)星号(*)可选项在控制项中的作用是指定由对应于该控制项的变量值来决定输出表列中其后面一个输出项的输出宽度。例1-16输出函数控制项中“*”可选项的使用示例。,1.5.3C程序的输出最基本的输出函数,减号可选项(-)格式控制项中的减号(-)可选项用于指定输出数据的对齐方向。当选用减号时,输出数据左对齐;当不用减号时,输出数据右对齐。格式化输出函数printf的返回值printf函数输出的是变量值,但它本身还有一个函数值,既返回值。printf函数是一个返回整型值的函数,该函数执行后得到的整数值表明了printf函数在执行时输出了多少个有效字符,下面的例程序说明了这个问题。例1-17格式化输出函数的返回值说明示例。,1.5.3C程序的输出最基本的输出函数,2字符输出函数putchar字符输出标准库函数putchar的调用形式:putchar(输出对象);其中:输出对象可以是字符常量(包括转义字符)、字符变以及整型常量、整型变量等可以转换为字符数据的对象。函数的功能是将用输出对象表示的单个字符输出到标准输出设备(屏幕)上。例如:putchar(A);/*输出大写字母A*/putchar(n);/*换行,即执行控制字符所具有的控制功能*/例1-18字符数据输出示例。,1.5.4C程序的输入-最基本的输入函数,1格式化输入函数scanfC语言中的格式化标准输入函数为scanf,函数调用的一般格式为:scanf(“格式控制字符串”,地址表列);函数的功能是:按“格式控制字符串”的格式要求,从标准系统输入设备(键盘)上输入一个或多个指定类型的数据到由地址列表指定始地址的内存单元中。地址列表中的每一项为一个地址量,其形式是在一般变量之前加取地址运算符scanf(“%3d%2d”,若输入流(即从键盘上敲入的字符流)为:12345678,则系统会截取123作为变量a的值、截取45为变量b的值,如此后还有输入函数调用语句,则继续截取剩余的字符流(678),,1.5.4C程序的输入-最基本的输入函数,星号可选项(*)星号(*)可选项的作用是表示“虚读”,即系统从输入流上按指定格式读入一个数据但并不赋给任何变量。例如有下面语句序列:inta,b;scanf(“%3d%*2d%3d”,若输入流(即从键盘上敲入的字符流)为:12345678,则系统会截取123作为变量a的值、截取45并将该数据放弃,然后截取678为变量b的值。,1.5.4C程序的输入-最基本的输入函数,格式化输入函数中数据流的分隔问题在格式化输入函数的使用中,严格按照格式控制字符规定的格式输入数据。数字间隔可以用空格或回车。例如inta,b;scanf(“%d%d”,若要求执行完格式化输入函数调用语句后变量a的值为10、变量b的值为20,则可以有两种方式输入数据:方法1使用空格字符分隔两个输入数据输入流为:1020/*中间用于分隔的空格字符可以1至若干个*/输入流中的表示按键盘上的Enter键(下同)方法2使用换行字符分隔两个数据数据输入流为:1020,1.5.4C程序的输入-最基本的输入函数,如果在格式控制字符串中的两个格式控制项之间插入了一个或若干个普通字符,在前面已经提到这些字符是格式控制字符串中的普通字符,严格按原样照输入。例如有语句序列:inta,b;scanf(“%d,%d”,,输入流只能是:10#20,1.5.4C程序的输入-最基本的输入函数,关于输入流结束时的换行符问题例1-19关于输入流结束换行符的引例。scanf(%d,/*要求输入数据100*/,1.5.4C程序的输入-最基本的输入函数,格式化输入函数scanf的返回值问题格式化输入标准库函数scanf的功能是从键盘上接受数据,但本身是一个返回整型数的函数。其函数值为一个整型数据,该整型数据表明了scanf函数在输入流中正确取得数据的个数,可以通过这个返回值判断是否正确接收了全部的输入数据。例1-20格式化输入函数的返回值说明示例。程序运行时的输入流若为:123,45,6789,则输出结果为:正确接收的数据个输:3a=123,b=45,c=6789,1.5.4C程序的输入-最基本的输入函数,不同数据类型数据的混合输入问题在数据的输入中,主要分为数值型数据和字符型数据,这些数据在混合输入的时候,由于换行符的原因,在某些输入流形式程序运行得不到正确的结果。例1-21格式化输入函数使用中的混合类型数据输入示例。为避免出现上述问题,要注意1输入流中数值在前、字符在后时中间不能使用空格字符或换行字符等分隔符。2输入流中字符在前、数值在后时中间有无空格字符或换行字符作为分隔符均可。,1.5.4C程序的输入-最基本的输入函数,字符输入函数getchar字符输入标准库函数getchar的调用形式:getchar();函数的功能是:从标准输入设备上读入一个字符,将这个字符作为函数的返回值并回显在屏幕上。可以用字符型或整型变量接收通过getchar函数读入的字符,其一般形式为:charc;c=getchar();/*从键盘上读入一个字符并将其存放到字符型变量c中*/,1.5.5常用数学类标准库函数的使用,在C系统中,数学类标准库函数的原型在名为math.h或stdlib.h头文件中声明。所以在需要调用数学类标准库函数的C程序中,必须使用文件包含编译预处理语句将相应的头文件包含到源程序文件中。文件包含编译预处理语句的一般形式为:#include或#include“头文件名”1求绝对值类常用数学函数常用的求绝对值函数有:abs、labs和fabs。求绝对值函数中,abs和labs的函数原型在头文件stdlib.h中声明,fabs的函数原型在头文件math.h中声明,函数的原型如下所示:intabs(intn);/*求整型数据的绝对值*/longlabs(longintn);/*求长整型数据的绝对值*/doublefabs(doublex);/*求双精度实型数据的绝对值*/,1.5.5常用数学类标准库函数的使用,例1-22求绝对值函数使用示例。2求余数类常用数学函数算术运算符中的求模运算符%只能对整型数据进行操作,对实型数据数据的求余数运算只能通过标准库函数进行。常用实型数据求余数标准库函数是fmod,函数的原型在头文件math.h中声明,函数的原型声明如下所示:doublefmod(doublex,doubley);/*双精度实型数据求xMODy的值*/例1-23求余数值函数使用示例。,1.5.5常用数学类标准库函数的使用,3三角函数类常用数学函数三角函数的原型均在头文件maht.h中声明,函数的原型声明如下所示(x的单位为弧度):doublesin(doublex);/*求正弦函数值*/doublecos(doublex);/*求余弦函数值*/doubletan(doublex);/*求正切函数值*/doublesinh(doublex);/*求双曲正弦函数值*/doublecosh(doublex);/*求双曲余弦函数值*/doubletanh(doublex);/*求双曲正切函数值*/例1-24求的正弦、余弦和正切函数值。,1.5.5常用数学类标准库函数的使用,4.指数类、对数类和平方根类常用数学函数常用的指数类函数有:exp和pow,常用的对数类函数有:log、log10,常用的平方根类函数有:sqrt。这几类函数的原型均在头文件math.h中声明,函数的原型声明如下所示:doubleexp(doublex);/*求ex的值*/doublepow(doublex,doubley);/*求xy的值*/doublelog(doublex);/*求lg(x)的值*/doublelog10(doublex);/*求lg10(x)的值*/doublesqrt(doublex);/*求x的平方根值*/例1-25求平面上(x1,y1)和(x2,y2)两点之间的距离,两点的坐标值从键盘上输入。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!