第三章基本数据类型、运算符与输入输出函数

上传人:青*** 文档编号:240762120 上传时间:2024-05-05 格式:PPS 页数:106 大小:480.50KB
返回 下载 相关 举报
第三章基本数据类型、运算符与输入输出函数_第1页
第1页 / 共106页
第三章基本数据类型、运算符与输入输出函数_第2页
第2页 / 共106页
第三章基本数据类型、运算符与输入输出函数_第3页
第3页 / 共106页
点击查看更多>>
资源描述
第三章 基本数据类型、运算符与输入输出函数 n3.1 基本数据类型基本数据类型n3.2 常量常量 n3.3 变量变量 n3.4 C语言的运算符和表达式语言的运算符和表达式 n3.5 输入输出函数输入输出函数 13.1 基本数据类型基本数据类型数据类型基本类型构造类型其他类型整型带符号无符号基本整型(int)短整型(short int)长整型(long int)整型(unsigned int)短整型(unsigned short int)长整型(unsigned long int)字符型(char)实型(浮点型)单精度型(float)双精度型(double)长双精度型(long double)枚举类型(enum)数组类型结构体类型(struct)共用体类型(union)指针类型空类型(void)23.2 常量常量何谓常量何谓常量程序中直接书写的数据;例如:a=100;b=a+12;常量类型常量类型以字面形式区分;例如:12 (基本整型)3.5 (实型)123L (长整型)A (字符型)符号常量符号常量用标识符代表一个常量。33.2 常量常量3.2.1整型常量整型常量就是整常数,可以用三种进制形式表示:1十进制数:以非0数字开头的数。如123,-123等,其每个数字位可以是09。2八进制数:以数字0开头的数。如0123,-0123等,其每个数字位可以是07。3十六进制数:以0 x(或0X)开头的数。如0 xffff,0 x1111,-0 x123等,其每个数字位可以是09、AF(或af)。43.整常量类型整常量类型 int 型常数:3276832767视为int常数;可赋给int、long型变量。long型常数:在 2147483648 2147483647之内、但超出3276832767的数及带后缀l/L的视为long型常数;可赋给long型变量。2147483648 32768 0 32767 2147483647 long int long 带后缀 l 或L的数:long 5整型量的溢出 若一个变量无法容纳下要存入的数,这种现象称为溢出,溢出将导致数据存储错误;在运算过程中也有可能产生溢出导致运算结果错,因此程序设计中应避免产生溢出。例:int a,b;a=65538;b=123*456;printf(a=%d,b=%d,a,b);a=2,b=-9448 (溢出的错误结果)YS6溢出原因:溢出原因:1)a=65538;65538=(1 0000 0000 0000 0010)2 a:只存入后16位2)b=123*456;123456=56088=(1101 1011 0001 1000)2 b:-9448的补码 0000 0000 0000 00201101 1011 0001 10007解决办法:解决办法:long a,b;a=65538;b=123*456;/*计算结果有溢出*/printf(a=%ld,b=%ld,a,b);a=65538,b=-9448 (仍有错)long a,b;a=65536;b=123L*456;printf(a=%ld,b=%ld,a,b);a=65536,b=56088 (正确)83.2 常量(续)常量(续)3.2.2实型常量实型常量在C语言中又称为实数或浮点数。在C语言中,实数只采用十进制。它有两种表示形式:1十进制形式。这种形式的数由整数部分、小数点和小数部分组成(注意必须有小数点)。如:1.24,0.345,.222,234.0,333.,0.0等。2指数形式。这种形式由三部分组成:实数部分、字母E或e和整数部分。象123x1022可以表示为123E22或123e22。要注意,字母E或e之前必须有数字,之后的数字必须为整数。如e3、2.1e3.5、2.7e、e等都不是合法的指数形式。9【例】123.0 0.123 -14.2 0.0 0.123【例】表示12亿3千万数学方式1230000000或12.3108 程序中1230000000.0 (小数形式的实常数)12.3e+8、1.23e9、123e7(指数形式)10指数形式说明:指数形式说明:12.3 e+8 指数部分 数值部分指数部分:e表示以10为底,可大/小写;8为指数值(幂),只能是整数;指数符号为正可省略;数值部分:可是小数或整数;11【例】表示电子质量0.9110-30小数形式:0.0000 0091指数形式:0.91e-30、0.91E-30、91e-32可见:在程序中表示较大或较小数时,采用指数 形式简洁、不易书写错。注意:注意:1)一个数可写成多种指数形式,但存储格式一致;2)2)指数部分不可单独代表常数;3)如表示108:e+8被编译系统理解为变量e加8;4)正确表示:1.0e8、1e8123.2 常量(续常量(续)3.2.3字符常量C语言中的字符常量是用单引号()括起来的一个字符。如A、x、D、?、3、X等都是字符常量。C语言中还规定有另一类字符常量,它们以开头,被称作转义字符,意思是将反斜杠()后面的字符转变成另外的意义。13C特别规定的转义字符:特别规定的转义字符:转义形式含 义转义形式含 义 n回车换行 a响铃 t横向跳至标准列 右斜杠字符 b回退一列 单引号字符 r回车到行首”单引号字符转义形式含 义 ddd用字符的8进制ASCII码值代表字符;ddd:13位;取值0 376(254D);适于所有字符。xhhhh:12位16进制字符;取值0FE,x小写,字母字符可大/小写。适于所有字符。14例:在程序中表示下列字符 字符A:A 101 x41 字符3:3 63 x33 单引号:空格:40 x20 回车换行:n 不可键入字符:362 xf2例:在程序中表示字符序列ABC、123 ABC、123 构成字符串常量153.2 常量(续)常量(续)3.2.4字符串常量字符串常量是用双引号括起来的字符序列。如:string、Thisismyfirstprogram!。C语言规定字符串的存储方式为:串中的每个字符(转义字符只能被看成一个字符)按照它们的ASCII码值的二进制形式存储在内存中,并在存放串中最后一个字符的位置后面再存入一个字符0(ASCII码值为0的字符),这是字符串结束的标志。16字符串常量字符串常量 1)表示由一对双引号括起来的字符序列;”How do you do.”长度:14 ”123.456”长度:7 ”a”长度:1在程序中表示下列字符串:xy ”xxf2y”长度:3C:DOS ”C:DOS”长度:6”OK!”OK!”长度:517 2)存储双引号内每个字符占用一个字节,所有 字符按顺序连续存储,自动在最后加入字串 结束标志:空字符例:0010 0000 0000 0000空字符:名为NUL的控制字符 其ASCII码值:0 程序中表示:0 注意:空字符与空格字符是不同的字符。H ow d o you d o.0183.2 常量(续)常量(续)3.2.5符号常量C语言允许将程序中的常量定义为一个标识符,称为符号常量。符号常量一般使用大写英文字母表示,以区别于一般用小写字母表示的变量。符号常量在使用前必须先定义,定义的形式是:#define#define 标识符标识符 常量常量 193.3 变量变量变量用标识符标识且在程序运行过程中允许被改变的量;C变量命名(变量命名(C标识符)规则:标识符)规则:由大或小写字母字母、数字数字、下划线下划线组成,且第一第一第一第一个字符必须是字母或下划线个字符必须是字母或下划线个字符必须是字母或下划线个字符必须是字母或下划线。变量名长度:变量名长度:MS C有效字符为8个,多余部分不予识别;Turbo C隐含有效字符为32个,可自行调整。20变量命名举例:变量命名举例:合法:sum、SUM、Average、toal、cost_1、_1非法:for、num-1、2a、8L、ABC#注意:注意:1.C变量名中字母可大小写,但有大小写之分,SUM、sum、Sum被视为不同的变量。2.有效字符相同的变量名被视为是同一个变量;如MS C中student_name与student_number。3.在实际应用中命名应尽量见名知义。4.C中变量必须先定义后引用。21与与变量有关的概念:变量有关的概念:1)变量三要素:变量名、变量地址、变量值2)变量的地址 (变量的指针)给变量分配的存储单元第一个字节的地址;例如:int n,m;n=10;m=25;n的地址 202m的地址 2041025223)变量被赋值被赋值的物理意义是向它的存储单元存数;4)变量可多次被赋值,新值将覆盖旧值;例如:n=10;/*赋值:破坏性的*/n=45;5)变量被引用被引用的物理意义是从它的存储单元中读数;例如:n=10;m=n+2;/*引用:非破坏性的*/6)两变量内容的交换可借助另一个变量或利用运算 关系实现。235 10例如:实现两个变量内容的交换方法1:利用中间变量实现int a=5,b=10,t;t=a;a=b;b=t;方法2:a=a+b;/*5+10=15a*/b=a-b;/*15-10=5 b*/a=a-b;/*15-5=10a*/10atb55243.3 变量(续)3.3.2整型变量整型变量可分为:基本型、短整型、长整型和无符号型。无符号型又分为无符号整型、无符号短整型和无符号长整型。25整型变量整型变量分类分为六类类型名称类型标识符性质 存储格式基本整型int有符号 补码、高位符号位短整型short int长整型long int无符号整型unsigned int无符号全部作为数据位无符号短整型unsigned short无符号长整型unsigned long 26在Turbo C中:类型标识符存储位表示范围int16 bit 215 (215 1)即32768 32767short intlong int或:long32 bit 231 (231 1)即21474836482147483647unsigned int16 bit 0 (216 1)即 0 65535unsigned shortunsigned long 32 bit 0 (232 1)即 0 4294967295273.3 变量(续)3.3.3实型变量C实型变量分单精度(float型)和双精度(double型)两类。28实型变量实型变量分为两类;类型名称标识符存储位数 存储格式数值范围有效位数单精度实型 float32 bit浮点(10381038)7位双精度实型 double64 bit浮点(1030810308)15位29实型量的舍入误差例:float a,b;a=123456.789e5;/*赋值产生误差*/b=a+20;/*引用误差的a*/printf(%f,b);12345678848.000000 (前7位有效)理论值应为:理论值应为:12345678900.0+20=12345678920.0要精确存储12345678900.0需37bit尾数;解决办法:解决办法:double a,b;303.3 变量(续)3.3.4字符型变量字符型变量用来存放单个字符,定义形式如下:charc1,c2;可对c1、c2赋值,c1=a;c2=b;注意不能将字符串常量赋给一个字符变量。31字符变量的存储及引用字符变量的存储及引用例:char c1,c2;c1=A;c2=c1;存储存储:c1:若:c1按字符解读字符A c1按整数解读+65 0 1 0 0 0 0 0 1323.4.1 算术运算符和算术表达式算术运算符和算术表达式:1)基本算术运算符:基本算术运算符:+加/取正 (双目运算符/单目运算符)减/取负 (双目运算符/单目运算符)*乘 (双目运算符)/除 (双目运算符)%整除取余 (双目运算符)3.4 C语言的运算符和表达式33注意:注意:1)+、-为复用运算符;2)如:int a,b,c;3)a=5;4)b=a-3;/*减:两个运算目标*/5)c=-a;/*取负:一个运算目标*/6)2)两整数相除结果仍为整数7)如:5/2 2 -5/3 -1 1/2 08)要依实际应用情况加以利用或避免。343)求余运算要求两运算元素均为整型,余数仍 为整型;如:int a,b;a=11%3;/*2 a*/b=5%a;/*1 b*/若有:a=11.0%3;编译时将视为语法错。352)算术表达式:算术表达式:C表达式由运算符、括号将运算元素连接起来 的有值的式子。算术表达式 由算术运算符、括号将数值型的运算元素连接起来,其值为数值量的式子。其中:运算元素可为常量、变量、函数调用等。如:28+a sin(1.0)*10+y 36注意:注意:1)为保证表达式运算关系的正确性,需加入必要的括号,并注意括号的层次及配对关系;2)2)乘号不得省略;3)3)应避免整型量相除可能带来的不良影响;4)4)函数调用是以函数的返回值来参与运算的。37自增、自减运算符自增、自减运算符自增1:+自减1:含义:含义:+i 前置自增;先自加1,后引用;i+后置自增;先引用,后自加1;i 前置自减;先自减1,后引用;i 后置自减;先引用,后自减1;意义:意义:可提高执行效率。优先级2级、单目、自右而左38注意:注意:1)只能对变量进行自增、自减运算;2)2)+、-、取负同为二级,结合性:自右而左;3)如:i=3;4)j=-i+;/*-3j,i:4*/5)3)自加/减作为函数参数时,注意参数求值顺序;6)如:i=3;7)printf(%d,%d,i,i+);8)4,39)3,3输出顺序Turbo C求值顺序Unix C求值顺序393.4 C语言的运算符和表达式(续)n算术运算符和算术表达式 注意以下几点:两个整数相除结果为整数,如5/3的结果为1。如果参加运算的两个数中有一个数为实数,则结果是double型。模运算符%,又称求余运算符,要求%两侧均为整型数据,如7%4的值为3;而且余数的值符号与被除数一致,如7%4的值为3。运算符“+”是操作数加1,而“”是操作数减1,只适用于变量,不能用于常量或表达式。403.4 C语言的运算符和表达式(续)n3.4.2赋值运算符和赋值表达式n一、基本赋值运算符一、基本赋值运算符n二、复合二、复合赋值运算符运算符 41赋值运算符和赋值表达式赋值运算符和赋值表达式 1.赋值运算符赋值运算符 =优先级14级、双目、自右而左;2.赋值表达式赋值表达式一般形式:变量变量=表达式表达式其中:表达式可是C任何形式的表达式,包括算术、条件、逗号、赋值等表达式;特殊形式:单独的常量、变量、函数调用。42例:b=20 c=sin(1.0)d=pow(2,b)/2 e=ab a=(b=5)a=b=c=d=0 c=b=a*2;a=(b=10)/(c=2)433.赋值运算时的类型转换赋值运算时的类型转换 被赋值变量的类型与表达式值的类型一致,直接赋值;不一致系统自动以被赋值变量的类型为准进行转换,然后赋值。例:int i=10,j;float f;double d;i=i-5;/*5i*/j=i+3.56;/*8 j*/f=23;/*单精度23.0 f*/d=j+f;/*双精度31.0 d*/44注意:赋值时的自动类型转换所造成的误差注意:赋值时的自动类型转换所造成的误差例:main()float x,y;/*double x,y;*/x=123.456781234;y=x+0.111111111;printf(”X=%f,Y=%fn”,x,y);X=123.456779,y=123.567894x、y改为双精度的结果:x=123.45678123400000,y=123.56789234500000 45复合赋值运算符复合赋值运算符 在赋值运算符前加上其它双目运算符构成;算术算术复合赋值运算符:+=和赋值 =差赋值 *=积赋值 优先级14级、自右而左 /=商赋值%=模赋值意义:意义:提高编译效率、目标代码的质量。46例:a=a+3 a+=3 x=x%3 x%=3 x=x*(y+8)x*=y+8 a=a*b-3 a*=b-3 a=a*(b-3)注意:复合赋值运算符针对右边整个表达式。例:a=6;a+=a*=a-1;/*60 a*/473.4.3 关关系运算符和关系表达式系运算符和关系表达式1.关系运算符关系运算符 (比较运算符)六个:小于 大于 =大于或等于 =等于 !=不等于 6级、双目、自左而右7级、双目、自左而右482.关系表达式关系表达式一般形式:一般形式:表达式表达式1、2的形式:的形式:算术、赋值、逗号、关系等任 何C合法的表达式。关系表达式的值:关系表达式的值:逻辑值真、假 真对应关系式成立,用整型量1代表;假对应关系式不成立,用整型量0代表;关系表达式的位置:关系表达式的位置:C任何允许使用表达式的位置。49如:if(a10);作为函数的参数 k=m!=1 赋值表达式的右边 c=c+(g=60)表达式的一个运算元素举例:说明下列关系式的含义1)isqrt(c)3)a%2=04)(c=getchar()=#区分:c=getchar()=#50举例:写出下列表达式的值若有定义:int a=3,b=2,c=1;char ch1=a;1)b+c!=a 2)ch1b)(bbbb=c7)f=abc 0 1 0 1 1 1 0513.4.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式1.逻辑运算符运算符三个:!逻辑非2级、单目、自右而左;&逻辑与11级、双目、自左而右;|逻辑或12级、双目、自左而右;522.逻辑表达式逻辑表达式一般形式:一般形式:双目:单目:!表达式1 表达式表达式1、2:任何C合法的表达式。逻辑表达式的值:逻辑表达式的值:逻辑值真、假 真条件成立,用整型量1代表;假条件不成立,用整型量0代表;逻辑运算对象:逻辑运算对象:0被视为逻辑量“假”;非0被视为逻辑量“真”。53逻辑运算真值表:逻辑运算真值表:ab!a!ba&ba|b11001110010101100100110054例:将所给条件写成C的逻辑表达式1)1a 8 并且 1 b 102)a和b都是正的或都是负的(a、b符号相同)3)a和b之一为0,但不能都为04)a能被5或7整除(a=1&a=1&b0&b0)|(a0&b0(a*b=0)&(a+b!=0)(a%5=0)|(a%7=0)55注意:注意:C在逻辑表达式求解时,并不一定是所有的运算都被执行,当刚开始求解或求解的中途就可以确定整个逻辑表达式的值时,其余的运算将不再进行。例:a&b&c例:a|b|c例:a=1,b=2,c=3,d=4,m=n=1;(m=ab)&(n=cd)563.4.5 条件运算符和条件表达式条件运算符和条件表达式条件运算符条件运算符:?:13级、三目、自右而左条件表达式一般形式条件表达式一般形式:?:其中:其中:各个表达式可以是任何形式的表达式。求解过程:求解过程:先求解e1,并对其值进行逻辑判断,为真则继续求解e2,且e2的值作为整个条件表达式的值;若e1为假,则求解e3,且e3的值为整个条件表达式的值。573.4 C语言的运算符和表达式(续)n3.4.5 条件运算符和条件表达式 表达式1条件表达式取表达式2的值真(非0)假(0)图3-2 条件表达式执行过程条件表达式取表达式3的值58例:ch=(ch=A&ch=Z)?ch+32:ch;例:printf(”%c”,a%5=0?n:);例:分段函数 y=y=x0?1:(x=0?0:1);-1 x0 59使用说明:使用说明:表达式2、3值的类型可不同,此时整个条件式值的类型与两者中较高者一致。例:float x,y;int a=2;scanf(”%f”,&x);y=x40?a:a*0.9 分支条件成立条件表达式值为2.0,条件不成立条件表达式值为1.8。603.4 C语言的运算符和表达式(续)n3.4.6逗号运算符和逗号表达式n逗号除了可以作为分隔符使用之外,也可以用逗号将若干个表达式分开便构成了逗号表达式。其一般形式为:n表达式表达式1,表达式,表达式,表达式,表达式nn逗号表达式的运算次序为:先求解表达式1的值,再求解表达式2的值,最后求解表达式n的值。逗号表达式的值为表达式n的值。61例:a=3*5,a*4例:两个表达式的比较 x=(a=3,6*3)18x,a:3 x=a=3,6*a x:3,表达式的值为18例:a=5,b=3,c=a*b 例:for循环语句格式:for(e1;e2;e3)内嵌语句;for(i=0,j=10;i10;i+,j+)623.4 C语言的运算符和表达式(续)3.4.7指针运算符1取地址运算符&(一元运算符)2取值运算符*(一元运算符)633.4 C语言的运算符和表达式(续)3.4.8sizeof运算符1用于数据类型使用形式:sizeof(type)数据类型必须用括号括住。如sizeof(int)。2用于变量使 用 形 式:sizeof(var_name)或 sizeofvar_name变量名可以不用括号括住,但带括号的用法更普遍。64例:例:sizeof(int)结果:2 a=sizeof(double)8 sizeof(sum)sum变量的类型长 sizeof(40+25)2 sizeof(40.0+25)8 sizeof(123)2 sizeof(123L)4 sizeof(123*456)2 例:例:char c1;int l1,l2;l1=sizeof(c1);l2=sizeof(”Hello!”)1;653.4 C语言的运算符和表达式(续)n3.4.9 不同类型数据之间的转换 n1自动类型转换n2强制类型转换 强制类型转换的一般形式为:(类型标识符)(表达式)如(int)(x+y)是将x+y的结果强制转换成int型。又如(float)x/y是将x强制转换成float型后,再进行运算。注意:经强制类型转换后,得到的是一个所需类型的中间值,原来变量的类型并没发生变化。663.4 C语言的运算符和表达式(续)n3.4.10 C运算符优先级和结合性 n附录III673.5 输入输出函数 n所谓输入输出是以计算机为主机为主体而言的。从计算机向外部输出设备(如显示屏、打印机、磁盘等)输出数据称为“输出”;从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为“输入”。nC语言的输入输出功能是由系统提供的库函数实现的。C语言本身并没有输入输出语句。68数据输入输出的概念及在数据输入输出的概念及在C语言中的实现语言中的实现编辑编译连接运行myprg.cmyprg.obj库函数obj代码myprg.exe函数库(磁盘文件):库函数的obj代码包括:数学库 标准I/O库 图形库 等;磁盘69字符数据的输入输出字符数据的输入输出1.putchar字符输出函数字符输出函数调用格式:putchar(参数)参数形式:字符常量/变量、整型常量/变量;功能:向系统隐含输出设备(显示器)输出一个字符。要求:使用文件包含预编译命令#include 或:#include ”stdio.h”702.getchar字符输入函数字符输入函数调用格式:getchar()功能:从系统隐含的输入设备(键盘)输入一个字符。说明:无参,返回值为输入字符的ASIIC码;是带输入输出缓冲区和回显的函数;要求:使用文件包含预编译命令#include 71例1:输入一个字符并输出#include ”stdio.h”main()char c;c=getchar();putchar(c);putchar(#);putchar(n);a 输入 a#输出 YS72使用说明:使用说明:1)利用getchar函数可达到暂停效果;例2:#include”stdio.h”main()printf(”15*4=%dn”,15*4);printf(”Press Enter key to continue”);getchar();/*不引用返回值*/15*4=60 输出 Press Enter key to continue YS732)getchar总是先从缓冲区读字符,只有缓冲区空 才会暂停等待新的输入。例3:#include”stdio.h”main()char c1,c2,c3;c1=getchar();c2=getchar();c3=getchar();printf(”%d,%d,%d”,c1,c2,c3);abcde a 97,98,99 bcd 97,10,98 YS74格式输入与格式输出格式输入与格式输出1.printf 格式输出函数2.调用格式调用格式:printf(格式控制字符串,输出项列表)功能功能:在标准输出设备上,按指定格式对应输出各 个输出项。参数参数:格式控制字符串中可包含格式说明、直接 字符、控制字符;输出项列出了要输出的对象(可以没有),多项之间逗号分隔;形式:常量、变量、表达式、函数调用等。75格式说明在个数、顺序、类型上应与输出项对应。例:#include ”stdio.h”main()float f=123.456;int a=25,b=5;printf(”t%d+%d=%dn”,a,b,a+b);printf(”t%d,%fn”,66,sqrt(float)a);25+5=30 66,5.000000YS76函数函数printf能够实现如下输出格式化功能:能够实现如下输出格式化功能:1)指定任何类型数据输出的域宽;2)指定输出在域宽内左对齐或右对齐;3)插入要输出的直接字符;4)以8进制或16进制输出整型量的存储镜像;5)指定实型数以小数或指数形式输出;6)指定实型数的输出小数位数;7)通过控制字符t、n、b等定位输出列。77printf 函数格式说明的一般形式:函数格式说明的一般形式:%附加格式说明 格式字符 d、o、x、u、c、s、f、e、g l 用于长整型 m n 指明左对齐方式,隐含右对齐。正整常数,指明输出所占列宽78一、整型量的格式说明一、整型量的格式说明 适用于整型的常量、变量、表达式、函数。1)按数据的实宽输出2)说明:说明:8进制、16进制按存储镜像输出。输出形式输出对象10进制8进制16进制int型%d%o%xlong型%ld%lo%lx792)指定输出列宽和对齐方式说明:说明:若m 输出数据的实长,m失效,按实长输出。以八、十六进制输出时,将整数的符号位也视作 数据位,即不可能输出负的八、十六进制数。输出对象 格式说明 总列宽对齐方式输出形式int型%mdm列右对齐、左补空十进制%mxm列左对齐、右补空十六进制long型%mldm列右对齐、左补空十进制80例:main()int a=-15,b=12345;long x=987654321;printf(”n%d,%8d,%ld”,a,b,x);printf(”n%-6d,%4d,$%12ld”,a,b,x);printf(”n%8x%8o%12lX”,a,a,x);-15,12345,987654321 -15,12345,$987654321 fff11777613ADE68B1 YS81二、无符号整型量格式说明二、无符号整型量格式说明1)按数据的实宽输出2)说明:说明:8进制、16进制按存储形式输出。3)2)指定列宽和对齐方式(含义同上)输出形式输出对象10进制8进制16进制unsigned int型%u%o%xunsigned long型%lu%lo%lx82例:main()unsigned int a=65535;/*a:FFFFH*/int i=-2;/*i:FFFEH*/printf(”%8X,%8u,%d,%un”,a,a,a,i);FFFF,65535,-1,65534 说明:说明:%d将无符号整型量按补码格式解读;%u将整型量按无符号格式解读。83三、字符量格式说明三、字符量格式说明例如:main()char ch1=a;int i=98;printf(”%c,%5c,%c”,ch1,i,99);a,b,c输出对象格式说明输出形式char 型%c字符int、long型(0254)%c字符84四、字符串格式说明四、字符串格式说明 1)按实长输出字符串 2)指定宽度和对齐方式%ms、%ms 输出对象格式说明输出形式字符串常量%s字符串字符数组名%s字符串853)截取字符串中的部分字符输出%m.ns按m列宽输出前n个字符,右对齐;%m.ns按m列宽输出前n个字符,左对齐;%.ns截取前n个字符并按截取宽度n输出。例:main()printf(”%s,%7.2s,%-5.3sEND”,”CHINA”,”CHINA”,”CHINA”);CHINA,CH,CHIEND 86五、实型量格式说明五、实型量格式说明 适用于实型的常量、变量、表达式、函数。1)按系统隐含的宽度输出 (TC环境)%g:自学 输出对象 格式说明输出形式有效位数float型/double型%f小数:小数:整数部分全部输出,小数输出6位。前7位/前16位%e标准指数:标准指数:数字部分小数点前必有一位且只能有一位非零数字。数字部分小数5位,指数部分4-5位。872)指定宽度和对齐方式%m.nf m:总列宽,n:小数位数,自动四 舍五入,右对齐。%m.ne m:总列宽,n:数字部分的小数位 数(包括小数点),自动四舍五入。对齐方式:与上述方法和含义相同。88例:main()float f1,f2;f1=123.456;f2=123.45678;printf(”%f,%-12f,%10.2fn%.2f,%-10.2fn”,f1,f1,f1,f1,f1);printf(”%e,%e,%15.8en”,f1,f2,f2);123.456001,123.456001,123.46 123.46,123.46 1.23456e+02,1.23457e+02,1.2345678e+0289例:main()double d1,d2;d1=2222222222222.222222222;/*13:9*/d2=123.4567e128;printf(”%f,%en”,d1,d2);2222222222222.222170,1.23457e+130 90使用格式输出函数使用格式输出函数 printf 的说明:的说明:1)格式说明在个数上、顺序上、类型上必须与输出 项对应一致,否则,编译时不做匹配性检查,编 译可通过,但输出结果错。2)格式字符 x、e 可小写或大写%X:十六进制字母字符大写,如3AF;%E:1.23457E+130 其余格式字符d、o、u、c、s、f只能小写。3)串中直接字符、%、”的表示:%”912.scanf 格式输入函数3.调用格式:调用格式:scanf(格式控制字符串,地址项表)4.功能:功能:按格式控制字符串中指定的格式,从键盘输 入常数,并存入对应变量的地址中。2.参数:参数:格式控制字符串中可包含格式说明、直接 字符;注意:不要使用控制字符;地址项是要获得数据的变量地址,多个输 入项间逗号分隔;变量地址:变量地址:&变量名 (地址运算符&:2级、单目)92例:main()int a,b;long m,n;printf(”Enter a,b:”);scanf(”%d,%d”,&a,&b);printf(”a+b=%dn”,a+b);printf(”Enter m n:”);scanf(”%ld%ld”,&m,&n);printf(”m*n=%ldn”,m*n);Enter a,b:12,6 a+b=18 Enter m n:500 900 m*n=45000093格式输入函数格式输入函数 scanf 的格式说明:的格式说明:%附加格式说明格式符 m 正整数,指定输入数据的宽度;*抑制符,跳过某输入项或指定列。94输入项变量类型格式说明输 入 数 据 的 形式 int型%d%o%x%c十进制整常数八进制整常数 (不需以0开头)十六进制整常数(不需以0 x开头)一个可键入字符(不需加单引号)char型%c%d 一个可键入字符(不需加单引号)0255整常数95输入项变量类型格式说明输 入 数 据 的 形式 long型%ld%lo%lx十进制整常数八进制整常数十六进制整常数 float型%f%e小数形式实常数或整常数指数形式实常数double型%lf%le小数形式实常数或整常数指数形式实常数96输入项变量类型格式说明输 入 数 据 的 形式字符数组名%s字符串 (不需加双引号)unsigned型%u%o%x十进制正整常数八进制正整常数十六进制正整常数unsigned long型%lu%lo%lx 十进制正整常数八进制正整常数十六进制正整常数97scanf 的使用说明的使用说明:1)输入的常数、格式说明、输入变量三者在个数 上、类型上、顺序上必须对应一致;特例:对实型变量可输入整数形式。如:float x,y;scanf(%f%f,&x,&y);1.23 52 2)当格式说明之间无其它字符,系统隐含要求以一 个或多个空格作为输入数据间的分隔;如:scanf(”%d%d%d”,&a,&b,&c);3 4 5 983)可用直接字符来指定输入数据的分隔符,而在 输入时必须与指定的一致,否则获值错乱;如:scanf(”%d,%d,%d”,&a,&b,&c);3,4,54)格式串中指定的所有直接字符,必须按顺序和对 应位置输入它们;如:scanf(”a=%d,b=%d,c=%d”,&a,&b,&c);a=3,b=4,c=5注意:注意:输入是在运行过程中进行的,若输入时违背了以上规则,变量获值将发生混乱,并导致结果错。99例:main()int a,b,c;long l1,l2;printf(Enter a,b,c:);scanf(%d,%d,%d,&a,&b,&c);printf(ta=%d,b=%d,c=%dn,a,b,c);printf(Enter l1,l2:);scanf(%d,%d,&l1,&l2);/*应为%ld*/printf(l1=%d,l1=%dn,l1,l2);Enter a,b,c:123 (分隔符不一致)YS1005)scanf 是带输入缓冲区的函数,输入时以回车符 提交数据到缓冲区,scanf 直接在缓冲区读取。若已输入数据个数少于要求个数,还会出现等待;如:scanf(”%d%d%d”,&a,&b,&c);3 4 5 而多于要求个数的输入仍保留在缓冲区不采纳;如:scanf(”%d%d%d”,&a,&b,&c);3 4 5 6 71016)用%c格式时,每个输入的字符都是有效的。如:scanf(”%c%c%c”,&c1,&c2,&c3);abc 结果:ac1,bc2,cc3 a b c ac1,空格c2,bc3 a b c c1,ac2,c3 1027)按指定列宽截取数据通常针对一个数字串;如:scanf(”%3d%3d%4d”,&qh,&jh,&xh);0298487402 结果:29qh 848jh 7402xh 6)使用抑制符*可以跳过(废弃)一个数据项如:scanf(”%3d%*3d%4d”,&qh,&xh);0298487402 结果:29qh 7402xh 1038)scanf中%f格式不能指定精度:%7.2f是错误的。9)scanf格式控制串中若包含控制字符将造成麻烦如:scanf(”%d,%dn”,&a,&b);4,5 将继续等待10)scanf函数返回成功获值的个数如:n=scanf(”%d,%d,%d”,&a,&b,&c);3,4,5 3 n 3 4 5 1 n 104几点忠告几点忠告n不要拘泥于细节n不要死记硬背n在使用中慢慢掌握105本 章 结 束106
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


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

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


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