C语言数据描述和C程序设计初步.pptx
课程介绍为什么要学习程序设计技术?计算机的应用已经渗透到各行各业,要发挥计算机的强大功能,离不开程序设计技术。怎样才能学好程序设计技术?勤动手,多上机。第1页/共62页程序设计技术nC C语言数据描述和语言数据描述和C C程序设计初步程序设计初步 n结构化程序设计基础和结构化程序设计基础和C C语言的控制结构语言的控制结构 n数组及其应用数组及其应用 n函数与函数与C C程序结构程序结构 n指针与函数指针与函数 n指针与数组指针与数组 n字符串及其应用字符串及其应用 n结构体类型和联合体类型结构体类型和联合体类型 nC C语言的文件处理及其应用语言的文件处理及其应用 n位运算与枚举类型位运算与枚举类型第2页/共62页第一章第一章 C C语言数据描述和语言数据描述和C C程序设计初步程序设计初步C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步第3页/共62页1.1.1 C1.1.1 C源程序的组成成分源程序的组成成分#include#include /*/*头文件声明头文件声明*函数头函数头*/void void main(main()/*/*定定义义主主函函数数且且无无返返回回值值*/float ave,x,y,z;/*float ave,x,y,z;/*定义变量定义变量*/scanf(scanf(“%f,%f,%f%f,%f,%f”,&x,&y,&z);/,&x,&y,&z);/*调调用用scanfscanf函函数数接接受受数据数据*/ave=(x+y+z)/3;/*ave=(x+y+z)/3;/*计算平均值计算平均值*/printf(printf(“%f%f”,ave);,ave);/*/*调调用用printfprintf函函数数输输出出结结果果*/说明:说明:1.1.程序由预处理命令和至少一个函数组成,但必须而且只有一个主函数,程序由预处理命令和至少一个函数组成,但必须而且只有一个主函数,函数名必须是函数名必须是mainmain。2.2.函数由函数头和函数体组成。函数体总是从花括号函数由函数头和函数体组成。函数体总是从花括号“”开始。以反花开始。以反花括号括号“”结束。结束。第4页/共62页3 3 函数体由语句组成。函数体由语句组成。每一个分号每一个分号“;”就代表一条语句的就代表一条语句的结束。结束。4 4 以以/*/*开头到开头到*/结束的部分叫注释行。即注解。不是语句,结束的部分叫注释行。即注解。不是语句,可以在程序中的任何位置,结尾不要分号可以在程序中的任何位置,结尾不要分号“;”,不引起,不引起计算机任何动作。计算机任何动作。5 5 语句由语句由C C语言规定的符号组成,结尾一定是分号语言规定的符号组成,结尾一定是分号“;”不同的语句引起不同的计算机动作,是计算机执行程序不同的语句引起不同的计算机动作,是计算机执行程序的最小单位。的最小单位。6 6 当程序由多个函数组成时,除主函数当程序由多个函数组成时,除主函数mainmain外,其他的函外,其他的函数叫子函数。数叫子函数。例1-1 C语言源程序的组成成分和基本结构 1.1.1 C1.1.1 C源程序的组成成分源程序的组成成分 第5页/共62页用C言符号书写的程序称为源程序,高级语言源程序必须被转为机器语言程序才能被执行。1.1.1 C1.1.1 C源程序的组成成分源程序的组成成分 源文件。目标文件。执行文件。其它目标文件/库。连接程序编译程序图1.1 C程序的处理过程第6页/共62页1.1.2 C1.1.2 C语言的基本元素语言的基本元素 1C语言的字符集 小写英文字母a b c z 大写英文字母A B C Z 数字0 1 2 3 9 特殊字符+=-_()*&%$!|.,;:“/?不可印出字符空格、换行、制表符等2标识符 标识符是给程序中处理的数据对象(如变量、常量、函数、数据类型等)取的名字.第7页/共62页1.1.2 C1.1.2 C语言的基本元素语言的基本元素标识符取名规则组成标识符的字符为字母、数字和下划线 标识符中第一个字符必须是字母或下划线 多数C编译系统在构成标识符时都要区分字母的大小写,即abc和Abc是不相同的标识符构成标识符的字符个数(标识符长度)与所使用的环境相关保留字操作系统或编译系统或其他系统已经用了的名字例如 double else enum extern float forgotoif_Imaginary*inline*intlong registerrestrict*用户标识符 用户自己取的名字第8页/共62页1.1.2 C1.1.2 C语言的基本元素语言的基本元素程序员(用户)在程序中自定义标识符时,除了避免使用保留字和必须遵守标识符的命名规则外,还需要注意以下两个方面:一是要将标识符取得既有意义,又便于阅读;二是要注意避免含义上或书写时引起混淆。例如下面是一些合法用户自定义标识符的例子:a b1file_name_buf下面是不合法的用户自定义标识符例子及错误原因:123abc/*不能以数字开头*/float/*与系统保留字同名*/up.to/*标识符中出现了非法字符“.”*/zhang san/*标识符中间出现了非法字符空格*/第9页/共62页1.1.2 C1.1.2 C语言的基本元素语言的基本元素 3函数 函数是构成程序的基本模块,每个函数具有相对独立的功能函数有三种:主函数(即main()函数)、C语言编译系统提供的标准库函数和用户自定义的函数 主函数是C程序执行的入口,即程序总是从主函数中的第一条可执行的语句开始执行;一般情况下也是程序执行的出口 标准库函数是语言处理系统提供的常用功能的处理程序代码,需要时使用预处理语句将其包含到程序中。用户自定义函数即程序员根据所设计应用程序的功能自己编写的函数。第10页/共62页1.1.2 C1.1.2 C语言的基本元素语言的基本元素 4C程序书写的基本要点 C程序习惯上使用小写英文字母。为了清晰起见,在C程序中往往使用大写英文母来表示宏定义或其它具有特殊意义的标识符。C程序中不强调程序行的概念。一行中可以有多条语句,一个语句也可以写在多行上,但语句与语句之间要用分号(;)分隔。C程序为了增强程序的可读性,可以使用适量的空格、空行和适当的行间缩进结构。第11页/共62页第一章第一章 C C语言数据描述和语言数据描述和C C程序设计初步程序设计初步C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步第12页/共62页1.2 C1.2 C语言的基本数据类型语言的基本数据类型 数据和数据类型在C语言源程序中能直接书写的、需要被处理的符号只有数和字符两种,这种符号称为C语言的数据。计算机程序只能处理已经存入计算机系统内存的数据,任何需要用计算机程序处理的信息都需要被转换为内存中的数据才能被处理。计算机系统的内存是按字节编址的,在内存里存放一个数据所需要的内存字节数称为一个数据所需要的内存空间,程序中不同的数据在系统内存中所要求的存储空间大小也不一样,因而在程序设计中需要区分所处理数据的数据类型。第13页/共62页1.2 C1.2 C语言的基本数据类型语言的基本数据类型C语言提供的数据类:数据类型第14页/共62页1.2 C1.2 C语言的基本数据类型语言的基本数据类型 常量和变量C源程序中直接书写的数据称为常量,存放一个数据所需要的内存空间称为变量,内存空间中存放的数据内容称为变量值。常量数据在源程序中给定后,在程序的整个执行过程中保持不变。而变量在程序的执行过程中是一个其值可以被程序修改的量。是一个变化的量。第15页/共62页1.2 1.2.1 C.1 C语言的整型数据类型 整型量1整型常量 C语言源程序能直接书写的整型常量可以有三种形式:十进制整数。如888、-123、0等。八进制整数。以0开头的整数是八进制整型常量,如0777、-011等。十六进制整数。以0 x开头的整数是十六进制整型常量,如0 x123、0 xff等。在字长为16位计算机系统中,整型数据表示的范围为-32768 32767(-215215-1);在字长为32位的计算机系统中,则表示的数据范围为-231 231-1。第16页/共62页1.2 1.2.1 C.1 C语言的整型数据类型 2整型变量 存放整型数据的内存空间称为整型变量,C语言提供了基本整型、短整型、长整型和无符号整型四种大小不同的单位空间来存放整形数据。类型名类型名 意意 义义 字节数字节数 精度范围精度范围short short 短整型短整型 2 -327672 -327673276832768int int 基本整型基本整型 4 4 -2147483647214748364721474836482147483648long long 长整型长整型 4 -4 -2147483647L2147483647L2147483648L2147483648Lunsigned short unsigned short 无符号短整型无符号短整型 2 0 2 0 6553565535unsigned int unsigned int 无符号基本整型无符号基本整型 4 0 4 0 4294967295U4294967295UUnsigned long Unsigned long 无符号长整型无符号长整型 4 0 4 0 4294967295UL4294967295UL第17页/共62页1.2 1.2.1 C.1 C语言的整型数据类型 3.变量定义整型变量定义的一般形式为:类型名;该语句的功能是:指定具有类型名定义的多个内存空间,取名为变量列表中的标识符(变量名),数量与变量列表中变量名的个数一致。例如:int x1,x2;(定义变量x1,x2为整型变量)longx,y;(定义变量x,y为长整型变量)unsigned c,d;(定义变量c,d为无符号整型变量)例1-2 整型变量的定义和输出示例。第18页/共62页1.2.2 C1.2.2 C语言的实型数据类型语言的实型数据类型 实型量1实型常量 在C语言源程序中能直接书写的实型数,称为实型常量。实型数在C语言中又称为浮点数,实型常数有两种表示形式:实数形式:实数形式由数字和小数点组成。如:888.88,0.88等。指数形式:数据由数字09、小数点和表示阶码的标志“e”或“E”组成,其组成形式一般为:整数部分.小数部分E指数部分 如123e5表示123105,123e-5表示12310-5。第19页/共62页1.2.2 C1.2.2 C语言的实型数据类型语言的实型数据类型在使用实型数的指数表示形式时应该注意下面两点:指数部分只能是整数而不能用实数表示,如123E1.5是错误的表示方法。字母“e”或“E”之前的尾数部分不能省略,如10-8不能只写为E-8,而应该写成为1E-8(或者1e-8).第20页/共62页1.2.2 C1.2.2 C语言的实型数据类型语言的实型数据类型2实型变量C源程序文件中存放实型数据的数据对象称为实型变量。C语言中的实型变量按其表示的数据范围不同和精度不同分为单精度型和双精度型,其类型名分别为float和double。第21页/共62页1.2.2 C1.2.2 C语言的实型数据类型语言的实型数据类型3.变量定义定义实型变量的一般形式为:类型名;功能意义与整形变量定义相同例如:float x,y;(定义变量x,y为单精度实型变量)double z;(定义变量z为双精度实型变量)例1-3 实型变量的定义和输出示例。类型名类型名 意意 义义 字节数字节数 精度范围精度范围float float 单精度实型单精度实型 4 4 1.175494e-0381.175494e-0383.402823e+038 3.402823e+038 double double 双精度实型双精度实型 8 8 2.225074e-308 2.225074e-3081.797693e+3081.797693e+308第22页/共62页1.2.3 C1.2.3 C语言的字符型数据类型语言的字符型数据类型 字符量 在C语言源程序中直接书写的、需要被处理的字符就是字符常量。同样,用于存放这个字符的内存空间就是字符变量。1.字符常量 普通字符:普通字符是由单引号括起来的一个可打印字符,如a、?、A等。转义字符:转义字符是由反斜杠开头的字符序列,此时反斜杠字符后面的字符或字符序列不表示自己本身的含义而转变为表示另外的特定意义。第23页/共62页1.2.3 C1.2.3 C语言的字符型数据类型语言的字符型数据类型2字符变量 字符类型变量用以存储和表示一个字符,占用一个字节。字符型变量的定义形式如下:char;例如:char ch;(定义变量ch为字符型变量)在C语言中字符型变量和整型变量是兼容的,系统中存储的是对应字符的ASCII码值,因此在C语言中字符数据和整数之间可以通用,即字符型数据可以与整型数据一起参与运算,但在使用时要注意其表示的合理范围(0255范围内的整数)第24页/共62页1.2.3 C1.2.3 C语言的字符型数据类型语言的字符型数据类型 例如,若有C语句序列:char ch;ch=A;ch=ch+1;,则执行该语句序列后ch的内容是字符B。例1-4 字符变量的定义和输出示例。3字符串常量 C语言中,字符串常量是用双引号括起来的由0个字符或若干个字符构成的字符序列,例如“This is a string constant”。其中,双引号只是作为定界符使用,并不是字符串中的字符。存储字符串常量时分配一段连续的存储单元用于依次存放字符串中的每一个字符,然后在字符串的最后一个字符后添加转义字符0表示字符串的结尾,所以其需要的空间长度是串中字符存储所需要的长度再加一个字节。第25页/共62页1.2.3 C1.2.3 C语言的字符型数据类型语言的字符型数据类型 4符号常量 在C语言中,除了可以具体的各种类型常量外,还可以可以用符号代替常量,用以代替常量的符号称为符号常量(或称为宏常量)。符号常量在使用之前也必须预先定义。其定义的格式为:#define 标识符 被替代的常量例如:例如:#define PI 3.1415926#define PI 3.1415926#define EOF-1#define EOF-1#define precision 1e-8#define precision 1e-8第26页/共62页1.2.4 1.2.4 变量的初始化 变量的初始化指的是为变量第一次赋值。在C语言中变量初始化的方法有两种,一是在程序的执行过程中通过赋值运算符实现赋值;二是在定义变量的同时为变量赋初值。C语言中,定义变量的同时对其初始化的一般形式为:=;例如 int a,x1=100;long b,x2=100L;float c,x3=100.30;double x4=100.5;char ch=A;第27页/共62页第一章第一章 C C语言数据描述和语言数据描述和C C程序设计初步程序设计初步C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步第28页/共62页1.3 基本运算符和表达式基本运算符和表达式 在完成数据存入内存后,需要对这些数据做相关的处理或运算,以得到我们所需要的结果。C语言提供了多种运算符号,通过由这些运算符组合成表达式和表达式语句对数据进行处理。这些运算符是C语言规定的。各个运算符有各自的意义。1算术运算符 2关系运算符 3逻辑运算符 4赋值运算符 5条件运算符 6位运算符 7逗号运算符 8指针运算符 9.其它运算符第29页/共62页1.3 基本运算符和表达式基本运算符和表达式一些运算符只需要一个运算对象(操作数),这种运算符称为单目运算符;另外一些运算符需要两个运算对象,这些运算符称为双目运算符;还有比较特殊的运算符需要三个运算对象,称这种运算符为三目运算符。运算符的优先级和结合性 优先级表明计算顺序,计算的先后关系 结合性表明计值方向。左结合(从左到右)和右结合(从右到左)。第30页/共62页1.3.1 算术运算符和算术表达式算术运算符和算术表达式 C语言提供了加,减、乘、除和求模五种算术运算符,对应的符号分别是:+、-、*、/和%。这些运算符都需要两个运算对象,称为两目运算符。而且是从左到右的运算顺序,称为左结合性。除求模运算符外,满足数据的正、负符号规则。例如:3+2结果为5,3*(-5)结果为 15.当两个整数相除时,得到的结果仍然是整数。既取整运算。例如:7/5结果为1,-7/5结果为-1,3/5结果为0.求模运算就是求余数,参加求模运算的两个对象必须都是整型对象,运算结果的符号与第一个运算对象相同。例如:7%5结果为2,-7%5结果为-2,7%(-5)=2。第31页/共62页1.3.1 算术运算符和算术表达式算术运算符和算术表达式由算术运算符和括号将运算对象连接起来的、符合C语言语法规则的算术表达形式称为C语言的算术表达式。运算对象包括常量、变量、函数、表达式等,值得注意的是单个的常量、变量或函数名本身也是表达式。如:a*b/c-1.5+a是一个合法的表达式。而表达式 a+b-2.3%6就不是一个合法的C语言表达式。优先级高()函数 +、-*、/、%+、-优先级低 例1-5 算术运算符使用示例。第32页/共62页1.3.2 赋值运算符和赋值表达式赋值运算符和赋值表达式 C语言规定符号“=”为赋值运算符,由“=”连接的表达式称为赋值表达式。赋值表达式的书写格式为赋值运算符左边只能是一个变量,右边是一个表达式,格式如下:变量名=表达式 其意义为:将赋值运算符右边的表达式的值存入左边变量名所指定的单位内存空间中,替换掉以前的值。或简述为将表达式的值赋给变量。例如 a=10的意义是将整型数10赋给变量a作为其值;y=x+110的意义是先计算x+110的值,然后将它赋给变量y作为其值。第33页/共62页1.3.2 赋值运算符和赋值表达式赋值运算符和赋值表达式当赋值运算符两边的数据对象类型不一致时,在赋值时要进行数据类型的转换。转换的基本规则是以赋值运算符左边变量的数据类型为准。例如有如下程序段:int a;float x=10.5f,y=10.6f;a=x+y;执行这段程序时,首先计算出算术表达式x+y的值为:21.1,然后将该值用截取法取整得到21后再赋值给左边的整型变量a,使得a的值为整数21。第34页/共62页1.3.2 赋值运算符和赋值表达式赋值运算符和赋值表达式C语言程序中,能执行操作运算的只有语句。表达式的功能只能在语句里才能被实现。而单独的表达式是不合法和不被执行的。赋值语句由赋值表达式加上C语句结尾符号分号“;”构成,其一般形式为:;或 变量名=表达式;例如:a=x+y是赋值表达式,而a=x+y;则是赋值语句 注意:1.赋值运算符的左边必须为变量,不能为常量或表达式。2.赋值运算符的优先级低于逻辑运算符、关系运算符、算术 运算符。其结合性为从右至左(即:右结合性)。3.在C语言中,赋值表达式可以作为一个对象出现在另外的表达式中。例1-6 赋值运算符和赋值表达式使用示例。第35页/共62页 1.3.3 1.3.3 自反运算符自反运算符 复合赋值符:凡是双目运算符都可以与赋值运算符一起组成复合赋值符,其结合性为右结合性。这些复合赋值符共有10个,它们是:+=、-=、*=、/=、%=、=、&=、=、|=自反运算符:赋值运算符“=”的左边加上算术运算符之一而构成的运算符,称为自反运算符。它有两种运算,即算术运算和赋值。是一种“复合运算符”。第36页/共62页1.3.3 1.3.3 自反运算符自反运算符例如:a+=5相当于a=a+5x*=y+1相当于x=x*(y+1)x%=y-5相 当 于x=x%(y-5)注意:自反运算符的结合性为右结合性,自反运算符 的优先级和赋值运算符一致。例1-7 自反运算符使用示例。例1-8 自反运算符的结合性示例。第37页/共62页 1.3.4 1.3.4 自增、自减运算符自增、自减运算符 自增运算符“+”和自减运算符“-”是两个单目运算符,其功能是将运算对象的值增加或减少一个该对象的单位值。自增运算符和自减运算符都可以作用于整型变量、实型变量或者字符型变量。自增运算符和自减运算符不能作用于常量数据或者表达式。例如下面的语句序列存在着错误:int a=100;-(a+100);/*试图对表达式a+100施加自减 运算*/300+;/*试图对整型常数300施加自增运算*/第38页/共62页1.3.4 1.3.4 自增、自减运算符自增、自减运算符自增、自减运算符的前缀形式 前缀形式即自增、自减运算符(+、-)出现在变量的左侧,如:+i、-i。自增、自减运算符的前缀形式对变量实施的运算是“先增/减值后引用”。自增、自减运算符的后缀形式 后缀形式即自增、自减运算符(+、-)出现在变量的右侧,如:i+、i-。自增、自减运算符的后缀形式对变量实施的运算是“先引用后增/减值”。例1-9 自增、自减运算符使用示例。第39页/共62页1.3.5 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程序中并不是任何地方出现的逗号都是逗号运算符,逗号在许多地方也作为分隔符用以分隔若干个对象。第40页/共62页1.3.6 sizeof1.3.6 sizeof运算符运算符 sizeof运算符是C语言特有的一个运算符,运算符使用形式为:sizeof()其中,数据对象既可以是某个具体的变量名,也可以是某种数据类型的常量,还可以是某种数据类型的名字,甚至于还可以是一个合法的C表达式。sizeof运算符的功能是返回其所测试的数据对象所占存储单元的字节数。例1-11 sizeof运算符使用示例。例1-12 sizeof运算符使用示例。第41页/共62页1.3.7 1.3.7 运算符优先级别和结合性规则运算符优先级别和结合性规则 将表达式中的各种运算符运算的先后顺序规定为15个由低到高的优先级别,同时还为运算符规定了结合性。在表达式求值时,若运算对象两边的运算符优先级不同,按优先级别从高到低运算。若运算对象两边的运算符优先级相同,则按其结合规则处理,对于表达式而言同级运算并不是都遵从从左到右的原则。C运算符有两种结合性,即左结合性和右结合性。例1-13 右结合性运算符使用示例。第42页/共62页第一章第一章 C C语言数据描述和语言数据描述和C C程序设计初步程序设计初步C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步第43页/共62页1.4 1.4 不同类型数据混合运算及数据转换不同类型数据混合运算及数据转换 不同数据类型隐式转换 隐式转换是系统的自动转换,数据类型转换的原则是向表达数据能力更强的方向转换。即当在表达式运算过程中出现了不同数据类型的数据进行混合运算时,系统先自动按图1.4所示的规则将参加运算的数据对象转换成同一类型的数据再进行运算。例1-14 表达式混合运算中的 自动数据类型转换示例。高 double floatlongunsigned 低 int short,char图1.4 系统自动数据类型转换规则第44页/共62页1.4 1.4 不同类型数据混合运算及数据转换不同类型数据混合运算及数据转换不同数据类型显式转换 在C程序设计中,如果有需要可以对数据进行显式类型转换。显式转换又称为强制类型转换。显式类型转换的一般形式是:(类型名)()float x=2.5;int a=10,m,n;m=a+(int)x;n=a+(int)(x+1.8);特别注意:类型转换只对标注强制转换这一次起作用,在程序的其余地方,变量还保留其原有的值。例1-15 表达式混合运算中的强制数据类型转换示例。第45页/共62页第一章第一章 C C语言数据描述和语言数据描述和C C程序设计初步程序设计初步C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步第46页/共62页1.5 C1.5 C程序设计初步程序设计初步 1.5.1 算法基本概念及算法描述第47页/共62页1.5.2 1.5.2 C C语句概述 语句按其功能可以分为两大类:表达式语句、流程控制语句。表达式语句 赋值语句 赋值语句由赋值表达式接一个分号组成。例如y=x+1;函数调用语句 函数调用语句由函数调用表达式后接一个分号组成。例如printf(“Hello,World!n”);空语句 空语句只由一个分号组成,它不进行任何操作(或者称之为进行空操作)。第48页/共62页1.5.2 1.5.2 C C语句概述流程控制语句 条件语句 if.else.循环语句 for while do.while提前结束本次循环语句continue循环或多分支终止语句break无条件转移语句goto返回语句return复合表达式语句 C语言允许把一组语句括在花括号之中构成一个语句块,称之为复合语句。例如:char ch;ch=getchar();putchar(ch);第49页/共62页1.5.3 C1.5.3 C程序的输出程序的输出最基本的输出函数最基本的输出函数 C语言中没有提供输入和输出语句,其所有的输入输出均通过调用标准库函数来实现。C语言中的I/O类标准库函数的声明包含在头文件stdio.h中,所以在C程序源文件中开始位置应该加上如下包含编译预处理命令:#include stdio.h或#include 1格式化输出函数printf C语言中的格式化标准输出函数为printf函数,函数调用的一般格式为:printf(“格式控制字符串”,输出表列);第50页/共62页1.5.3 C1.5.3 C程序的输出程序的输出最基本的输出函数最基本的输出函数函数的功能是:按“格式控制字符串”的要求向标准系统输出设备(显示器)输出一个或多个任意类型的数据。其中的输出表列由一到若干个输出表达式组成,两个输出表达式项之间用逗号分隔。格式控制字符串则由普通字符和格式控制项组成。普通字符 在格式控制字符串中,普通字符在输出时照原样输出,所谓原样输出指的是在给定的位置输出给定的字符。第51页/共62页1.5.3 C1.5.3 C程序的输出程序的输出最基本的输出函数最基本的输出函数格式控制项在格式化输出函数的格式控制字符串中,格式控制项与输出表列中的输出表项一一对应,用于规定或说明输出表项的输出格式。在格式控制项中,百分号(%)是格式控制项的引导符号,一个格式控制项以%开始到格式控制字符结束,中间含有若干个可选项。格式控制项的一般形式为:%-0*m.n l/h 第52页/共62页1.5.3 C1.5.3 C程序的输出程序的输出最基本的输出函数最基本的输出函数控制字符控制字符控制字符控制字符控控控控 制制制制 字字字字 符符符符 意意意意 义义义义d d以十进制形式输出带符号整数以十进制形式输出带符号整数以十进制形式输出带符号整数以十进制形式输出带符号整数 (正数不输出符号正数不输出符号正数不输出符号正数不输出符号)o o以八进制形式输出无符号整数以八进制形式输出无符号整数以八进制形式输出无符号整数以八进制形式输出无符号整数 (不输出前缀不输出前缀不输出前缀不输出前缀O)O)O)O)x x以十六进制形式输出无符号整数以十六进制形式输出无符号整数以十六进制形式输出无符号整数以十六进制形式输出无符号整数 (不输出前缀不输出前缀不输出前缀不输出前缀OX)OX)OX)OX)u u以十进制形式输出无符号整数以十进制形式输出无符号整数以十进制形式输出无符号整数以十进制形式输出无符号整数 f f以小数形式输出单、双精度实数以小数形式输出单、双精度实数以小数形式输出单、双精度实数以小数形式输出单、双精度实数 e e以指数形式输出单、双精度实数以指数形式输出单、双精度实数以指数形式输出单、双精度实数以指数形式输出单、双精度实数 g g以以以以%f%f%f%f或或或或%e%e%e%e中较短的输出宽度输出单、双精度实数中较短的输出宽度输出单、双精度实数中较短的输出宽度输出单、双精度实数中较短的输出宽度输出单、双精度实数 c c输出单个字符输出单个字符输出单个字符输出单个字符 s s输出字符串输出字符串输出字符串输出字符串 第53页/共62页1.5.3 C1.5.3 C程序的输出程序的输出最基本的输出函数最基本的输出函数2字符输出函数putchar 字符输出标准库函数putchar的调用形式:putchar(输出对象);其中:输出对象可以是字符常量(包括转义字符)、字符变以及整型常量、整型变量等可以转换为字符数据的对象。函数的功能是将用输出对象表示的单个字符输出到标准输出设备(屏幕)上。例如:putchar(A);/*输出大写字母A*/putchar(n);/*换行*/例1-18 字符数据输出示例。第54页/共62页1.5.4 C1.5.4 C程序的输入程序的输入-最基本的输入函数最基本的输入函数 1格式化输入函数scanf C语言中的格式化标准输入函数为scanf,函数调用的一般格式为:scanf(“格式控制字符串”,地址表列);函数的功能是:按“格式控制字符串”的格式要求,从标准系统输入设备(键盘)上输入一个或多个指定类型的数据到由地址列表指定始地址的内存单元中。地址列表中的每一项为一个地址量,其形式是在一般变量之前加取地址运算符&。例如:设有变量x,则&x表示变量x的地址。第55页/共62页1.5.4 C1.5.4 C程序的输入程序的输入-最基本的输入函数最基本的输入函数格式控制字符串中的普通字符 在格式控制字符串中,如果有普通字符存在,则在执行输入时需要照原样输入,即在指定的位置输入指定的字符。例如:scanf(“a=%d”,&a);scanf(“%d,%d”,&a,&b);格式控制字符串中的格式控制项 在格式化输入函数中,格式控制项与地址列表中的地址表项一一对应,用以指定对应项输入数据的输入格式。输入数据的格式控制项一般形式为:%*m l/h 第56页/共62页1.5.4 C1.5.4 C程序的输入程序的输入-最基本的输入函数最基本的输入函数格式控制字符用于规定对应数据项的输入格式 控制字符控制字符控制字符控制字符控控控控 制制制制 字字字字 符符符符 意意意意 义义义义d d以十进制形式输入带符号整数以十进制形式输入带符号整数以十进制形式输入带符号整数以十进制形式输入带符号整数 (正数不输入符号正数不输入符号正数不输入符号正数不输入符号)o o以八进制形式输入无符号整数以八进制形式输入无符号整数以八进制形式输入无符号整数以八进制形式输入无符号整数 (不输入前缀不输入前缀不输入前缀不输入前缀O)O)O)O)x x以十六进制形式输入无符号整数以十六进制形式输入无符号整数以十六进制形式输入无符号整数以十六进制形式输入无符号整数 (不输入前缀不输入前缀不输入前缀不输入前缀X)X)X)X)f f以小数形式输入单、双精度实数以小数形式输入单、双精度实数以小数形式输入单、双精度实数以小数形式输入单、双精度实数 e e以指数形式输入单、双精度实数以指数形式输入单、双精度实数以指数形式输入单、双精度实数以指数形式输入单、双精度实数 c c输入单个字符输入单个字符输入单个字符输入单个字符 s s输入字符串输入字符串输入字符串输入字符串 第57页/共62页1.5.4 C1.5.4 C程序的输入程序的输入-最基本的输入函数最基本的输入函数如果在格式控制字符串中的两个格式控制项之间插入了一个或若干个普通字符,在前面已经提到这些字符是格式控制字符串中的普通字符,严格按原样照输入。例如有语句序列:int a,b;scanf(“%d,%d”,&a,&b);scanf(“%d#%d”,&a,&b);若仍然要求执行完格式化输入函数调用语句后变量a的值为 10、变 量 b的 值 为 20,则 对 于 输 入 函 数 调 用 语 句scanf(“%d,%d”,&a,&b);,输入流只能是:10,20 而对语句scanf(“%d#%d”,&a,&b);,输入流只能是:10#20第58页/共62页1.5.4 C1.5.4 C程序的输入程序的输入-最基本的输入函数最基本的输入函数关于输入流结束时的换行符问题 例1-19关于输入流结束换行符的引例。scanf(%d,&a);/*要求输入数据100*/scanf(%c,&c);/*要求输入字符A*/当第一个输入函数调用语句scanf(“%d”,&a);输入数据100后需要按回车键表示输入结束,但下一个输入函数调用语句scanf(“%c”,&c);却将该回车键作为自己的输入数据接收,因而出现程序运行得到错误结果。避免输入换行符输入流应为:100A为防止这种情况,有多种方法解决。只要避开输入数据后的间隔符不会误作为后面的字符输入就可以了。比如:scanf(%c,&c);/*要求输入字符A*/scanf(%d,&a);/*要求输入数据100*/第59页/共62页1.5.4 C1.5.4 C程序的输入程序的输入-最基本的输入函数最基本的输入函数 字符输入函数getchar 字符输入标准库函数getchar的调用形式:getchar();函数的功能是:从标准输入设备上读入一个字符,将这个字符作为函数的返回值并回显在屏幕上。可以用字符型或整型变量接收通过getchar函数读入的字符,其一般形式为:char c;c=getchar();/*从键盘上读入一个字符并将其存放到字符型变量c中*/第60页/共62页1.5.5 1.5.5 常用数学类标准库函数的使用常用数学类标准库函数的使用 必须包含预处理命令#include 求绝对值函数求余数三角函数指数类、对数类和平方根第61页/共62页感谢您的欣赏!第62页/共62页