C语言程序设计教程(第4版)_第2章_基本语句_第1页
C语言程序设计教程(第4版)_第2章_基本语句_第2页
C语言程序设计教程(第4版)_第2章_基本语句_第3页
C语言程序设计教程(第4版)_第2章_基本语句_第4页
C语言程序设计教程(第4版)_第2章_基本语句_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2 2章章 基本的基本的程序语句程序语句 本章主要内容本章主要内容1. 用二进制表示的数2.基本数据类型及取值范围3.标识符、变量和常量4.基本运算符、表达式及运算的优先级5.标准输入/输出函数简介6.程序范例第2章 引言1整型数的二进制表示整型数分为有符号的和无符号的两种;有符号的整型数的正负号由字节的最高位来表示:0表示正数,1表示负数。整型数占用的字节数可为8位、16位或者32位。整型数的取值范围:2.1 用二进制表示的数字 节 数有 符 号 的无 符 号 的最 小 值最 大 值最 小 值最 大 值1128+1270255232 768+32 767065 53542 147 483

2、 648+2 147 483 64704 294 967 2952浮点数的二进制表示浮点数分成单精度浮点数和双精度浮点数;单精度浮点数占32位(4个字节),双精度浮点数占64位(8个字节)。浮点型数据的一般表达式:(1)S2em e是实际的阶码值,代表浮点数的取值范围; m是尾数,代表浮点数的精度。2.1 用二进制表示的数(1)单精度浮点型数据的字节分配空间:2.1 用二进制表示的数符号位(1位)指数位(8位)尾数(23位)31 30 23 22 0SEM S代表符号位,占1位。E称为“移码”,占8位。 E的取值范围为0255,E=127+e 因此,e的取值范围为127+128);M代表有效位

3、数或称为“小数”, m2=(1.M)2(2)双精度浮点型数据的字节分配空间:2.1 用二进制表示的数S代表符号位,占1位。E称为“移码”,占11位。 E的取值范围为02047,E=1023+e 因此,e的取值范围为1023+1024);M代表有效位数或称为“小数”, m2=(1.M)2浮点型数据的取值范围:2.1 用二进制表示的数数 据 类 型字节数(位数)阶码(e)取值范围最 小 值最 大 值单精度浮点数4字节(32位)1271285.877 47210393.402 8241038双精度浮点数8字节(64位)1 0231 0241.112 537103081.797 693103081.

4、C语言提供5种基本数据类型。(1)字符型:用char表示。(2)整数型:用int表示。(3)单精度实数型:用float表示。(4)双精度实数型:用double表示。(5)空类型:用void表示。对整数型,有四种修饰:signed(有符号) unsigned(无符号)long(长型) short(短型)数据类型决定了数据的大小、数据可执行的操作以及数据的取值范围。2.2 基本数据类型及取值范围基本数据类型及取值范围数据类型的长度和取值范围会随着机器的CPU类型和编译器的不同而不同。2.2 基本数据类型及取值范围基本数据类型及取值范围 实现环境数据类型字 节 长 度Turbo CBorland C

5、+Visual C+Dev C+GCCchar(字符型)11111short int(短整型)22222int(整型)22444long int(长整型)44444float(单精度浮点型)44444double(双精度浮点型)88888例1:验证数据类型的字节长度。见【例2-1】所示的程序:example2_1.c不同字节长度的数据类型和取值范围: 见表2-5和表2-62.2 基本数据类型及取值范围2.3.12.3.1 标识符标识符 标识符是对变量名、函数名、标号和其他各种用户定义的对象命名。建议取有实际意义的标识符来命名。标识符的第1个字符必须是字母或下划线,标识符的长度可以是一个或多个字

6、符,最长不允许超过32个字符。例如: score、number12、student_name等均为正确的标识符; 8times、price/tea、low!valume等均不为正确的标识符。注意:(1) 标识符区分大小写,score、Score、SCORE代表三个不同的标识符。(2)标识符不能和C语言的关键字相同 (3)标识符不能和用户自定义的函数或C语言库函数同名 2.3 标识符、变量和常量2.3.2 变量和常量1.1. 变量变量 其值可以改变的量称为变量。 变量的两个要素:标识符 (名字)和值。 C 语言规定:变量必须在使用之前定义。 变量定义的一般形式是: ;必须是有效的C数据类型,如:

7、int、float等,类型名规定了变量的存储空间和取值范围。 可以由一个或多个由逗号分隔的多个标识符名构成。2.3 标识符、变量和常量如: int i, j, number; unsigned int max, min; float high_value, price; double lenth, total_wieight;思考:上面各种变量的类型和他们的取值范围。2.3 标识符、变量和常量例2:运行下面的程序,了解变量的取值范围和C语言的特性。/*example2_2.c 变量的取值范围测试*/ #include main() int a=32766,b=-32766; unsigned

8、m=6553; float t=3.4e+37; printf(a=%dn,a); printf(m=%un,m); printf(“t=%en”,t); a=a+4; 2.3 标识符、变量和常量 b=b-6; m=m*10+10; t=t*10; printf(After change:n); printf(a+4=%dn,a); printf(b-6=%dn,b); printf(m*10+10=%un,m); printf(t*10=%en,t);2.2.常量常量 常量的值是不可变的。 在C语言中,有整型常量、实型常量、字符常量、字符串常量、和枚举常量等。(1)整型常量 可采用十进制、八

9、进制、十六进制来表示整型常量。 八进制数的前面用数字0开头, 十六进制数前面用数字0和字母X开头(0 x或0X) 整型常量的表示见表2-9。2.3 标识符、变量和常量例3:了解整型常量的不同进制表示法。/*example2_3.c */ #includemain() printf(十六进制0 x80的十进制值为:%dn,0 x80); printf(八进制0200的十进制值为:%dn,0200); printf(十进制128的十进制值为:%dn,128); printf(十进制128的十六进制值为:%xn,128); printf(十进制128的八进制值为:%on”,128);2.3 标识符、

10、变量和常量(2)实型常量实型常量的两种表示法:浮点计数法和科学计数法。例如:231.467.36E74.58E50.0945对太大或太小的数,通常是采用科学计数法。 如上面的7.36E7、4.58E5。2.3 标识符、变量和常量例4:了解实型常量的两种表示法。/*example2_4.c (浮点计数法,科学计数法)*/ #includemain() printf(“123.4456的浮点数表示:%6fn,123.456); printf(“1.23456E2的浮点数表示:%6fn,1.23456e2); printf(“12345.6E-2的浮点数表示:%6fn,12345.6e-2); pr

11、intf(“12345.6的科学计数法表示:%En,12345.6);2.3 标识符、变量和常量(3)字符常量 字符常量是由一对单引号括起来的单个字符。 如:A、S、9、$ 等均为字符常量。 注注1 1:单引号只起定界作用,并不代表字符。 注注2 2:单引号 ()和反斜杠()本身作为字符时要通过转义字符()。 如:和 分别代表单个字符单引号()和反斜杠()。2.3 标识符、变量和常量在C语言中,字符是按其所对应的ASCII的值来存储的,一个字符占一个字节。部分字符所对应ASCII码值如下:2.3 标识符、变量和常量字符字符0 01 19 9A AB BY YZ Za ab by yz zASC

12、II码值(十进制)484957656689909798121122字符和与之对应的ASCII详见附录B注意:注意:数字3和字符3的区别:2.3 标识符、变量和常量含义含义表达式表达式值值字节数字节数常量33占2个字节字符351占1个字节字符也可以参与运算:字符也可以参与运算:如:如:A+6;运算结果为71,对应的字符为H。87;运算结果为49,对应的字符为1。y32;运算结果为89,对应的字符为Y。例5:了解字符常量与其顺序值的关系。/*example2_5.c 字符常量与其顺序值的关系*/ #includemain() printf(%d-%cn,A,A); printf(%d-%cn,A+

13、5,A+5); printf(%d-%cn,A+70,A+70);2.3 标识符、变量和常量例5:了解字符常量与其顺序值的关系。/*example2_5.c 字符常量与其顺序值的关系*/ #includemain() printf(%d-%cn,A,A); printf(%d-%cn,A+5,A+5); printf(%d-%cn,A+70,A+70);2.3 标识符、变量和常量程序运行结果:65-A70-F135-?(4)字符串常量字符串常量是指用一对双引号括起来的一串字符。如: world, TRUE or FLASE, 8765431.0037, T 均为字符串常量。注:双引号 ()和反

14、斜杠()本身作为字符串时要通过转义字符()。 如: 和 分别代表字符串()和反斜杠()。2.3 标识符、变量和常量注意字符常量与字符串常量的区别: 在C语言中,字符串常量在内存中存储时,系统自动在字符串的末尾加一个“串结束标志”:0该结束标志的ASC码值为0,字符为空NULL。 因此,长度为n个字符的字符串常量,在内存中占有n+1个字节的存储空间。如:字符串“ World ”,共5个字符,需占用6个字节,其存储形式为:2.3 标识符、变量和常量World0(5)转义字符转义字符用反斜杠后面跟一个字符或一个八进制或十六进制数表示。 如:a,0,n等。代表ASCII字符中不可打印的控制字符和特定功

15、能的字符。表示特殊字符,如:单引号()、双引号()和反斜杠()等。常用的转义字符见表2-12。2.3 标识符、变量和常量注意 转义字符中的字母只能是小写字母,每个转义字符只能看作一个字符。 表2-12中的r、v和f对屏幕输出不起作用,但会在控制打印机输出执行时响应其操作。 在程序中,使用不可打印字符时,通常用转义字符表示。2.3 标识符、变量和常量例例6 6:了解转义字符的作用。:了解转义字符的作用。/*example2_6.c 了解转义字符的作用了解转义字符的作用*/ #includemain() printf(a); /* 发出铃声发出铃声 */ printf(This is a test

16、:n); printf(Ready:); printf(bBackspace.n); /* 往左退一格往左退一格 */ printf(tHorizontal tabn);/* 往右进八格往右进八格 */ printf(n); /* 输出输出 */ printf(?n); /* 输出输出? */ printf(n); /* 输出输出 */ printf(n); /* 输出输出 */ printf(101n); /* 输出八进制值输出八进制值101所对应的字符所对应的字符 */ printf(x41n); /* 输出十六进制值输出十六进制值41所对应的字符所对应的字符 */运行程序,观察程序的运行

17、结果。程序运行结果:This is a test:Ready:Backspace. Horizontal tab?AA2.3 标识符、变量和常量(6)符号常量将程序中的常量定义为一个标识符,称为符号常量。符号常量在使用前必须先定义,定义的形式是: #define 如:#define PI 3.1415926 #define TRUE 1 #define FALSE 0其中PI、TRUE、FLASE均为符号常量;其值分别为3.1415926,1,0。注1: #define是C语言的预处理命令;注2:习惯上符号常量用大写英文字母表示。2.3 标识符、变量和常量例7:了解符号常量的使用。/*exam

18、ple2_7.c */ #include#define WHO I am a student.#define HOW That is Fine.#define PI 3.1415926main() printf(%sn,WHO); printf(%sn,HOW); printf(%fn,PI);2.3 标识符、变量和常量程序运行结果:I am a student.That is Fine.3.141593C语言的基本表达式是由操作数和操作符组成。l操作数通常由变量或常量表示;l操作符由各种运算符表示。l一个基本表达式也可以作为操作数来构成复杂表达式。l构成基本表达式的常用运算符有:(1)算术运

19、算符。(2)关系运算符。(3)逻辑运算符。(4)赋值运算符。另外,条件运算符、自反赋值运算符、逗号运算符、指针运算符、位运算符等均可构成基本表达式。2.4 基本运算符、表达式及运算的优先级2.4.1 算术运算符及算术表达式算术运算符主要用于完成变量的算术运算。如:加、减、乘、除等。各运算符及其作用如下:2.4 基本运算符、表达式及运算的优先级运 算 符优 先 级作 用高(14)自增1(变量的值加1)自减1(变量的值减1)低(12)加法减法*中(13)乘法/除法%模运算(整数相除,结果取余数)注:此处规定优先级的数字越大,优先级越高。例8: 阅读下面的程序,了解由算术运算符组成的表达式。/*ex

20、ample2_8.c */ #includemain() int a,b,c,d1,d2,d3,d4; double x,y,z1,z2,z3; a=8; b=3; c=10;2.4 基本运算符、表达式及运算的优先级 d1=a+b*c-b/a+b%c*a; /* 复杂表达式1 */ d2=(a+b)*c-(b/a)+(b%c)*a; /* 复杂表达式2 */ d3=a/b; d4=c%b; printf(d1=%d, d2=%d, d3=%d, d4=%dn, d1,d2,d3,d4); x=3.2; y=2.4; z1=x+y/x-y; /* 复杂表达式3 */ z2=(x+y)/(x-y)

21、; /* 复杂表达式4 */ z3=y/b; printf(z1=%f, z2=%f, z3=%fn,z1,z2,z3); 程序运行结果:d1=62, d2=134, d3=2, d4=1z1=1.550000, z2=7.000000, z3=0.8000001.分析例8程序中存在的问题。2.修改例8的程序,提高程序的可读性。3.运行例2-9的程序,观察表达式及程序的运行结果。2.4 基本运算符、表达式及运算的优先级思考思考关于前置+/和后置+/的作用 前置+或前置表达式: +; 先将变量的值加1,再使用变量。 ; 先将变量的值减1,再使用变量。后置+或后置表达式: +; 先使用变量,再将变

22、量的值加1。 ; 先使用变量,再将变量的值减1。2.4 基本运算符、表达式及运算的优先级例9:阅读程序example2_10.c,了解前置+/-和后置+/的作用。2.4 基本运算符、表达式及运算的优先级1.+/-运算符适合于什么数据类型?2.表达式+a和a+有什么区别?3.表达式b=a+还可以怎样表达?4.+/-能否用于常量表达式?思考思考注意+/-运算符在不同环境下的区别。例10:阅读程序example2_11.c。了解前置+/-和后置+/作为函数参数时的作用。2.4 基本运算符、表达式及运算的优先级1.为什么程序的运行结果会有不同?2.程序设计应遵循什么原则?3.修改程序,使其具有更好的可

23、读性。4.分析修改后的程序:example2_12.c。思考思考不同形式的程序表达式的含义:比较程序example2_13.c和example2_13a.c2.4 基本运算符、表达式及运算的优先级注意2.4.2 关系运算符及关系表达式关系运算符的作用:用于条件判断的表达。关系运算符及其含义和优先级如下:2.4 基本运算符、表达式及运算的优先级关系运算符含 义优 先 级小于高(10)大于等于低(9)!=不等于小于等于高(10)大于等于关系表达式的结果只有两个: (1) 真(值为1) (2) 假(值为0)假如有: int a,b; a=(230) b=(23-9) = (18-6);则:变量a的值

24、为1,变量b的值为0。2.4 基本运算符、表达式及运算的优先级2.4.3 逻辑运算符及逻辑表达式逻辑运算符的作用:用于判断条件中的逻辑关系。逻辑运算符及其含义和优先级如下:2.4 基本运算符、表达式及运算的优先级逻辑运算符含 义优 先 级!逻辑非高(14)&逻辑与中(5)| |逻辑或低(4)逻辑表达式的结果: 真(值为1) 假(值为0) (注:非零值均为真)逻辑运算规则:2.4 基本运算符、表达式及运算的优先级ABA&BA|B!A真真真真假真假假真假假假假假真假真假真真1.由关系运算符和逻辑运算符可组成复杂逻辑表达式。 如:(ab) & !(c-d) | (a=5) 2.对于复杂逻辑表达式,要

25、注意C语言的特殊语法规则。2.4 基本运算符、表达式及运算的优先级特别提示(1)(表达式表达式1) | (表达式表达式2) 语法规则 若:(表达式1)的值为真, 则:(表达式1) | (表达式2)的结果就为真。 特点:系统对(表达式2)不会进行计算,但会检查其语法错误。 结论:与(表达式2)的结果无关。 例如: int a=4,b=8,c; c=(ab)&(+a); printf(“c=%d, a=%dn”,c,a); 程序运行结果为:c=0,a=4。2.4 基本运算符、表达式及运算的优先级例11:阅读下面的程序,分析复杂逻辑表达式运算的语法规则。/*example2_14.c */ #inc

26、ludemain() int a=4,b=8,c=5; int d1,d2,d3,d4; d1=(ab-); /* 表达式(1) */ printf(d1=%d, a=%d, b=%d, c=%dn,d1,a,b,c); d2=(ab)&(+a=5)|(cb-); /* 表达式(2) */ printf(d2=%d, a=%d, b=%d, c=%dn,d2,a,b,c); d3=(ab-); /* 表达式(3) */ printf(d3=%d, a=%d, b=%d, c=%dn,d3,a,b,c); d4=(ab)&(+a=5)&(cb-); /* 表达式(4) */ printf(d4=

27、%d, a=%d, b=%d, c=%dn,d4,a,b,c);1.分析程序的运行结果。2.如果有: int a=4,b=8,c=5; int d1,d2,d3,d4; d4=(ab-); 则:d4,a,b,c的值分别为多少?提示:要避免含义不明确的表达式。2.4 基本运算符、表达式及运算的优先级思考2.4.4 位运算符及表达式位运算的作用:直接对变量的二进制按位进行操作。 注意:位运算只适合于整型和字符型变量。位运算符及其含义和优先级如下:2.4 基本运算符、表达式及运算的优先级位 运 算 符含 义优 先 级按位取反高(14)&位与低(8)位异或低(7)|位或低(6)位右移位运算规则:2.4

28、 基本运算符、表达式及运算的优先级ABA|BABA&BAB11101001011001000001101110102.4.5 条件运算符条件运算符条件运算符由“?”和“:”组成。条件表达式的一般形式: 表达式1? 表达式2:表达式3;条件表达式的语法规则: 当表达式1的值为1(真)时,其结果为表达式2的值; 当表达式1的值为0(假)时,其结果为表达式3的值。注意:注意: 表达式1通常是关系表达式或逻辑表达式,也可以是其他表达式。条件运算符又称为三目运算符,“三目”指的是操作数的个数有3个。2.4 基本运算符、表达式及运算的优先级例12:阅读下面的程序,了解三目运算符组成的表达式计算规则。/*e

29、xample2_15.c 了解三目运算符的语法规则*/ #include #include main() int a=3,b=5,c; c=(ab)?(a+b):(a-b); printf(The max value of a and b is: %dn,c); a=6; b=2; c=(ab)?(a-b):(a+b); printf(The max value of a and b is: %dn,c);请分析程序的运行结果。2.4 基本运算符、表达式及运算的优先级2.4.6 逗号表达式逗号表达式由逗号运算符“,”将两个表达式连接起来: 表达式1,表达式2;逗号表达式的语法规则:语法规则:

30、先计算表达式1,再计算表达式2; 最后结果为表达式2的结果。2.4 基本运算符、表达式及运算的优先级例13:了解逗号表达式的语法规则。/*example2_16.c 了解逗号表达式*/ #include main() int a,b; a=3*5,a*4; b=(3*5,a*4); printf(a=%dnb=%dn,a,b);请分析程序的运算结果。2.4 基本运算符、表达式及运算的优先级1逗号表达式可以扩充到具有n个表达式的情况: 表达式1,表达式2,表达式n; 整个逗号表达式的结果为表达式整个逗号表达式的结果为表达式n的值。的值。2通常是用逗号表达式来分别求逗号表达式内各表达式的值,并不是

31、为了求整个逗号表达式的值。3变量定义中出现的逗号和在函数参数表中出现的逗号不构成逗号表达式。4.逗号表达式有可能降低程序的可读性,请谨慎使用。2.4 基本运算符、表达式及运算的优先级几点说明请阅读程序example2_17.c,进一步了解逗号表达式。2.4.7 数据类型的转换数据类型的转换C语言允许表达式中混合有不同类型的常量和变量。1. 系统自动转换容易出现意外结果。假设有:s=a+t; b=a+t;结果为:s=6.7,b=6,原因:数据类型不一致,有可能产生数据丢失。应避免出现数据类型不一致的表达式。2.4 基本运算符、表达式及运算的优先级2.强制转换数据类型强制转换表达式: (数据类型符

32、)表达式; 或: (数据类型符)变量;强制转换语法规则: 将表达式或变量的值临时临时转换成圆括号内指定的数据类型。但不改变不改变变量原来的数据类型。假设有: int a ; float t ; a=15; t=(float) a/30;结果为:t=0.5,若表达式为t=a/30,则结果为:t=0。2.4 基本运算符、表达式及运算的优先级2.4.8 复杂表达式的计算顺序 C语言共有各类运算符47个,按优先级可分为11个类别共15个优先级。运算符的优先级与运算方向:表2-102.4 基本运算符、表达式及运算的优先级例13:阅读程序,分析复杂表达式的计算顺序。/*example2_18.c 复杂表达

33、式的计算顺序*/ #include main() int a=10,b=15,c=14,temp; temp= a+6b & b-cc; /* */ printf(a+6b & b-cc= %dn,temp); temp=!a+b*c-b/a & b-a*!(c-a); /* */ printf(!a+b*c-b/a & b-a*!(c-a)= %dn,temp);请分析表达式和表达式的结果。指出程序的不足,修改程序。2.4 基本运算符、表达式及运算的优先级2.4.9 C语言的基本语句结构C语言的语句可分为四大类:1表达式语句2复合语句3控制语句4转向控制语句2.4 基本运算符、表达式及运算的

34、优先级1表达式语句表达式语句一个独立的语句就是表达式语句。如:a=3*b-c/2;i-;+j:b=(a3)? 1:0;2复合语句复合语句由一对花括号“ ”将多个表达式语句括起来所组成。如: a=b+c; x=y%a; prinft(a=%d, x=%dn, a, x);3控制语句控制语句由控制结构组成的语句,有5种控制语句:(1)选择(分支)语句:ifelse。(2)多分支语句:switch。(3)for循环语句:for。(4)while循环:while。(5)do_while循环:dowhile。4转向控制语句转向控制语句由系统提供的关键字构成,用于改变程序的流程。 有4种转向控制语句:(1

35、)break;可用于switch语句和循环的语句。(2)continue;只适用于循环语句。(3)return;用在函数的结束处。(4)goto;可用于程序的任何地方,但不提倡使用。C语言的输入/输出的操作是通过调用系统函数来实现。常用的标准输入/输出函数有如下几种。(1)格式化输入/输出函数:scanf()/printf()。(2)字符输入/输出函数:getc()/putc()。(3)字符输入/输出函数:getch()/putch()。(4)字符输入/输出函数:getchar()/putchar()。(5)字符串输入/输出函数:gets()/puts()。不同的函数在功能上有所不同,使用时应

36、根据具体的要求,选择合适的输入/输出函数。2.5 标准输入标准输入/输出函数简介输出函数简介2.5.1 格式化输出函数printf( )函数printf( )的一般形式为: printf(控制字符串,输出项列表);函数printf( )的作用: 按控制字符串指定的格式,向标准输出设备(显示器)输出指定的输出项列表的值。注意:(1)可以是常量、变量、表达式。当有多个输出项时,各项之间用逗号分隔。(2)中的个数、类型必须与中格式字符的个数、类型相一致。(3)必须用双引号将括起,可由格式说明和普通字符两部分组成。2.5 标准输入标准输入/输出函数简介输出函数简介1格式说明格式说明格式说明的一般格式为

37、: % 格式字符规定了对应输出项的输出格式。注: 在格式字符前面,还可用字母1和h(大小写均可)来说明是用long型或short型格式输出数据。常用格式字符如表2-21所示。如:%d,%c,%f,%Lf,%s等均为正确的输出格式说明。2.5 标准输入标准输入/输出函数简介输出函数简介修饰符是可选的,用于确定数据输出的宽度、精度、小数位数、对齐方式等。若缺省修饰符,按系统默认设定输出。修饰符的主要类型:(1)字段宽度修饰符 用数字修饰输出字符占用的宽度,规则见表2-22。如:%3d,%4c,%5.2f,%8Lf,%6s等均为正确的输出格式说明。(2)对齐方式修饰符 默认输出方式为右对齐方式。 在

38、%后面加上一个负号“”,可使数据的输出方式改为左对齐的方式。如:%-3d,%-4c,%-5.2f,%-8Lf,%-6s等均为正确的输出格式说明。2.5 标准输入标准输入/输出函数简介输出函数简介2普通字符普通字符普通字符包括可打印字符和转义字符。可打印字符按原样显示在屏幕上,起说明作用。转义字符是一些不可显示的控制字符,用于产生特殊的输出效果。如:“ s=%4dt%7.4fnt%lun” 为正确的输出格式。阅读程序【例2-19】、【例2-20】、【例2-21】 。 了解格式输出的方法。2.5 标准输入标准输入/输出函数简介输出函数简介2.5.2 格式化输入函数scanf()函数scanf()的

39、一般形式为: scanf(控制字符串,输入项列表);函数scanf()的作用: 按控制字符串指定的格式,从键盘输入数据,并将输入的值赋给输入项列表相对应的变量。 注意:(1)规定了数据的类型,其内容也可由格式说明和普通字符两部分组成。(注:不提倡加普通字符)(2)则由一个或多个变量地址组成,各变量地址之间用逗号“,”分隔。如有:int a,b;则:&a,&b就可以是一个2.5 标准输入标准输入/输出函数简介输出函数简介输入数据时,可用空格符、表格符(tab)和换行符(enter)作为每个变量输入完毕的标志。以换行符作为数据输入的结束。1格式说明格式说明格式说明规定了输入项中各变量的数据类型。格

40、式说明的一般形式: %注意: 格式字符的表示方法与printf()中的相同,各格式字符及其意义如表2-23所示。2.5 标准输入标准输入/输出函数简介输出函数简介修饰符是可选的,主要有下面几种:(1)字段宽度)字段宽度字段宽度用数字表示,其作用是限定输入的字符宽度。如:scanf(%3d, &a);则:变量a的宽度只占3个字符,有效值范围为:99999。若超过宽度,系统会截断,只取前3位。假如有: int a,b; scanf(%d%3d,&a,&b); printf(a=%dtb=%dn,a,b);若输入为: 123412345则系统会将1234赋给变量a,将12345的前3位的值123赋给

41、变量b。输出结果为: a=1234b=1232.5 标准输入标准输入/输出函数简介输出函数简介(2)l和和h字母(L,l)和(H,h)分别表示输入数据类型的长短。(L,l) 可表示长整型、双精度浮点型。(H,h) 可表示短整型数。如: scanf(%10ld%hd%lf, &a, &b,&x);则:a按宽度为10的长整型数,b为短整型数,x为双精度浮点型数。(3)字符)字符“*”*的作用是跳过相应的数据。输入的数据不赋给变量。假如有:int x=0,y=0,z=0; scanf(%d%*d%d,&x, &y, &z);若输入为:11 22 33则结果为:x=11,y=33,z=0(z保持原来的

42、值不变,22被跳过,没有赋给任何变量。)2.5 标准输入标准输入/输出函数简介输出函数简介2普通字符普通字符普通字符包括空白字符、转义字符和可见字符。注意:如果有普通字符,则输入时需要原样输入。特别提示: 在输入格式的修饰符中,不建议使用普通字符。普通字符的类型:(1)空白字符:空格符、制表符或换行符都是空白字符,但它们的ASCII值是不一样的。空白字符的作用:对输入的数据起分离作用。2.5 标准输入标准输入/输出函数简介输出函数简介 若输入的数据中含有字符型的数据时,需要作一些技术处理,否则有可能出错。例如:int a; char ch; scanf(%d%c,&a, &ch);若输入为:6

43、4q则结果为:ch= ,a=64, 注:结果并不是 ch=q,a=64思考:思考:怎样改进?可使得结果为:怎样改进?可使得结果为:ch=q,a=642.5 标准输入标准输入/输出函数简介输出函数简介注意(2)转义字符:n、t转义字符属空白字符,对输入的数据不产生影响。(3)可见字符可见字符是指ASCII码中所有通过键盘输入的可见字符。如数字、字母、其他符号等。注意: 若输入格式中含有可见字符,则实际输入要“原样输入”。假如有:int a,b; char ch; scanf(%d,%d,%c,&a, &b, &ch);若输入为:12,34,q则结果为:a=12,b=34,ch=q思考:若输入为:

44、12,34,q 则结果会怎样?2.5 标准输入标准输入/输出函数简介输出函数简介1要注意数值型数据和字符型数据的取值特点。 若要同时输入这两种类型的数据,可采取先输入字符型数据,后输入数值型数据,以减少错误的发生。2建议在scanf()语句中不要加入可见字符。避免错误的发生。2.5 标准输入标准输入/输出函数简介输出函数简介特别提醒2.5.3 字符输出函数字符输出函数C语言专门为字符提供了专用的字符输出函数。(注:对不同的编译器,它们所在的头文件有可能不同。)常用的字符输出函数:表2-242.5 标准输入标准输入/输出函数简介输出函数简介函 数 原 型函 数 功 能int putc(int ch,FILE *stream);将ch所对应的字符输出到stream指定的文 件流中(stdou

温馨提示

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

评论

0/150

提交评论