《基本数据及其运算.ppt》由会员分享,可在线阅读,更多相关《基本数据及其运算.ppt(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第 2 2 章章 基本数据及其运算基本数据及其运算2.1基本类型数据基本类型数据2.2输入和输出基础输入和输出基础2.3数据运算数据运算2.4表达式表达式12.1 基本类型数据C语言中,基本数据有三种:语言中,基本数据有三种:整整数数:整整数数是是不不带带小小数数点点和和指指数数符符号号的数据。的数据。浮浮点点数数:浮浮点点数数是是带带有有小小数数点点或或指指数数符号的数值数据。符号的数值数据。字字符符:字字符符型型数数据据表表示示一一个个字字符符,占占用一个字节(用一个字节(8个二进制位)。个二进制位)。22.1.1 整型数据 按其数值范围大小划分成三种:按其数值范围大小划分成三种:1.1
2、.1.1.基本型:基本型:基本型:基本型:用用用用 intintintint 标记标记标记标记2.2.2.2.短整型:短整型:短整型:短整型:用用用用 short intshort intshort intshort int 标记,简写为标记,简写为标记,简写为标记,简写为 shortshortshortshort3.3.3.3.长整型:长整型:长整型:长整型:用用用用 long intlong intlong intlong int 标记,简写为标记,简写为标记,简写为标记,简写为 longlonglonglong 按值内部的最高位不同理解又有两类:按值内部的最高位不同理解又有两类:1.1.
3、1.1.带符号:带符号:带符号:带符号:存储单元最高位作为符号位存储单元最高位作为符号位存储单元最高位作为符号位存储单元最高位作为符号位2.2.2.2.不不不不带带带带符符符符号号号号:存存存存储储储储单单单单元元元元中中中中全全全全部部部部二二二二进进进进位位位位用用用用作作作作存存存存放放放放数数数数据据据据本身,而没有符号位。本身,而没有符号位。本身,而没有符号位。本身,而没有符号位。表表表表示示示示方方方方法法法法:unsigned unsigned unsigned unsigned intintintint、unsigned unsigned unsigned unsigned s
4、hortshortshortshort、unsigned longunsigned longunsigned longunsigned long3inti,j;/*定义带符号的整型变量定义带符号的整型变量*/unsignedshortk;/*定义无符号短整型变量定义无符号短整型变量*/longm,n;/*定义带符号的长整型变量定义带符号的长整型变量*/说明:说明:不同版本占用字节数不同版本占用字节数 例如例如shortintlongTurboC224VC+244类型类型版本版本4 常用的整数表示的数值范围常用的整数表示的数值范围1616位例位例0111111111111111符号位:符号位:0
5、表示正表示正数据位数据位图图2-1(a)带符号整数,值为带符号整数,值为32767(即(即215-1)1111111111111111符号位:符号位:1表示负表示负数据位数据位图图2-1(b)带符号整数,带符号整数,-1(负数用补码表示)(负数用补码表示)1111111111111111数据位数据位图图2-1(c)无符号整数,值为无符号整数,值为65535(即(即216-1)5 十进制整数:十进制整数:十进制整数:十进制整数:如如如如 0 0 0 0,123123123123,-45-45-45-45。八八八八进进进进制制制制整整整整数数数数:以以以以数数数数字字字字0 0 0 0开开开开头头
6、头头,并并并并由由由由0 0 0 07 7 7 7组组组组成成成成的的的的数数数数字字字字符符符符序序序序列列列列。如如如如:0123012301230123表表表表示示示示八八八八进进进进制制制制整整整整数数数数,其其其其值值值值等等等等于于于于十十十十进制整数为:进制整数为:进制整数为:进制整数为:1*81*81*81*82 2 2 2+2*8+2*8+2*8+2*81 1 1 1+3=83+3=83+3=83+3=83 十十十十六六六六进进进进制制制制整整整整数数数数:以以以以0 x(0 x(0 x(0 x(或或或或0X)0X)0X)0X)开开开开头头头头,并并并并由由由由十十十十六六六
7、六进进进进制制制制数数数数的的的的数数数数字字字字符符符符组组组组成成成成的的的的数数数数字字字字符符符符序序序序列列列列。表表表表示示示示十十十十六六六六进进进进制制制制数数数数的的的的数数数数字字字字符符符符有有有有 16 16 16 16 个个个个:0 0 0 09 9 9 9 和和和和 A A A A、B B B B、C C C C、D D D D、E E E E、F F F F,其其其其中六个字母也可以小写。中六个字母也可以小写。中六个字母也可以小写。中六个字母也可以小写。如如如如:0 x1230 x1230 x1230 x123表表表表示示示示十十十十六六六六进进进进制制制制整整整
8、整数数数数,其其其其值值值值等等等等于于于于十十十十进进进进制制制制整整整整数数数数为为为为:1*161*161*161*162 2 2 2 +2*162*162*162*161 1 1 1 +3 3 3 3=291291291291;0 xabc0 xabc0 xabc0 xabc,其其其其值值值值等等等等于于于于10*1610*1610*1610*162 2 2 2+11*16+11*16+11*16+11*161 1 1 1+12=2748+12=2748+12=2748+12=2748。整型常量的书写形式整型常量的书写形式6 long long 型型整整数数:在在整整型型常常数数后后加
9、加字字母母 L L 或或 l l,即为,即为long long 型整型常数。型整型常数。例如:例如:0L0L、132L 132L 等。等。不不带带符符号号的的整整型型:在在整整型型常常数数后后加加字字母母 U U 或或 u u,即即为为 unsignedunsigned 型型整整型型常常数数。例如:例如:1U1U、122U122U 等。等。不带符号的不带符号的 long long 型整数:型整数:在整型常数在整型常数后同时加上字母后同时加上字母 U U 和和 L L,表明该整型常,表明该整型常数是数是 unsigned longunsigned long 型。型。例如例如 22UL22UL、3
10、5LU 35LU 等。等。长整型整数和无符号整数的表示长整型整数和无符号整数的表示7 按数值范围大小和精度不同分成三种:按数值范围大小和精度不同分成三种:1.1.单精度型单精度型:用:用 float float 标记标记 如:如:floatx,y;2.2.双精度型:双精度型:用用 double double 标记标记 如:如:doubleresult;3.3.长双精度实型:长双精度实型:用用 long double long double 标记标记 如:如:longdoublez;2.1.2 2.1.2 浮点型数据浮点型数据81.float 1.float 型型 在在在在内内内内存存存存中中中
11、中占占占占用用用用4 4 4 4个个个个字字字字节节节节(32(32(32(32个个个个二二二二进进进进位位位位),约约约约7 7 7 7个个个个十十十十进进进进位有效数字,能表示绝对值约为位有效数字,能表示绝对值约为位有效数字,能表示绝对值约为位有效数字,能表示绝对值约为10101010-38-38-38-381010101038383838。2.double 2.double 型型 在在在在内内内内存存存存中中中中占占占占用用用用8 8 8 8个个个个字字字字节节节节(64(64(64(64个个个个二二二二进进进进位位位位),约约约约15151515个个个个十十十十进位有效数字,能表示绝对
12、值约为进位有效数字,能表示绝对值约为进位有效数字,能表示绝对值约为进位有效数字,能表示绝对值约为10101010-308-308-308-308 10101010308308308308。3.long double 3.long double 型型 long long long long doubledoubledoubledouble型型型型数数数数据据据据一一一一般般般般占占占占用用用用比比比比doubledoubledoubledouble型型型型数数数数据据据据更更更更多的字多的字多的字多的字节节节节,但在,但在,但在,但在VCVCVCVC中,也只占用中,也只占用中,也只占用中,也只占
13、用8 8 8 8个字个字个字个字节节节节。2.1.2 浮点型数据浮点型数据(续)(续)9说明:说明:(1)(1)整整数数部部分分和和小小数数部部分分可可以以任任选选,但但不不可可同同时没有。时没有。(2)(2)小数点和指数部分不可以同时都没有。小数点和指数部分不可以同时都没有。(3)(3)指指数数部部分分是是以以一一个个字字母母e或或E开开头头,后后跟跟一一个整数。个整数。例例如如:合合法法的的浮浮点点常常数数:7.7.、.457.457、1E51E5、1.5e-6 1.5e-6 不正确的浮点常数:不正确的浮点常数:E4E4、.E5.E5、4.0E4.0E浮点数的一般书写格式浮点数的一般书写格
14、式 正负号正负号 整数部分整数部分.小数部分小数部分 指数部分指数部分10(4)(4)(4)(4)在在在在浮浮浮浮点点点点数数数数后后后后加加加加f f f f表表表表示示示示floatfloatfloatfloat;加加加加L(L(L(L(或或或或l)l)l)l)表表表表示示示示long long long long doubledoubledoubledouble 型型型型,在在在在浮浮浮浮点点点点数数数数的的的的最最最最后后后后不不不不加加加加任任任任何何何何字字字字母母母母,C C系统认为此数是系统认为此数是系统认为此数是系统认为此数是 doubledoubledoubledouble
15、 型。型。型。型。例如:例如:1.51.51.51.5、1.5f1.5f1.5f1.5f、1.5L1.5L1.5L1.5L 分别表示分别表示分别表示分别表示 doubledoubledoubledouble型型型型、floatfloatfloatfloat型型型型和和和和long doublelong doublelong doublelong double型型型型浮点数浮点数说明说明11(2)(2)(2)(2)浮点数运算有一定的计算误差浮点数运算有一定的计算误差浮点数运算有一定的计算误差浮点数运算有一定的计算误差例如:例如:要判别两个浮点型变量要判别两个浮点型变量要判别两个浮点型变量要判别两
16、个浮点型变量x x x x和和和和y y y y是否相等是否相等是否相等是否相等正确:正确:正确:正确:fabs(x-y)1e-6fabs(x-y)1e-6/x x与与与与y y非常接近则认为相等非常接近则认为相等非常接近则认为相等非常接近则认为相等 错误:错误:错误:错误:x=yx=y /x x与与与与y y不可能完全相等不可能完全相等不可能完全相等不可能完全相等 浮点数浮点数注意点注意点(1)(1)(1)(1)接受的浮点数与书写会有一定的误差接受的浮点数与书写会有一定的误差接受的浮点数与书写会有一定的误差接受的浮点数与书写会有一定的误差例如例如:floatx=floatx=1.234567
17、89;1.23456789;因因因因x x x x只能存储约只能存储约只能存储约只能存储约7 7 7 7位有效数字位有效数字位有效数字位有效数字,浮点数浮点数浮点数浮点数1.234567891.23456789所对应的二进制形式中,超出存储位数的那些位不所对应的二进制形式中,超出存储位数的那些位不所对应的二进制形式中,超出存储位数的那些位不所对应的二进制形式中,超出存储位数的那些位不会被存储。会被存储。会被存储。会被存储。12字符型数据用于表示一个字符值。字符型数据用于表示一个字符值。字字符符型型数数据据的的内内部部表表示示是是字字符符的的ASCII代代码码(二进制形式二进制形式)。字符型数据
18、的类型符用字符型数据的类型符用char来标记。来标记。如:如:charc1,c2;字符型数据字符型数据可看作是可看作是-128127或或0255的的一个小整数一个小整数。2.1.3 2.1.3 字符型数据字符型数据13普通字符常量:普通字符常量:用单引号括住的一个字符。用单引号括住的一个字符。用单引号括住的一个字符。用单引号括住的一个字符。例如:例如:aa、BB、$【例例例例2 2.1 1】字符型数据与整型数据通用的示例程序。字符型数据与整型数据通用的示例程序。字符型数据与整型数据通用的示例程序。字符型数据与整型数据通用的示例程序。#include#includevoidmain()voidm
19、ain()charc1,c2;charc1,c2;/*定义两个字符型变量定义两个字符型变量c1和和c2*/c1=97;c1=97;/*a的的ASCII码值为码值为97*/c2=c1+1;c2=c1+1;/*字符型数据与整型数据混合运算字符型数据与整型数据混合运算*/printf(c1=%c,c1sASCIIcode=%dn,c1,c1);printf(c1=%c,c1sASCIIcode=%dn,c1,c1);printf(c2=%c,c2sASCIIcode=%dn,c2,c2);printf(c2=%c,c2sASCIIcode=%dn,c2,c2);字符型常量书写方法字符型常量书写方法普
20、通字符常量普通字符常量c1=a,c1sASCIIcode=97c2=b,c2sASCIIcode=98程序输出程序输出14转义字符常量:转义字符常量:用用字符或字符列字符或字符列来标记。来标记。例如:例如:详见表详见表2 21 1rr:回车符,回车符,光标位置移到当前行首光标位置移到当前行首 nn:换行符,换行符,光标位置移到下一行首光标位置移到下一行首tt:制制表表符符,使使输输出出位位置置横横向向跳跳至至下下一一个个输输出区开始列。出区开始列。00 :字符串结束符:字符串结束符 dddddd:dddddd为为1 1至至3 3个个8 8进进制制数数字字。如如12也也能能表示换行符表示换行符n
21、。字符型常量书写方法字符型常量书写方法转义字符常量转义字符常量 15转义符转义符转义符转义符 含含含含 义义义义a响铃响铃b退格(退格(Backspace键)键)n换行符,光标位置移到下一行首换行符,光标位置移到下一行首r回车符,光标位置移到当前行首回车符,光标位置移到当前行首t水平制表符(水平制表符(Tab键)键)反斜杠符反斜杠符单引号符单引号符双引号符双引号符0字符串结束符字符串结束符dddddd为为1至至3个个8进制数字进制数字如,如,12也能表示换行符也能表示换行符nxhhhh为为1至至2个个16进制数字进制数字如,如,x41也能表示大写字母也能表示大写字母A表2-1 转义字符及其含义
22、 16字符串常量:字符串常量:用双引号括起来的一串字符。用双引号括起来的一串字符。例如:例如:Iamastudent.、China、a普通字符与字符串的区别普通字符与字符串的区别字符型常量书写方法字符型常量书写方法字符串常量字符串常量形式形式形式形式字符数字符数字符数字符数存储存储存储存储输入输出输入输出输入输出输入输出普通普通普通普通字符字符字符字符单引号括住单引号括住1单个变量单个变量%c或或%d字符串字符串字符串字符串双引号括住双引号括住0n数组数组%s17例如:例如:char c=achar c=a正确正确 char c=”a”char c=”a”错误错误又如:字符串又如:字符串”Ch
23、ina”China”机内表示机内表示:字符型数据可与整型数据混合运算字符型数据可与整型数据混合运算 字字符符型型数数据据以以 ASCII ASCII 代代码码的的二二进进制制形形式式存存储储,与与整整数数的的存存储储形形式式相相类类似似。因因此此,在在程程序序中中,字字符符型型数数据据和和整整型型数数据据之之间间可可以以通用,字符型数据与整型数据可混合运算。通用,字符型数据与整型数据可混合运算。字符型与字符串常量的区别字符型与字符串常量的区别C h in a 0182.2 2.2 输入和输出基础输入和输出基础2.2.1 2.2.1 单字符的输出和输入单字符的输出和输入1.1.单个字符的输出函数
24、单个字符的输出函数格式:格式:格式:格式:putchar(ch)功功功功能能能能:将将将将一一一一个个个个字字字字符符符符输输输输出出出出到到到到标标标标准准准准输输输输出出出出设设设设备备备备(通通通通常常常常指指指指显显显显 示器)上。示器)上。示器)上。示器)上。说明:说明:说明:说明:1.1.1.1.chch可可可可以以以以是是是是字字字字符符符符型型型型常常常常量量量量或或或或变变变变量量量量,也也也也可可可可以以以以是是是是整整整整型型型型常常常常量或变量。量或变量。量或变量。量或变量。2.2.2.2.使使使使用用用用字字字字符符符符输输输输入入入入输输输输出出出出函函函函数数数数
25、,在在在在程程程程序序序序首首首首必必必必须须须须书书书书写写写写#include#include#include#include 19【例例2.2】使用】使用putchar()函数示例函数示例#includevoidmain()charch=h;inti=i;putchar(67);/*输输出字母出字母C,对应对应的的ASCII码值为码值为67*/putchar(ch);/*输输出字母出字母h*/putchar(i);/*输输出字母出字母i*/putchar(n);/*输输出字母出字母n*/putchar(141);/*输输出字母出字母a,对应对应的的ASCII码值为码值为141(八(八进进
26、制)制)*/putchar(n);/*换换行行*/程序输出程序输出China202.2.单个单个字符输入函数字符输入函数格式:格式:getchar()getchar()功功能能:从从从从标标标标准准准准输输输输入入入入设设设设备备备备上上上上(通通通通常常常常为为为为键键键键盘盘盘盘)读读读读入入入入 一个字符。一个字符。一个字符。一个字符。说明:说明:1.1.1.1.该该函函数数没没有有参参数数,它它只只能能接接受受一一个个输输入入字字符。符。2.2.getchar()getchar()得得到到的的字字符符可可以以赋赋给给一一个个字字符符变量或整型变量,也可以不赋给任何变量。变量或整型变量,
27、也可以不赋给任何变量。例如:例如:将输入的字符直接输出将输入的字符直接输出 putchar(getchar()21【例例2.3】使用】使用putchar()函数示例函数示例#include#includevoidmain()voidmain()charc;charc;c=getchar();c=getchar();/*输入一个字符输入一个字符*/putchar(c);putchar(c);/*输出读入的字符输出读入的字符*/putchar(n);putchar(n);/*换行换行*/若:若:若:若:程序运行时从键盘键入字符程序运行时从键盘键入字符程序运行时从键盘键入字符程序运行时从键盘键入字符
28、 Z Z 和和和和EnterEnter键键键键则:则:则:则:程序输出程序输出程序输出程序输出Z Z 222.2.2格式输出和输入格式输出和输入1.1.格式输出函数格式输出函数格式:格式:printfprintf(格式控制字符串格式控制字符串,输出项表输出项表)其其中中:(1)(1)格格式式控控制制字字符符串串是是用用双双引引号号括括起起来来的字符串,包含三类字符:的字符串,包含三类字符:普通字符普通字符:要求按原样输出的字符。要求按原样输出的字符。转转义义字字符符:要要求求按按转转义义字字符符的的意意义义输输出出。如如nn表表示示输输出出时时回回车车换换行行,bb表表示示退格退格 格格式式转
29、转换换说说明明:以以“%”开开头头后后加加修修饰饰符符和格式符。常用的有和格式符。常用的有%d%d、%f%f、%c%c、%s%s等。等。232.2.2格式输出和输入格式输出和输入printf函数(2)(2)输输出出项项表表:每每一一个个输输出出项项可可以以是是一一个个常常量、变量或表达式等。量、变量或表达式等。例如:例如:inta=3,b=5;printf(a=%d,b=%d,a+b=%dn,a,b,a+b);输出结果:输出结果:a=3,b=5,a+b=8 a=3,b=5,a+b=824 格式修饰符格式修饰符%-+#w.ph/l/L-+#w.ph/l/L-+#w.ph/l/L-+#w.ph/l
30、/L输出格式符输出格式符输出格式符输出格式符-左对齐标志,缺省时右对齐。左对齐标志,缺省时右对齐。+正数输出带正号。正数输出带正号。#对八进制数前加对八进制数前加0 0;对十六进制数前加;对十六进制数前加0 x0 x;对浮点数总显示小数点。对浮点数总显示小数点。w w 指指定定数数据据输输出出的的宽宽度度。若若宽宽度度为为为为*,这这这这时时时时域域域域宽宽宽宽大小由下一个输出项的整数值指出。大小由下一个输出项的整数值指出。大小由下一个输出项的整数值指出。大小由下一个输出项的整数值指出。例如:例如:例如:例如:printf(%*c,10,printf(%*c,10,printf(%*c,10,
31、printf(%*c,10,*)则:则:则:则:等同与等同与等同与等同与%10c%10c%10c%10c,即先输出,即先输出,即先输出,即先输出9 9 9 9个空格个空格个空格个空格,再输出,再输出,再输出,再输出一个一个一个一个*。25 格式修饰符格式修饰符(续)(续)(续)(续).p对对e、f格式格式,指定小数点之后输出的位,指定小数点之后输出的位数,缺省时,数,缺省时,p=6。对对s格式格式,指定输出的字符数。,指定输出的字符数。h h 输出的是短整型输出的是短整型l l 输出的是长整型输出的是长整型L L 输出的是输出的是long doublelong double型。型。26 输出格
32、式符输出格式符 格式符格式符 意意 义义 d d或或i i以十进制输出整型以十进制输出整型 o o 以八进制输出整型以八进制输出整型 x x或或X X以十六进制输出整型以十六进制输出整型 u u 以无符号十进制输出整型以无符号十进制输出整型 c c输出一个字符输出一个字符 s s 输出字符串输出字符串 f f 以小数形式输出单、双精度浮点数以小数形式输出单、双精度浮点数 e e或或E E以指数形式输出单、双精度浮点数以指数形式输出单、双精度浮点数%输出一个字符输出一个字符%27 格式输出函数格式输出函数例例2.42.4【例【例【例【例1 1 1 1】inti=1234;longj=123456
33、7L;inti=1234;longj=1234567L;printf(%d,%+6d,%-6d,%ldn,i,i,i,j);printf(%d,%+6d,%-6d,%ldn,i,i,i,j);将输出将输出将输出将输出:1234,+1234,1234,1234567注注注注意意意意:对对对对于于于于longlonglonglong型型型型数数数数据据据据输输输输出出出出,在在在在格格格格式式式式符符符符前前前前必必必必须须须须有有有有长长长长度度度度修饰符修饰符修饰符修饰符l l l l,表明输出,表明输出,表明输出,表明输出longlonglonglong型数据。型数据。型数据。型数据。【例【
34、例【例【例2 2 2 2】intk=045;longp=-1L;intk=045;longp=-1L;printf(%#o,%4o,%6lon,k,k,p);printf(%#o,%4o,%6lon,k,k,p);printf(%#x,%4x,%6lXn,k,k,p);printf(%#x,%4x,%6lXn,k,k,p);将输出将输出将输出将输出:045,45,37777777777 (-1 (-1 (-1 (-1的补码的补码的补码的补码)0 x25,25,FFFFFFFF28 格式输出函数例格式输出函数例(续)(续)(续)(续)【例【例【例【例3 3 3 3】printf(%d,%4u,%
35、lun,4294967295u,printf(%d,%4u,%lun,4294967295u,4294967295u,-1);4294967295u,-1);将输出将输出将输出将输出:-1,4294967295,4294967295(2(2(2(231313131-1)-1)-1)-1)【例【例【例【例4 4 4 4】printf(%c,%-3c,%2cn,045,a,a);printf(%c,%-3c,%2cn,045,a,a);/*/*八八八八进进进进制制制制045045对应对应对应对应的字符是的字符是的字符是的字符是%*/%*/将输出将输出将输出将输出:%,a,a【例【例【例【例5 5
36、5 5】printf(%f,%8.3f,%-7.2f,%.7fn,printf(%f,%8.3f,%-7.2f,%.7fn,123.4567f,123.4567f,123.4567f,123.456789);123.4567f,123.4567f,123.4567f,123.456789);将输出将输出将输出将输出:123.456703,123.457,123.46,123.4567890292.2.格式输入函数格式输入函数格格式式:scanfscanf(格格式式控控制制字字符符串串,数数据据储储存存地地址址项表项表)其中:其中:(1)(1)格格式式控控制制字字符符串串是是用用双双引引号号括括
37、起起来来的的字字符符串串,包括包括2 2类字符:类字符:普通字符:普通字符:要求用户必须按原样输入。要求用户必须按原样输入。格式转换说明:格式转换说明:以以”%”%”开头后加修饰符和开头后加修饰符和格式符格式符(2)(2)数据存储地址项表数据存储地址项表,每一个地址项是一个,每一个地址项是一个变量的地址(在变量名前加变量的地址(在变量名前加地址运算符地址运算符&)30 格式修饰符格式修饰符%*wh/l/L*wh/l/L*wh/l/L*wh/l/L 输入格式符输入格式符输入格式符输入格式符*星号星号星号星号(赋值抑制符赋值抑制符赋值抑制符赋值抑制符),跳过一个输入数据项。,跳过一个输入数据项。,
38、跳过一个输入数据项。,跳过一个输入数据项。W W W W 指定输入数据的数字符个数。指定输入数据的数字符个数。指定输入数据的数字符个数。指定输入数据的数字符个数。H H H H输入输入输入输入shortshort型整数。型整数。型整数。型整数。l l l l输入输入输入输入longlong型整数。型整数。型整数。型整数。L L L L 输入输入输入输入longdoublelongdouble型整数。型整数。型整数。型整数。例如:例如:例如:例如:intiinti,j j,k;k;scanf(scanf(%d%d%d%d%d%d,&i,&j,&k);,&i,&j,&k);为变量为变量为变量为变量
39、 i i i i,j j j j,k k k k 输入数据。其中输入数据。其中输入数据。其中输入数据。其中&i&i&i&i,&j&j&j&j,&k&k&k&k 分别表示变量分别表示变量分别表示变量分别表示变量 i i i i,j j j j,k k k k 的存储地址。的存储地址。的存储地址。的存储地址。31输入格式符表输入格式符表格式符格式符 意意 义义 d d或或i i以十进制形式输入整数以十进制形式输入整数 o o以八进制形式输入整数以八进制形式输入整数 x x以十六进制形式输入整数以十六进制形式输入整数 u u以十进制形式输入无符号整数以十进制形式输入无符号整数 c c输入字符数据输入
40、字符数据 s s输入字符串数据输入字符串数据 f f以小数形式输入浮点数以小数形式输入浮点数 e e以指数形式输入浮点数以指数形式输入浮点数32 格式输入函数格式输入函数说明说明1.1.1.1.格格格格式式式式控控控控制制制制字字字字符符符符串串串串之之之之后后后后给给给给出出出出的的的的是是是是变变变变量量量量地地地地址址址址,而而而而不不不不是变量名是变量名是变量名是变量名(除非是指针除非是指针除非是指针除非是指针)。例如:例如:例如:例如:为整型变量为整型变量为整型变量为整型变量 n n n n 输入数据输入数据输入数据输入数据写成写成写成写成:scanf(%d,n)scanf(%d,n
41、)scanf(%d,n)scanf(%d,n)是不正确的是不正确的是不正确的是不正确的应写成应写成应写成应写成:scanf(%d,&n)scanf(%d,&n)scanf(%d,&n)scanf(%d,&n)2.2.2.2.在在在在格格格格式式式式控控控控制制制制字字字字符符符符串串串串中中中中,如如如如果果果果有有有有普普普普通通通通字字字字符符符符,则则则则在在在在输入数据时应输入与这些字符相同的字符。输入数据时应输入与这些字符相同的字符。输入数据时应输入与这些字符相同的字符。输入数据时应输入与这些字符相同的字符。例如:例如:例如:例如:scanf(%d,%d,&i,&j)scanf(%d
42、,%d,&i,&j)scanf(%d,%d,&i,&j)scanf(%d,%d,&i,&j)正确输入:正确输入:正确输入:正确输入:1 1 1 1,2 2 2 2错误输入:错误输入:错误输入:错误输入:1 2 1 2 1 2 1 233 格式输入函数格式输入函数说明说明3.3.3.3.在用在用在用在用%c%c%c%c格式入字符时,空白类字符和转义字符格式入字符时,空白类字符和转义字符格式入字符时,空白类字符和转义字符格式入字符时,空白类字符和转义字符都作为有效字符输入。若要取输入的一串空白类都作为有效字符输入。若要取输入的一串空白类都作为有效字符输入。若要取输入的一串空白类都作为有效字符输入。
43、若要取输入的一串空白类字符之后的第一个非空白类字符,可采用格式字符之后的第一个非空白类字符,可采用格式字符之后的第一个非空白类字符,可采用格式字符之后的第一个非空白类字符,可采用格式%c%c%c%c。4.4.4.4.在输入数值数据和字符串时,遇以下情况,就认在输入数值数据和字符串时,遇以下情况,就认在输入数值数据和字符串时,遇以下情况,就认在输入数值数据和字符串时,遇以下情况,就认为该数据结束:为该数据结束:为该数据结束:为该数据结束:遇空白类字符:遇空白类字符:遇空白类字符:遇空白类字符:空白符、制表符、换行符。空白符、制表符、换行符。空白符、制表符、换行符。空白符、制表符、换行符。已读入由
44、宽度所指定的字符数:已读入由宽度所指定的字符数:已读入由宽度所指定的字符数:已读入由宽度所指定的字符数:如如如如%4d%4d%4d%4d 多至多至多至多至 4 4 4 4 个数字符。个数字符。个数字符。个数字符。对于输入数值数据,下一个字符不能构成正确的对于输入数值数据,下一个字符不能构成正确的对于输入数值数据,下一个字符不能构成正确的对于输入数值数据,下一个字符不能构成正确的数据格式。数据格式。数据格式。数据格式。34 格式输入函数格式输入函数说明例说明例例:例:例:例:inti;charc;floatx;inti;charc;floatx;scanf(%d%c%f,&i,&c,&x)sca
45、nf(%d%c%f,&i,&c,&x)若输入字符为:若输入字符为:若输入字符为:若输入字符为:123a123x.26123a123x.26123a123x.26123a123x.26则:则:则:则:变量变量变量变量i i i i为为为为123123123123,变量,变量,变量,变量c c c c为字符为字符为字符为字符a a a a,变量,变量,变量,变量x x x x为为为为123.0123.0123.0123.0。例:例:例:例:inti,j;inti,j;scanf(%3d%*4d%d,&i,&j)scanf(%3d%*4d%d,&i,&j)若输入字符为:若输入字符为:若输入字符为:若
46、输入字符为:123123123123456456456456 78 78 78 78则:则:则:则:变量变量变量变量i i i i为为为为123123123123,j j j j为为为为78787878。其中数据。其中数据。其中数据。其中数据 456 456 456 456 因赋值抑因赋值抑因赋值抑因赋值抑制符制符制符制符*的作用被跳过。的作用被跳过。的作用被跳过。的作用被跳过。35 格式输入函数格式输入函数说明说明5.5.5.5.s s s s 格式用来输入字符串,输入的字符序列之后自格式用来输入字符串,输入的字符序列之后自格式用来输入字符串,输入的字符序列之后自格式用来输入字符串,输入的字
47、符序列之后自动添加动添加动添加动添加字符串结束标志符字符串结束标志符字符串结束标志符字符串结束标志符0000(因此,存储输入字(因此,存储输入字(因此,存储输入字(因此,存储输入字符序列的字符数组的长度必须比实际最长字符串符序列的字符数组的长度必须比实际最长字符串符序列的字符数组的长度必须比实际最长字符串符序列的字符数组的长度必须比实际最长字符串的字符数多的字符数多的字符数多的字符数多1 1 1 1)。)。)。)。6.6.6.6.请注意请注意请注意请注意c c c c格式符和格式符和格式符和格式符和s s s s格式符的区别。格式符的区别。格式符的区别。格式符的区别。例:例:例:例:charc
48、100,s100;charc100,s100;scanf(%4c,c);scanf(%4c,c);/*/*/*/*输入输入输入输入4 4 4 4个字符个字符个字符个字符*/*/*/*/输入:输入:输入:输入:abcd abcd abcd abcd结果:结果:结果:结果:scanf(%4s,s);scanf(%4s,s);/*/*/*/*忽略前导空格忽略前导空格忽略前导空格忽略前导空格*/*/*/*/输入:输入:输入:输入:abcd abcd abcd abcd结果:结果:结果:结果:abcdabcd036 格式输入函数格式输入函数说明说明7.e7.e、f f 格式用来输入浮点数。如有格式修格式
49、用来输入浮点数。如有格式修饰符饰符l l,则为,则为doubledouble型变量地址;含有长度型变量地址;含有长度修饰说明修饰说明L L,则为,则为long doublelong double型变量地址;型变量地址;否则为否则为floatfloat型变量地址。型变量地址。例如:例如:float x;double y;long double;float x;double y;long double;scanf(%f%lf%Lf,&x,&y,&z);scanf(%f%lf%Lf,&x,&y,&z);37 格式输入函数格式输入函数例例2.52.5对下列输入,要让变量对下列输入,要让变量i和和j值分
50、别为值分别为12和和234 (1)(1)scanf(%d,%d,&i,&j);正确的输入:正确的输入:12,234(2)(2)scanf(%d%d,&i,&j);正确的输入:正确的输入:12234 (3)(3)scanf(%2d%3d,&i,&j);正确的输入:正确的输入:12234 (4)(4)scanf(%d%*d%d,&i,&j);正确的输入:正确的输入:120234 382.3 2.3 数据运算数据运算 运算符的优先级运算符的优先级 优优先先级级用用来来标标志志运运算算符符在在表表达达式式中中的的运运算算顺顺序。优先级高的先运算,优先级低的后运算。序。优先级高的先运算,优先级低的后运算