第二章基本数据类型及运算廖昌俊

上传人:痛*** 文档编号:170593491 上传时间:2022-11-21 格式:PPT 页数:64 大小:772.04KB
收藏 版权申诉 举报 下载
第二章基本数据类型及运算廖昌俊_第1页
第1页 / 共64页
第二章基本数据类型及运算廖昌俊_第2页
第2页 / 共64页
第二章基本数据类型及运算廖昌俊_第3页
第3页 / 共64页
资源描述:

《第二章基本数据类型及运算廖昌俊》由会员分享,可在线阅读,更多相关《第二章基本数据类型及运算廖昌俊(64页珍藏版)》请在装配图网上搜索。

1、高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 1 1第二章 基本数据类型及运算n数据类型数据类型n基本数据类型基本数据类型n常量常量n变量变量n运算符与表达式运算符与表达式高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2 2标识符标识符n定义:用来标识变量、常量、函数等的字符定义:用来标识变量、常量、函数等的字符序列。序列。n组成:组成:n只能由只能由字母字母、数字数字、下划线下划线组成,且第一个字母组成,且第一个字母必须是字母或下划线必须是字母或下划线n大小写敏感大小写敏感n不能使用关键字不能使用关键字n命名原则

2、命名原则n见名知意见名知意n不宜混淆不宜混淆 如如l与与I,o与与0nmin-length&max-information标识符:标识符:5class、m*n、student name、int 错误错误高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3 3C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void字符类型字符类型char整整 型型实实 型型单精度型单精度型float双精度型双精度型double数组数组结构体结构体struct共用体共用体union短整型短整型short长整型长整型long整型整型int数据类型

3、决定:数据类型决定:1.数据占内存字节数数据占内存字节数2.数据取值范围数据取值范围3.允许的操作允许的操作枚举类型枚举类型enum高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 4 4基本数据类型基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整型整型字符型字符型实型实型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295 unsig

4、ned longunsigned short16065535有有float32由系统决定由系统决定有有double64由系统决定由系统决定有有char8-128127无无unsigned char80255需要注意的是,标准需要注意的是,标准C没有具体规定以上各类数据所占内存字没有具体规定以上各类数据所占内存字节数。只要求节数。只要求long型数据长度不短于型数据长度不短于int型,型,short型不长于型不长于int型。具体如何实现,由各计算机系统和编译系统决定。型。具体如何实现,由各计算机系统和编译系统决定。如:在如:在Visual C+6.0中,一个中,一个short型数据占用型数据占用

5、2个字节的内个字节的内存空间,一个存空间,一个int型数据和一个型数据和一个long型数据分别占用型数据分别占用4个字节的个字节的内存空间。内存空间。高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5 5n一般用大写字母一般用大写字母n是宏定义预处理命令,不是是宏定义预处理命令,不是C语句语句n直接常量直接常量:n整型常量整型常量 n实型常量实型常量 n字符常量字符常量 n字符串常量字符串常量n常量常量n定义:程序运行时其值不能改变的量(即常数)。定义:程序运行时其值不能改变的量(即常数)。n分类分类:n符号常量符号常量:用标识符代表常量用标识符代表常量n

6、定义格式:定义格式:#define#define 符号常量符号常量 常量常量例例 符号常量举例符号常量举例#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);运行结果:运行结果:total=300高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 6 6&整型常量(整常数)整型常量(整常数)n三种形式:三种形式:n十进制整数:由数字十进制整数:由数字0 09 9和正负号表示和正负号表示.如如 123,-456,0123,-456,0n八进制整数:由数

7、字八进制整数:由数字0 0开头开头,后跟数字后跟数字0 07 7表示表示.如如0123,0110123,011n十六进制整数:由十六进制整数:由0 x0 x开头开头,后跟后跟0 09,a9,af,Af,AF F表示。表示。如如0 x123,0Xff0 x123,0Xff例例 12 与与 12L例例 30000 为为int型型 65536 为为long int 型型n整型常量的类型整型常量的类型n根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型n在在整常量后加字母整常量后加字母l l或或L L,认为它是认为它是long int 型常量型常量问题:问题:0123 =()100 x123

8、=()100Xff =()1083291255问题:问题:0123 =()100 x123=()100Xff =()10高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 7 7&实型常量(实数或浮点数)实型常量(实数或浮点数)n表示形式:表示形式:n十进制数形式:(必须有小数点)十进制数形式:(必须有小数点)如如0.123,.123,123.0,0.0,123.0.123,.123,123.0,0.0,123.n指数形式:(指数形式:(e e或或E E之前必须有数字;指数之前必须有数字;指数必须为整数)如必须为整数)如12.312.3e3,123E2,1.2

9、3e4,e3,123E2,1.23e4,e-5e-5 ,1.2E-3.51.2E-3.5 (不合法,不合法,e e前必须有数字且前必须有数字且e e后的后的指数必须为整数。指数必须为整数。)n实型常量的类型实型常量的类型n默认默认doubledouble型型n在在实型常量后加字母实型常量后加字母f f或或F F,认为它是认为它是floatfloat型型高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 8 8&字符常量字符常量n定义定义:用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符。n字符常量的字符常量的值值:该字符的:该字符的

10、ASCIIASCII码码值值 =!=4 4逻辑运算符逻辑运算符 !|5 5位运算符位运算符|&|&6 6条件运算符条件运算符?:?:高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2121C运算符运算符7 7逗号运算符逗号运算符 ,8 8指针运算符指针运算符 *&9 9求字节数运算符求字节数运算符 sizeofsizeof10.10.分量运算符分量运算符 1111下标运算符下标运算符 1212其它其它 如函数调用运算符()如函数调用运算符()高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2222学习运算符应注意:学习

11、运算符应注意:(1)掌握运算符的功能;)掌握运算符的功能;(2)搞清运算符与运算量间的关系:)搞清运算符与运算量间的关系:n要求运算量个数要求运算量个数n要求运算量类型要求运算量类型 (3)清楚运算的优先级别;清楚运算的优先级别;(4)明确结合方向(在一个运算量的两侧有)明确结合方向(在一个运算量的两侧有 两个相同优先级别的运算符,则按结合方向两个相同优先级别的运算符,则按结合方向顺序处理);顺序处理);(5)明白结果的类型(即表达式的类型)。)明白结果的类型(即表达式的类型)。高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2323算术运算符和表达式算术

12、运算符和表达式n基本算术运算符:基本算术运算符:+-*/%/%n结合方向:从左向右结合方向:从左向右n优先级:优先级:-*/%/%-+-+-(2)(3)(4)(2)(3)(4)说明:说明:n“-”可为可为单目单目运算符时运算符时,右结合性右结合性n两整数相除,结果为整数两整数相除,结果为整数n“%”要求两侧均为整型数据要求两侧均为整型数据例例 5/2 =2 -5/2.0=-2.5例例 5%2 =1 -5%2 =-1 1%10 =1 5%1 =0 5.5%2 ()高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2424算术运算符和表达式(续)算术运算符和表达

13、式(续)n自增、自减运算符自增、自减运算符+-+-n作用:使变量值加作用:使变量值加1 1或减或减1 1n种类:种类:n前置前置 +i,-i (+i,-i (先执行先执行i i+1+1或或i-1i-1,再使用,再使用i i值)值)n后置后置 i+,i-(i+,i-(先使用先使用i i值值,再执行再执行i i+1+1或或i-1i-1)例例 j=3;k=+j;j=3;k=j+;j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;/*k=4,j=4k=4,j=4*/*k=3,j=4k=3,j=4*/*4

14、4*/*3 3*/*c=20,a=4c=20,a=4*/*c=15,a=4c=15,a=4*/高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2525n自增、自减运算符自增、自减运算符+-+-n作用:使变量值加作用:使变量值加1 1或减或减1 1n种类:种类:n前置前置 +i,-i (+i,-i (先执行先执行i i+1+1或或i-1i-1,再使用再使用i i值)值)n后置后置 i+,i-(i+,i-(先使用先使用i i值值,再执行再执行i i+1+1或或i-1i-1)n说明:说明:n+-+-不能用于常量和表达式不能用于常量和表达式,如如5+5+,(a+b

15、)+a+b)+n+-+-结合方向:结合方向:自右向左自右向左n优先级:优先级:-+-+-*/%-+-/%-+-(2)(3)(4)(2)(3)(4)n注意注意+、-的副作用的副作用例例-i+-i+-(i+)-(i+)i=3;printf(“%d”,-i+);i=3;printf(“%d”,-i+);/*-3 3*/例例 j+k;(j+)+k;j+k;(j+)+k;例例-i+-i+i=3;printf(“%d”,-i+);i=3;printf(“%d”,-i+);算术运算符和表达式(续)算术运算符和表达式(续)高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2

16、626n简单赋值运算符简单赋值运算符n符号:符号:=n格式:格式:变量标识符变量标识符=表达式表达式n作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量n复合赋值运算符复合赋值运算符n种类种类:+=-=+=-=*=/=%=/=%=&=|=&=|=n含义:含义:exp1 op=exp2exp1 op=exp2 exp1=exp1 op exp2exp1=exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例例 a=3;d=func();c=d+2;赋值运算符和表达式赋值运算符和表达式高级语言程序设计高级语言程序设计电子科

17、技大学电子科技大学廖昌俊廖昌俊20112011 2727n说明:说明:n结合方向:结合方向:自右向左自右向左n优先级:优先级:14n左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式n赋值表达式的值与变量值相等,且可嵌套赋值表达式的值与变量值相等,且可嵌套n赋值转换赋值转换规则:使赋值号右边表达式值规则:使赋值号右边表达式值自动自动转换成其左边变转换成其左边变量的类型量的类型错误:错误:3=x-2*y;a+b=3;例例 float f;int i;i=10;f=i;则则 f=10.0例例 int i;i=2.56;结果结果i=2;例例:a=b=c=5 a=(b=5)a=5+(

18、c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)/*表达式值为表达式值为5,a,b,c值为值为5*/*b=5,a=5*/*表达式值表达式值11,c=6,a=11*/*表达式值表达式值10,a=10,b=4,c=6*/*表达式值表达式值5,a=5,b=10,c=2*/赋值运算符和表达式赋值运算符和表达式(续)(续)高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2828赋值运算符和表达式(续)n赋值类运算符的副作用及限制赋值类运算符的副作用及限制 语言中允许在一个表达式中使用一个以上的赋语言中允许在一个表达式中使用一个以上的赋值类运算符。值类运

19、算符。对人的影响和副作用,易造成误解。对人的影响和副作用,易造成误解。.程序尽可能写得明了易懂一些;程序尽可能写得明了易懂一些;.加上一些不必要的括号。加上一些不必要的括号。对机器的副作用,不定解。对机器的副作用,不定解。交换律不再适用。交换律不再适用。例:a=12;a+=a-=a*a;/*a=-264 等价于a=a+(a=a-(a*a)*/例:int a=2;a%=4-1;a+=a*=a-=a*=3;/*a=0 等价于a=a+(a=a*(a=a-(a=a*3)*/高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 2929n关系运算符关系运算符n种类种类:=

20、!=n结合方向:自左向右结合方向:自左向右n优先级别:优先级别:=!=优先级优先级6(高)(高)优先级优先级7(低)(低)例例 ca+b /*c(a+b)*/ab!=c /*(ab)!=c*/a=bc /*a=(bc /*a=(bc)*/n关系表达式的值:是逻辑值关系表达式的值:是逻辑值“真真”或或“假假”,用,用1和和0表表示示例例 int a=3,b=2,c=1,d,f;ab (ab)=c b+cb f=abc/*表达式值表达式值1*/*表达式值表达式值1*/*表达式值表达式值0*/*d=1*/*f=0*/关系运算符和表达式关系运算符和表达式高级语言程序设计高级语言程序设计电子科技大学电子

21、科技大学廖昌俊廖昌俊20112011 3030n关系运算注意:关系运算注意:区分区分“=”与与“=”例例 5278在在C中是允许的,中是允许的,值为值为0例例 int i=1,j=7,a;a=i+(j%4!=0);则则a=2例例 a0 结果为结果为 A100 结果为结果为10关系运算符和表达式关系运算符和表达式(续)(续)应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断例例 1.0/3.0*3.0=1.0 结果为结果为 0可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-6高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 313

22、1ab!a!ba&ba|b真真假假真真假假假假假假真真真真n逻辑运算符逻辑运算符n种类:种类:!&|n逻辑运算真值表逻辑运算真值表nC C语言中语言中,运算量运算量:0 0表示表示“假假”,非非0 0表示表示“真真”,运算结果运算结果:0 0表示表示“假假”,1 1表示表示“真真”,真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真逻辑运算符和表达式逻辑运算符和表达式高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3232!(2)&(11)|(12)高高低低例例 a=x&xb&xy a=b|x=y !a|abl优先级:优先级:l结合方向:结合

23、方向:!:从右向左从右向左&:从左向右从左向右|:从左向右从左向右/*(a=x)&(xb)&(xy)*/*(a=b)|(x=y)*/*(!a)|(ab)*/逻辑运算符和表达式逻辑运算符和表达式(续)(续)高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3333!(2)&(11)|(12)高高低低l优先级:优先级:l结合方向:结合方向:!:从右向左从右向左&:从左向右从左向右|:从左向右从左向右例例 a=4;b=5;!a a&b a|b !a|b 4&0|2 53&2|83)&2|(8b)&(n=cd)/*结果结果m=0,n=1*/逻辑运算符和表达式逻辑运算

24、符和表达式(续)(续)高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3535 位运算符和位表达式n以二进制位以二进制位(bit)作为基本单位进行的运算作为基本单位进行的运算n语言提供了六种位运算符:语言提供了六种位运算符:按位取反按位取反 单目单目 优先级优先级 2&按位与按位与 双目双目 8|按位或按位或 双目双目 10 按位异或按位异或 双目双目 9 右移右移 双目双目 5高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3636按位与运算符按位与运算符&n0&0=0;1&0=0;0&1=0;1&1=1n用途:用途

25、:n清零清零n取指定位取指定位n保留某些位保留某些位例:例:int i;i&0 x00FF /*low byte*/i&0 xFF00 /*high byte*/高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3737按位或运算符按位或运算符|n0|0=0;1|0=1;0|1=1;1|1=1n用途:用途:n置置1n取指定位值取指定位值例:例:int a=9,b=5,c;c=a|b;printf(a=%d,b=%d,c=%dn,a,b,c);/*9,5,13*/高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3838按位

26、异或运算符按位异或运算符 n00=0;10=1;01=1;11=0n用途:用途:n使特定位翻转使特定位翻转n交换变量值,不用临时变量交换变量值,不用临时变量例:例:int a,b,t;t=a;a=b;b=t;/*temporary variable*/a+=b;b=a-b;a-=b;/*possibility of overflow*/a=b;b=a;a=b;高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 3939按位取反运算符按位取反运算符 n0=1;1=0n用途:用途:n特定位清零特定位清零char c;int i;c&0 xFD /*1111 110

27、1*/i&0 xFFFD/*1111 1111 1111 1101*/考虑移植性,可用:考虑移植性,可用:c&0 x02i&0 x02 /*2 byte int or 4 byte int*/高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 4040左移左移运算符运算符 n功能:功能:把把左边的运算数的各二进位全部左移若干位,由左边的运算数的各二进位全部左移若干位,由右边的数指定移动的位数,高位丢弃,低位补右边的数指定移动的位数,高位丢弃,低位补0。n用途:用途:无溢出时,左移无溢出时,左移1位相当于乘位相当于乘2,但快得多。,但快得多。例:例:int i=

28、15;/*00001111*/i n功能:把功能:把左边的运算数的各二进位全部右移若干左边的运算数的各二进位全部右移若干位,由位,由右边的数指定移动的位数。右边的数指定移动的位数。n有符号数右移:当为正数时,有符号数右移:当为正数时,最高位补最高位补0;而为负;而为负数时,符号位为数时,符号位为1,最高位是补,最高位是补0或是补或是补1 取决于取决于编译系统的规定。编译系统的规定。Turbo C规定补规定补1算术右移。算术右移。n用途:右移用途:右移1位相当于除以位相当于除以2,但快得多。,但快得多。例:例:unsigned char c=241;/*1111 0001*/c 2;/*0011

29、 1100=60=241/4*/高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 4242 位运算复合赋值运算符位运算复合赋值运算符 =,=,&=,=,|=不同长度的数据进行位运算不同长度的数据进行位运算 将操作数右端对齐,将操作数右端对齐,左端补零(无符号数)左端补零(无符号数)或补符号位(有符号数)或补符号位(有符号数)例:取一个整数从右端开始的例:取一个整数从右端开始的4747位。位。main()unsigned int a,b,c,d;printf(Input unsigned(x):);scanf(%x,&a);b=a4;/*right shift

30、 4 places*/c=(0 .()-.左左右右1414 !+-&!+-&*(类型名类型名)sizeofsizeof右右左左1313 */%/%左左右右1212 +-+-左左右右1111 左左右右1010 =左左右右9 9 =!=!=左左右右8 8&左左右右7 7 左左右右6 6|左左右右5 5&左左右右4 4|左左右右3 3?:?:右右左左2 2=*=/=+=/=+=右右左左1 1 ,左左右右注:有些教材最高优先级是注:有些教材最高优先级是15,有些最高优先级是,有些最高优先级是1。高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 4848n表达式表达式

31、 表达式是由运算符连接常量、变量、函数所组表达式是由运算符连接常量、变量、函数所组成的式子。成的式子。每个表达式都有一个值和类型。每个表达式都有一个值和类型。表达式表达式求值按运算符的优先级和结合性所规定的顺序进行。求值按运算符的优先级和结合性所规定的顺序进行。例如例如:a/b*c%d 即即(a/b)*c)%da+!b+c-即即 (a+(!b)+(c-)i=k&ij-1 即即(i)=k)&(i(j-1)a=b=c=5 即即a=(b=(c=5)!a 即即!(!a)高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 4949格式:格式:putchar(c)参数:参

32、数:c为字符常量、变量或表达式为字符常量、变量或表达式功能:把字符功能:把字符c输出到显示器上输出到显示器上返值:正常,返回显示的代码值;出错,返回返值:正常,返回显示的代码值;出错,返回EOF(-1)数据输入与输出数据输入与输出C语言无语言无I/O语句,语句,I/O操作由函数实现操作由函数实现#include 一、数据输出一、数据输出n字符输出函数字符输出函数高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5050#include main()int c;char a;c=65;a=B;putchar(c);putchar(n);putchar(a);运

33、行结果:运行结果:A B例:例:高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5151格式:格式:printf(“格式控制串格式控制串”,输出表,输出表)功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回返值:正常,返回输出字节数;出错,返回EOF(-1)n格式输出函数格式输出函数v输出表:要输出的数据(可以没有,多个时以输出表:要输出的数据(可以没有,多个时以“,”分隔)分隔)v格式控制串:包含两种信息格式控制串:包含两种信息格式说明:格式说明:%修饰符修饰符 格式字符格式字符,用于指定输出格式,用于

34、指定输出格式普通字符或转义序列:原样输出普通字符或转义序列:原样输出v格式字符:格式字符:高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5252d,ix,Xoucse,Efg,G%十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身int a=567;printf(“%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a)

35、;printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+02567.789000567.789%l说明说明u格式字符除格式字符除 X E G 外均应用小写外均应用小写u格式字符与输出项个数应相同,按先后顺序一一对应格式字符与输出项个数应相同,按先后顺序一一对应u输出转换:输出转换:格式字符与输出项类型不一致时,自动按指格式字符与输出项类型不一致时,自动按

36、指定格式输出定格式输出例例 main()unsigned int u=65535;printf(“u=%dn”,u);输出结果:输出结果:u=-1例例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果输出结果:3 4 a=3,b=4高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5353n附加格式说明符(修饰符)附加格式说明符(修饰符).n对实数对实数,指定小数点后位数指定小数点后位数(四舍五入四舍五入)对字符串对字符串,指定实际输出位数指定实际输出位数修饰符修饰符功功 能能m输出数

37、据域宽输出数据域宽,数据长度数据长度m,左补空格左补空格;否则按实际输出否则按实际输出输出数据在域内左对齐(缺省右对齐输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号指定在有符号数的正数前显示正号(+)(+)+输出数值时指定左面不使用的空位置自动填输出数值时指定左面不使用的空位置自动填0 00在八进制和十六进制数前显示前导在八进制和十六进制数前显示前导0 0,0 x0 x#在在d,o,x,ud,o,x,u前,指定输出精度为前,指定输出精度为longlong型型在在e,f,ge,f,g前,指定输出精度为前,指定输出精度为doubledouble型型l高级语言程序设计高级语言程序

38、设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5454例例 int a=1234;float f=123.456;char ch=a;printf(“%8d,%2dn”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f);printf(“%3cn”,ch);运行运行 1234,1234结果:结果:123.456000,123.456000,123.5,123.46,1.23e+02 a例例 static char a=“Hello,world!”;printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a

39、);运行结果:运行结果:Hello,world!Hello,world!Hello Hello Hel 高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5555例:例:int a=1234;float f=123.456;static char c=“Hello,world!”;printf(“%8d,%-8dn”,a,a);printf(“%10.2f,%-10.1fn”,f,f);printf(“%10.5s,%-10.3sn”,c,c);运行结果:运行结果:1234,1234 123.46,123.5 Hello,Hel 高级语言程序设计高级语言程序

40、设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5656例例 int a=1234;float f=123.456;printf(“%08dn”,a);printf(“%010.2fn”,f);printf(“%0+8dn”,a);printf(“0+10.2fn”,f);例例 int a=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);例例 long a=65536;printf(“%d,%8ldn”,a,a);00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00/*00001234*/*0000123.46*/*

41、000+1234*/*000+123.46*/*173,0173,7B,0X7B*/*0,65536*/高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5757格式:格式:getchar()功能:从键盘读一字符功能:从键盘读一字符返值:正常,返回读取的代码值;出错返值:正常,返回读取的代码值;出错,返回返回EOF(-1)二、数据输入二、数据输入n字符输入函数字符输入函数#include main()int c;printf(Enter a character:);c=getchar();printf(%c-hex%xn,c,c);运行结果:运行结果:Ent

42、er a character:A A-hex41高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5858n格式输入函数格式输入函数格式:格式:scanf(“格式控制串格式控制串”,地址表,地址表)功能:按指定格式从键盘读入数据,存入地址表指功能:按指定格式从键盘读入数据,存入地址表指 定的存储单元中定的存储单元中,并按回车键结束并按回车键结束返值:正常,返回输入数据个数返值:正常,返回输入数据个数v地址表:变量的地址,常用取地址运算符地址表:变量的地址,常用取地址运算符&v格式字符:格式字符:d,i,o,x,u,c,s,f,e例例 scanf(“%d”,&

43、a);输入:输入:10 则则 a=10例例 scanf(“%x”,&a);输入:输入:11 则则 a=17高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 5959n附加格式说明符(修饰符)附加格式说明符(修饰符)l修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例 scanf(“%4d%2d%2d”,&y,&m,&d);输入 19991015 则1999y,10 m,15 d例 sc

44、anf(“%3d%*4d%f”,&k,&f);输入 12345678765.43 则123k,8765.43f例 scanf(“%2d%*3d%2d”,&a,&b);输入 1234567 则12a,67b例 scanf(“%3c%2c”,&c1,&c2);输入 abcde 则ac1,d c2高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 6060n输入分隔符的指定输入分隔符的指定n一般以一般以空格空格、TAB或或回车回车键作为分隔符。键作为分隔符。n其它字符做分隔符:格式串中两个格式符间字符。其它字符做分隔符:格式串中两个格式符间字符。例例 scanf(“

45、%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%dn”,a,b,c);输入输入 123 123 123 输出输出 a=123,b=83,c=291例例 scanf(“%d:%d:%d”,&h,&m,&s);输入输入 12:30:45 则则12 h,30 m,45 s例例 scanf(“%d,%d”,&a,&b)输入输入 3,4 则则3a,4 b例例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入输入 a=12,b=24,c=36 高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 6161n说明:说明:n用

46、用“%c”格式符时,空格和转义字符作为格式符时,空格和转义字符作为有效字符输入。有效字符输入。如 scanf(“%c%c%c”,&c1,&c2,&c3);若输入abc 则ac1,c2,b c3l输入数据时,遇以下情况认为该数据结束:输入数据时,遇以下情况认为该数据结束:v遇空格、遇空格、TAB、回车、回车v遇宽度结束遇宽度结束v遇非法输入遇非法输入如如 scanf(“%d%c%f”,&a,&b,&c);若输入若输入1234a123o.26 则则 1234 a,a b,123 cl注意输入函数留下的“垃圾”例例 int x;char ch;scanf(“%d”,&x);ch=getchar();

47、printf(“x=%d,ch=%dn”,x,ch);执行:执行:123 输出:输出:x=123,ch=10高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 6262n程序举例程序举例#include#include main()float a,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s);printf(area=%7.2fn,area);例例:

48、输入三角形边长,求面积。:输入三角形边长,求面积。输入:输入:3,4,6 输出:输出:a=3.00,b=4.00,c=6.00 s=6.50 area=5.33文件包含预处理命令变量定义输入数据输出数据高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 6363例例:从键盘输入大写字母,用小写字母输出。:从键盘输入大写字母,用小写字母输出。#include stdio.hmain()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,

49、97高级语言程序设计高级语言程序设计电子科技大学电子科技大学廖昌俊廖昌俊20112011 6464输入和输出小结:输入和输出小结:语言中没有提供专门的输入输出语句,语言中没有提供专门的输入输出语句,所有的输入输出所有的输入输出都是由调用标准库函数中的输入输出函数来实现的。都是由调用标准库函数中的输入输出函数来实现的。scanf和和getchar函数是输入函数,接收来自键盘的输入函数是输入函数,接收来自键盘的输入数据。数据。scanf是格式输入函数,是格式输入函数,可按指定的格式输入任意类可按指定的格式输入任意类型数据。型数据。getchar函数是字符输入函数,函数是字符输入函数,只能接收单个字符。只能接收单个字符。printf和和putchar函数是输出函数,向显示器屏幕输出函数是输出函数,向显示器屏幕输出数据。数据。printf是格式输出函数,可按指定的格式显示任意类是格式输出函数,可按指定的格式显示任意类型的数据。型的数据。putchar是字符显示函数,只能显示单个字符。是字符显示函数,只能显示单个字符。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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