基本数据类型_第1页
基本数据类型_第2页
基本数据类型_第3页
基本数据类型_第4页
基本数据类型_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语 言数据类型基 本数据类型导 出数据类型double(双精度浮点型)long(长整型)char(字符类型)整 型short(短整型)int(整型)浮点型float(单精度浮点型)long double(长双精度浮点型)void类型用户定制类型T*(指针类型)struct(结构体类型)union(共用体类型)文件类型enum(枚举)函数类型构造类型T(数组类型) C语言提供的基本数据类型包括char(字符)型、int(整)型、float(单精度实)型、double(双精度实)型。并且还可以通过使用short、long、signed和unsigned修饰char和int,用long修饰dou

2、ble,形成更多的类型。 定点表示和浮点表示,是C语言基本数据类型的重要特征。为了说明什么是“定点”,什么是“浮点”,先看值的几种表示形式: 日常的表示法 C语言中的表示形式3.14159100 3.14159e00.3141591010. 314159e+10.03141591020.0314159e+231.415910-131.4159e-13141.5910-33141.59e-33 . 1 4 1 5 9+1数值部分(尾数)指数(阶码) 内存中的数值是以补码形式存放的,一个正数的补码就是该数的二进制数(如10的补码为00000000 00001010)。求一个负数的补码的方法如下:如

3、-10的补码可以这样求: 先取该数的绝对值;先取10 然后以二进制形式表示;10的二进制码为00000000 00001010 再对其取反;取反得11111111 11110101 然后加1;加1,得11111111 11110110,即-10的16位存储形式为:11111111 11110110。 C语言对不同类型的数据分配不同宽度的存储空间,典型的存储空间宽度有:1个字节(8位)、2个字节(16位)、4个字节(32位)、8个字节(64位)和10个字节(80位)几种。显然,不同的长度,对应的数据的取值范围是不同的。当然,同样长度的取值范围还与有无符号、是定点表示(整型)还是浮点表示(实型)有

4、关。另外还取决于所用的编译系统。大多数编译系统对一个带符号整数的数值范围处理为:-2n-1 2n-1-1。其中n为该整数所占的比特数。如果一个整数所占的比特数为16,则该想整数的苑围为-32 767 32 767。也有一些编译系统对一个带符号整数的数值范围处理为:-(2n-1 1) 2n-1-1。如果一个整数所占的比特数为16,则该想整数的苑围为-32 768 32 768。数据长度(比特)取值范围Signed (有符号)Unsigned (无符号)8-127 1270 25516-32 767 32 7670 65 53532-2 147 483 647 2 147 483 6470 4 2

5、94 967 29564-(263-1) 263-10 264-1(18 446 744 073 709 551 615)宽度(比特)数据类型机内表示(位数)取值范围有效数字和精度阶码尾数符号32float 8231|3.4e-38| |3.4e+38|大约7位十进制有效数字,7位精度64double11521|1.7e-308| |1.7e+308|16或17位十进制有效数字,7位精度80long double由具体实现确定|1.2e-4932| |1.2e+4932|18位十进制有效数字,7位精度 C语言提供了一个测定某一种类型数据所占存储空间长度的运算符“sizeof”它的格式为: si

6、zeof (类型标识符或数据) 当不了解所使用的编译器中的某数据类型的宽度时,可以使用这个运算符计算之。例2.1 用sizeof运算符测定所用的C系统中各种类型数据的长度。/* 文件名:ex020101.c */* 测定数据类型长度 */#include int main(void)int i = 0;printf (char: %d bytes.n,sizeof(char);printf (short: %d bytes.n,sizeof(short);printf (i: %d bytesn,sizeof (i); /* 计算变量i的字节数*/printf (long: %d bytesn

7、,sizeof(long);printf (float: %d bytesn,sizeof(float);printf (double: %d bytesn,sizeof(double);printf (1.23456: %d bytesn,sizeof(1.23456); /* 计算常量的字节数*/printf (double: %d bytesn,sizeof(double);return 0; 2.2.1 整型常量1. 整数常量的三种进制 在C语言中,整型常量可以使用十进制数、八进制数、十六进制数等几种形式书写。C语言规定,程序中凡出现以数字0开头的数字序列,一律作为八进制数处理;凡出现

8、以0 x开头,后面跟若干位数字的,一律作为十六进制数处理;其它数字作为十进制数处理。 5121(十进制正整数)0111(八进制正整数,等于十进制数73)010007(八进制正整数,等于十进制数4103)0177777(八进制正整数,等于十进制65537)0XFFFF(十六进制正整数,等于十进制数65537)0 xA3(十六进制正整数,等于十进制数163)-32768(十进制负整数)09876(非十进制数,又非八进制数,因为有数字8和9)20fa(非十进制数,又非十六进制数,因为不是以0 x开头)0 x10fg(出现了非法字符) 在C语言中整数可以进一步分为short、int、long和long

9、 logn等类型。那么,对于一个常数如何分辨其类型呢?一般说来,有以下原则: 1)默认原则:在没有任何特别标志的情况下,可以按照常数所在的范围,决定其类型。例如,在16位的机器中,当一个常整数的值在十进制-3276832767(八进制数00177777、十六制数0 x00 xFFFF),则被看作一个short int或int型整数。超出上述范围的整常数,则被看作长整数(32位)表示。例如,234、32766、0177776、0 xFFFE等被看作是int型,而-32769、32768、0200000、0 x10000等被看作是long型。 2)后缀字母标识法: 用L或l表示long类型整数。

10、用LL或ll表示long long类型整数。 用U或u表示unsigned类型。 例如:-12L(十进制long整数)-12LL(十进制long long整数)774545L(十进制long整数)076L(八进制long整数,等于十进制数32768)0100000L(八进制long整数,等于十进制62)0 x12l(十六进制long整数,等于十进制数18)0X8000l(十六进制long整数,等于十进制数32768)12345u(十进制unsigned int类型)12345UL(十进制unsigned long类型)在16位字长的机器中,一旦把一个常数表示成long整数,系统便将其存储空间扩

11、充为4个字节。从值的大小上看,12L与12没有区别,但它们占用的存储空间不相同 1. 可打印字符 字符类型的数据在内存中以相应的ASCII代码存放。例如,a的ASCII码为97,则在内存中的二进制存储形式为:01100001。例2.2/* 文件名:ex020201.c */#include int main(void)char ch;/* 定义了一个字符类型的变量ch */ch = a;printf (%d,ch);/* 使用整型格式码 */return 0;运行结果为:97例2.3/* 文件名:ex020301.c */#include int main(void)char ch;int i

12、;ch = A;ch = ch + 32;i = ch;printf (%d is %cn,i,ch);/* 注意格式码 */printf(%c is %dn,ch,ch); /* 注意格式码 */return 0;运行结果如下:97 is aa is 97例2.4/* 文件名:ex020401.c */#include int main(void)char c;c = 0362;printf (%dn, c);return 0;运行结果:-14 ASCII字符分为可打印字符和不可打印字符两种。在C语言程序中,可打印字符常量是用一对单撇号括起来的一个字符,如a,A,?,。需要注意如下几点: 单

13、撇号只是字符与其它部分的分隔符,或者说是字符常量的定界符,不是字符常量的一部分,当输出一个字符常量时不输出此撇号。 不能用双引号代替撇号,如a不是字符常量。 撇号中的字符不能是单撇号或反斜杠,如或不是合法的字符常量。 转义字符(反斜杠码)是C语言提供的处理一些特殊字符(包括一些不可打印字符)方法。重要有如下一些: 用反斜杠开头后面跟一个字母代表一个控制字符(不可打印字符); 用代表字符“”,用代表撇号字符; 用后跟1到3个八进制数代表ASCII码为该八进制数的字符; 用x后跟1到2个十六进制数代表ASCII码为该十六进制数的字符。转义字符形式意 义n换行t水平制表v垂直制表b退格r回车f走纸换

14、页a报警(如铃声)反斜杠?问号“双撇号单撇号ddd13位八进制常数xhh12位十六进制常数例2.5/* 文件名:ex020501.c */*打印人民币符号¥*/#include int main(void)printf(Yb=n);return 0; 该程序运行时先打印一个字符“Y”。这时打印头已走到下一个位置,用控制代码b使打印头回退一格,即回到原先已打印好的Y位置再打印字符“=”,两字符重迭形成人民币符号“¥”。当然,这一输出只能在打印机上实现,而不能在显示器上实现。因为显示器无此重迭显示功能(在显示后一字符时原在该位置上的字符消失)。 转义字符除用来形成一个外设控制命令外,还用来输出不能

15、直接从键盘上输入或不能用字符常量书写出的ASCII字符。这时要在反斜杠后跟一个代码值,这个代码值最多用三位八进制码数(不加前缀)或两位十六进制数(以x作前缀)表示。例2.6/* 文件名:ex020601.c */#include int main(void)char ch;ch=362;/*将八进制数362的ASCII字符赋给ch*/printf (%c,ch);return 0;上运行可在显示屏上输出:在C语言中,把用一对双撇号括起来的零个或多个字符序列称为字符串常数。如:hello, Programming in C ,A , a , 等。字符串以双撇号为定界符,但双撇号并不属于字符串。要

16、在字符串中插入撇号,应借助转义字符。例如要处理字符串I say: Goodby!时,可以把它写为I say: Goodby!字符串中的字符数称为该字符串的长度。字符串常数在机器内存储时,系统自动在字符串的末尾加一个“字符串结束标志”,它是转义字符“0”。如字符串“hello”在内存中存储为:hello0C语言中的实型(浮点)数据常量用带小数点和小数分量的形式表示,如12.345,也可以用科学记数法表示。C语言将实型数据分为:float、double和long double三种类型,并且默认的实型数据是double类型的。因此,对于带小数点的常量,C语言编译器会将之作为double类型看待。如果

17、要特别说明某带小数点的常量是float类型或long double类型,可以使用后缀字母: 用f或F表示float类型,如123.45f 1.2345e+2F. 用l或L表示long double类型,如1234.5l 1.2345E+3L。使用科学记数法(指数形式)时,要求e的左边必须有数值部分(有效数字),可以是整数,也可以是小数形式;指数必须是整数形式。例如,e5、2e1.23、.e5等都是不合法的。前面介绍的常量都是直接常量,从字面上即可直接看出它们的值是什么,因此又称“字面常量”。符号常量则是在一个程序(或程序的一部分)中指定的用名字代表的常量,从字面上不能直接看出其类型和值。例2.

18、7 求圆面积和周长的两个程序。程序1:/* 文件名:ex020701.c */* 计算圆的周长和面积 */#include double calcuArea (double r);double calcuCircumference (double r);int main(void)printf (area=%f, calcuArea (2.0);printf (tcircumference=% fn, calcuCircum (2.0);return 0;double calcuArea(double r) /* 计算圆面积 */return (3.141592654* r* r);doubl

19、e calcuCircum(double r) /* 计算圆周长 */return (2.0* 3.141592654* r):运行结果为:area = 12.566371 circumference = 12.566371程序2:/* 文件名:ex020702.c */* 计算圆的周长和面积 */#include define PI 3.141592654 /*定义符号常数*/define R 2.0double calcuArea(double r),;double calcuCircum(double r);int main(void)printf (area=%f, area (R);

20、printf (tcircumference=%fn, circumference (R);return 0; double calcuArea(double r)return (PI* r* r) double calcuCircum(double r)return (2.0* PI* r); 程序2的运行结果与程序1完全相同。程序2中PI代替3.141592654,用R代替20,使程序更容易理解,可读性好,而且当需要修改R的值时只需要改一处即可,方便又不易出错。定义符号常量的一种方法是使用define命令,它是一种“预编译命令”,在编译整个程序之前系统会先对程序中的预编译命令进行处理。上面

21、define命令的作用是在预编译时将程序中凡出现PI的地方全部以3.141592654代替,凡出现R的地方一律以2.0代替。 在下列情况下,C语言编译器,可能将数据从一种类型转换成另一种类型:(1)显式转换:使用转换表达式。(2)隐式转换,包括: 当二元运算符两端的操作数类型不同时进行的转换; 函数参数传递中的数据类型转换; 函数返回时的数据类型转换; 其他情形。1. 数据类型的提升与降格提升可以分为如下3类情况:(1)类型提升:由整数转换为浮点数。(2)整数提升:由短整数类型转换为长整数类型。(3)同一长度的整数有符号与不有符号的,属于同一级别。例2.8 分析下面程序的执行结果。/* 文件名

22、:ex020801.c */#include int main(void)unsigned short us1 = 32767, us2 = 65535, us;signed short ss = -7; us = ss;printf(1)ss = %d, us = %dn,ss,us);ss = us1;printf(2)us1 = %d, ss = %dn,us1,ss);ss = us2;printf(3)us2 = %d, ss = %dn,us2,ss);return 0;程序执行结果如下:(1)ss = -7, us = 65529(2)us1 = 32767, ss = 3276

23、7(3)us2 = 65535, ss = -1 (1)第1种情形是把一个有符号的数-7(在变量ss中),赋值给无符号类型的变量us后,存在无符号变量中的数据变成为65529了。这种变化是由于将原来的符号数中的符号变成了无符号数中的最高位而产生。如图2.4所示,当一个-7的16位补码被当作16位无符号数时,由于正数的原码=补码,所以1111 1111 1111 1001 = 65535(全1)-110=65529。1000000000000111-7原码1111111111111001-7补码1111111111111001无符号数类型转换符号位变最高数据位 (2)第2种情形是将一个一般的un

24、signed类型数据转换成同长度的signed类型数据。在一般情况下,不会出现数据的错误。但是在第3种情形却出现了错误。这是因为当无符号数较小,其最高位为0时,转换成符号数后,最高位虽然被当作了符号位,但并没有影响数据的有效值。而如果无符号数大到使最高位为1,则转换成有符号数后,被当成了负数的补码。于是,出现数据错误。 1111111111111111有符号数据补码1111111111111111无符号数65535类型转换1000000000000001有符号数据原码最高位变符号位 当一个实数(浮点数)转换为整数时,实数的小数部分全部舍去,并按整数形式存储。例如将实数3276.85赋给一个整型

25、变量i,i的值为3276。但应注意,实数的整数部分不要超过整型数允许的最大范围(微机上为-3276832767),否则数据出错。 当由double型转换为float型时,去掉多余的有效数字,但按四舍五入处理。 四舍五入会丢失一些精度,截去小数也会丢失一些精度。此外,由long型转换成float或double型时,有可能在存储时不能准确地表示该长整数的有效数字,精度也会受损失,因为float型只有7位精度。浮点数降格时,即double转换为float,或double、float转换成long int、short型。当数据值超过了目标类型的取值范围时,所得到的结果将是不确定的(其实也是有规律的,只

26、是给出一个用户往往难以理解的数值。例如,将实数32768.85赋给16位整型变量i,由于32768超过了16位整数最大值32767,在内存中就把32768存储为1000000000000000形式,它代表整数-32768。如果输出i,得-32768。若将32769.85赋给i,输出整数i的值得-32767。这些牵涉到补码的知识,在此不详述)。当较长的整数转换为较短的整数时,要将高位截去。例如long型为4个字节,short型为2个字节,将long型值赋给short类型,只将低字节内容送过去。这就会有很大误差,得到的值是原数据值以32768为模的余数。/* 文件名:ex020901.c */#i

27、nclude int main(void)double a = 123456.789098765;float b;long c;short i,j;b = a; c = a; i = a; j = c;printf (a = %f, b = %f, c = %d, i = %d, j = %dn,a,b,c,i,j);return 0;运行结果如下:a = 123456.789099, b = 123456.789063, c = 123456, i = -7616, j = -76161.赋值转换2. 一般表达式转换 (1)一元转换 操作数类型标准C语言转换传统C语言转换float(无转换)

28、double阶大于或等于int的整型数据(无转换)(无转换)阶小于int的有符号类型数据intint阶小于int的无符号类型数据,所有值可以用int类型表示intunsigned int阶小于int的无符号类型数据,所有值不可用int类型表示unsigned intunsigned int(2)二元转换按照优先级顺序将各二元运算符两端的操作数提升成同一类型。转换按照下面的算法进行。IF(一个操作数为long double) 另一个操作数转换为long doubleELSE IF(一个操作数为double) 另一个操作数转换为doubleELSE IF(一个操作数为float) 另一个操作数转换

29、为floatELSE IF(一个操作数为unsigned long) 另一个操作数转换为unsigned longELSE IF(一个操作数为long) 另一个操作数转换为longELSE IF(一个操作数为unsigned) 另一个操作数转换为unsignedchar c;int i;float f;double d;int result;result = c * i + f / d - ( f + i);floatintdoubledoubledoubleintdoublefloatd o ubledoubledoubleint 例如,一个long型数在printf()中指定用%d格式输出

30、,相当于先将long转换为int型后再输出。一个int型数也可按无符号方式输出(使用%u转换等)。 C语言提供一种“强制类型转换”运算符,将一个类型的变量强制转换为另一种类型。例如:(int)3.5中(int)的作用是将3.5转换成整型。(类型标识符)表达式例如:(char) (3-3.14159 *x)(得到字符型数)k=(int)(int)x+(float)i+j)(得到整型数)(float)(x=99)(得到实型单精度数) C系统提供的数学函数中多数要求参数为double型,在调用这些函数时可以用显示转换方法进行类型转换。例如:double atan (double)i)double c

31、os (double)i)double sqrt (double)i)double log (double)i)double exp (double)i) 输入输出的对象是数据,而数据是以介质为载体的,因此进行输入输出操作就要与各种外部设备发生联系,要指定从哪个设备(文件)读入数据,将数据输出到哪个设备(文件)上去。本节只讨论从终端(键盘)输入和输出到终端(显示器)的输入输出函数。通常也把这些函数称为控制台输入输出函数。主要是用得最广泛的scanf函数、printf函数、getchar函数和putchar函数等。其中scanf和printf用于格式化输入输出。1. printf()基本格式pr

32、intf()函数的一般形式如下:int printf(格式控制字符串,输出表达式1,输出表达式2,);%修饰宽度精度长度修正 格式码a/A,c,d,e/E,f,g/G,i,n,o,p,s,u,x/X,%l/L,h,ll,hh,j,z,t. 十进制整数十进制整数-,0,+,空格,#格式码输出说明举 例输出结果d/i带符号十进制定点格式int a=975311;printf(“%d”,a);975310u无符号十进制定点格式int a=975311;printf(“%u”,a);975310o无符号八进制定点格式int a=975311;printf(“%o”,a);3560717x/X无符号十六

33、进制定点格式int a=975311;printf(“%x”,a);ee1cfc字符int a=68;printf(“%c”,a);Ds字符串char s=”abcde”; printf(“%s”,s);abcdef小数形式十进制double a=123.456;printf(%f,a);123.456000e/E科学记数法double a=123.456;printf(%E,a);1.234560E+002g/Gf和e中短者,不印无效0double a=123.456;printf(%G,a);123.456p输出地址,格式由实现定义double a=123.456;printf(%p,&a

34、mp;a);0012FF74(a的地址)%printf(%);%长度修正符可修饰的格式码参数类型ld,i,o,u,x,Xlong, lld,i,o,u,x,Xlong long int, unsigned long long inthd,i,o,u,x,Xshort, unsigned shorthhd,i,o,u,x,Xchar, unsigned charLa,A,e,E,f,g,Glong double 域宽与精度说明的格式为:m.n。其中: m为输出域宽,用字符数表示。对实数,包括了一个小数点的位置。 n为精度,其用法有如下几种情形: 配合格式码f、e/E时,指定小数点后面的位数;未指

35、定精度时,默认小数点后6位。 配合格式码g/G时,指定有效位的数目。 作用于字符串时,精度符限制最大域宽。 作用于整型数据时,指定必须显示的最小位数,不足时左恻补先导0。/* 文件名:ex021001.c */#include int main(void) printf(“%12.5fn”,123.1234567); printf(“%12fn”,123.1234567); printf(“%12.5gn”,123.1234567); printf(“%5.10s%sn”,”abcdefghijklm”,”a”); printf(“%12.8dn”,12345); return 0;执行结果如

36、图2.8所示。域宽12,精度5123.12346123.123457123.12abcdefghija00012345域宽12,未指定精度,默认6位精度域宽12,有效位5位最少5个字符,最大域宽10域宽12,未必须最少显示8位,不足时左恻补0修饰符意 义-数据在输出域中左对齐显示0用“0”而非空格进行前填充+在有符号数前输出前缀“+”或“-”空格对正数加前缀空格,对负数加前缀“-”#在g,f和f前,确保输出字段中有一个小数点;在x前,确保输出的十六进制数前有前缀0 x*做占位符号格式字段数据项表输 出 结 果说 明%20di123456域中右对齐输出%20 x,i1e240%20fx333.0

37、12346%#20 xi0 x1e240确保加前缀0 x%-20fx333.012346域中左对齐% 20fx333.012346填充空格前导%020fx0000000000333.012346填充0前导%+20fy+333.012346确保加正负号%+20fy-555.012346%*.*f20,8,x333.01234568数据替代占位符例2.12 一个显示美国各州面积、森林覆盖面积和森林覆盖率的简单程序。/* 文件名:ex021201.c */* 美国各州面积列表 */#include int main(void)double ar ,por,perc;printf(%-12s%12s%

38、12s%12sn,State,Area,Forest,Percent);printf(-n);ar = 50750; por = 33945; perc = por/ar*100;printf(%-12s%12.0f%12.0f%10.2f%n,Alabama,ar,por, perc);ar = 591000;por = 201642; perc = por/ar*100;printf(%-12s%12.0f%12.0f%10.2f%n,Alaska,ar,por, perc);ar = 114000;por = 30287; perc = por/ar*100;printf(%-12s%1

39、2.0f%12.0f%10.2f%n,Arlzona,ar,por, perc);ar = 53187;por = 26542; perc = por/ar*100;printf(%-12s%12.0f%12.0f%10.2f%n,Arkanasas,ar,por, perc);ar = 158706;por = 61532; perc = por/ar*100;printf(%-12s%12.0f%12.0f%10.2f%n,California,ar,por, perc);ar = 104000;por = 33340; perc = por/ar*100;printf(%-12s%12.

40、0f%12.0f%10.2f%n,Colorado,ar,por, perc);printf(“n”);return 0;/* 文件名:ex021301.c */#include int main(void)int a= 1, b = 2; printf( x = %d , y = %dn,+ a + b,+ b + a);return 0;程序执行结果如下:x = 5, y = 4 scanf()函数的功能是将输入数据送入相应的存储单元。具体地说,它是按格式参数的要求,从终端上把数据传送到地址参数所指定的内存空间中。其原型为:int scanf (格式控制字符串,地址1,地址2,);1. 地

41、址参数 C语言允许程序员间接地使用内存地址,这个地址是通过对变量名“求地址”运算得到的。求地址的运算符为&。例如对于定义: short a; float b; &a给出的是变量a两字节空间的首地址,&b给出的是变量b四字节空间的首地址。2. 格式说明字段 scanf()与printf()有相似之处,也有不同之处。scanf()格式控制字符串中的主要成分是格式说明字段和数据项。scanf()的格式说明字段的结构如图2.9所示。%宽度长度修正 格式码a/A,c,d,e/E,f,g/G,i,n,o,p,s,u,x/X,%l/L,h,ll,hh,j,z,t十进制整数格式码长度修

42、正符输入数据类型说 明d无hhhlllint charshortlonglong long输入带符号十进制整数,可选加+或-ihhhlllcharshortlonglong long输入带符号整数,可选加+或-以及0(八进制)、0 x(十六进制)u无unsigned输入带符号十进制整数ohhunsigned char输入无符号八进制整数,可选加+或-xhlllunsigned shortunsigned longunsigned long long输入无符号十六进制整数,可选加+或-c无char读取字符s无字符串连续读取字符,直到遇到文件结束符、空白或达到指定字段宽度n无hhhlllint c

43、harshortlonglong long不读取字符,而是而是把scanf()所处理的字符总数写入到对应参数指定的变量中。p无地址读取地址f, e, g,a无lLfloatdoublelong double读取带符号十进制实数 无字符搜索集合只能输入定义在搜索集合中的字符,例如%abcdefgh或%a-h%无%读取%/* 文件名:ex021401.c */#include int main(void)double a,b,c,d;scanf(%f%f,&a,&b); printf(na=%1f,b=%1fn,a,b);scanf(%lf%lf,&c,&d);pr

44、intf(nc=%lf,d=%lfn,c,d);return 0; scanf()是从输入数值数据流中接收非空的字符,再转换成格式项描述的格式,传送到与格式项对应的地址中去。当操作者在终端上键入一串字符时,系统怎么知道哪几个字符算作一个数据项呢?有以下几种方法: (1)使用默认分隔符:空格、跳格符(t)、换行符(n)。/* 文件名:ex021501.c */#include int main(void)int a;float b,c;scanf (%d%f%f,&a,&b,&c);printf (a=%d,b=%f,c=%f,a,b,c);return 0; 一次运行情

45、况如下:12 345 6789 87654321 a=12,b=345.000000,c=6789.000000 注意,当从键盘上键入一串字符流后,只有键入回车时,系统才开始执行执行scanf()规定的操作。/* 文件名:ex021601.c */#include int main(void)int a;float b,c;scanf (%2d%3f%4f,&a,&b,&c);printf (a=%d,b=%f,c=%f,a,b,c);return 0;一次运行情况如下:12345678987654321 a=12,b=345.000000,c=6789.000000

46、(3)根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一数据项结束。#include int main(void)int a;char b;float c;printf (input a,b,c:n);scanf (%d%c%f,&a,&b,&c);printf (a=%d,b=%c,c=%f,a,b,c);return 0;一次执行结果为:input a b c: 1234r1234.567(带下划线者为输入流)a=1234,b=r,c=1234.567017(4)格式控制字符串中的非空白字符 在scanf()中的格式控制字符串中,除了格式说明字段中的字符外,所出现的其他字符,都必须在输入数据流时照样输入。例2.18/* 文件名:ex021801.c */#include int main(void) int a, b ; scanf(input:%d$%d,&a,&b); printf(%d,%dn,a,b); return 0;输入的情形如下:input:123$456123,456 在输

温馨提示

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

评论

0/150

提交评论