【教学课件】第三章数据、运算与基本输入输出.ppt
,数据、运算与基本输入输出,共 73 页 第 2 页,第三章 数据、运算与基本输入输出,基本数据类型与特点 各种数据类型表示范围 常量的表示方法 变量说明语句 运算符与基本运算规则 基本输入输出函数使用方法,本 章 要 点,共 73 页 第 3 页,第三章 数据、运算与基本输入输出,第一节 数据与数据类型第二节 常量与常量定义第三节 变量与变量说明第四节 基本运算第五节 运算符的优先级与结合性第六节 数据类型转换第七节 数据的输入与输出第八节 综合举例,共 73 页 第 4 页,3-1 数据与数据类型,数据 程序加工处理的对象及其结果数据类型 数据在计算机内部的存储形式(占用的内存单元数量、编码方式、取值范围等)常量 在程序运行过程中不允许改变的量变量 在程序运行过程中允许改变的量,一、基本概念,共 73 页 第 5 页,3-1 数据与数据类型(续),二、C语言的数据类型,基本类型,字符型 char整型 int浮点型,单精度 float双精度 double,指针类型,构造类型,数组结构 struct联合 union枚举 enum,无值类型,本章,数组,结构,指针类型,函数,共 73 页 第 6 页,3-1 数据与数据类型(续),C语言基本数据类型有四种:字符型整型单精度浮点型双精度浮点型,charintfloatdouble,类型说明符,三、C语言的基本数据类型,C语言有四种类型修饰符:短长有符号无符号,shortlongsignedunsigned,类型修饰符,注意:类型修饰符不能单独使用,必须与类型说明符配合在一起使用,C语言采用类型说明符说明不同的数据类型,共 73 页 第 7 页,3-1 数据与数据类型(续),基本数据类型的数据存储格式和取值范围:类型 占用内存单元 取值范围 数据存储格式 char 1(8位)0 255 ASCII码 int 2(16位)-32768 32767 二进制补码 float 4(32位)3.4*10-383.4*1038 7位有效数字 double 8(64位)10-308 10308 15位有效数字,四、基本数据类型的数据表示与取值范围,无法表示全体实数,保存字符对应的ASCII码,-215,1000,0000,0000,0000,215-1,0111,1111,1111,1111,float:尾数24位+阶数8位 double:尾数52位+阶数12位,共 73 页 第 8 页,3-1 数据与数据类型-int,int型数的表示范围:二进制 16bit(2Byte),0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,=1,=3,int型整数的最大值,int型表示数的范围:-32768 32767,例 2_202,1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,注意:使用中要防止数据溢出,=-1,int型整数的最小值,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,=215-1=32767,=-215=-32768,返回,共 73 页 第 9 页,3-1 数据与数据类型-int,main()int i;i=1;i=i*2;printf(”n i=%d”,i);i=i*3;printf(”n i=%d”,i);i=i*4;printf(”n i=%d”,i);i=i*5;printf(”n i=%d”,i);i=i*6;printf(”n i=%d”,i);i=i*7;printf(”n i=%d”,i);i=i*8;printf(”n i=%d”,i);i=i*9;printf(”n i=%d”,i);i=i*10;printf(”n i=%d”,i);,期望结果 i=2i=6i=24i=120i=720i=5040i=40320i=362880i=3628800,实际运行结果 i=2i=6i=24i=120i=720i=5040i=-25216i=-30336i=24320,产生数据溢出,上溢,下溢,返回,例C2_202,共 73 页 第 10 页,3-1 数据与数据类型-float,返回,有效数字的意义?,二进制 7位,二进制 23位,单精度实型,尾数,阶码,2-23=|尾数|=1-2-23,0.000,000,12=|尾数|=0.999,999,88,例C2_203,数的范围的意义?,2-128=|阶码|=2127,2.9*10-39=|阶码|=1.7*1038,尾数的符号位,阶码的符号位,共 73 页 第 11 页,3-1 数据与数据类型(续),加修饰符数据类型的数据存储格式和取值范围:short int int shortsigned int short int short 类型 占用内存单元 取值范围 unsigned int 2字节 0 65535long int 4字节-2147483648 2147483647unsigned long 4字节 0 4294967295,-231,231-1,216-1,232-1,共 73 页 第 12 页,3-2 常数与常数定义,整型常量(3种形式)10进制 8进制16进制实型常量(2种形式)十进制 指数 字符常量字符串常量,一、常数,:0 9,整型常量实例,:0 7 以数字0开头,:0 9,AF/af,以0 x或0X开头,:符号、整数、小数点和小数,:用e或E和表示指数部分,实型常量实例,字符常量,字符串常量,共 73 页 第 13 页,3-2 常数与常数定义-整型常数实例,整型常量的不同表示方法:10进制:100-8 0+123 8进制:010 024 0100 16进制:0 x38 0 x10 0X10 0XFF 0 xa整型常量的类型:1.在整型表示范围之内,根据值大小默认类型 2.在常量后面加l或L,则认为它是long int型 例如:都是long int型常量 10进制:-123L 0L 432l 8进制:010L 024L 0100L 16进制:0 x38L 0 x1000L 0XFFl x0a0000l,返回,共 73 页 第 14 页,3-2 常数与常数定义-实型常数实例,实型常量的不同表示方法:10进制:1.0 1.+12.0-12.0 0.0 指数:1e3 1.8e-3-123e-6 等价于:1000 1.8*10-3-123*10-6 指数:-.1e-3.1E-10 等价于:-0.1*10-3 0.1*10-10,返回,共 73 页 第 15 页,3-2 常数与常数定义-字符常数,字符型常量:用单引号括起来的单个字符 实例:A g#0 2+,;()字符定界符:单引号 字符型数据的存储格式:ASCII码(见书附录)65 103 35 48 50,返回,如何表示不可显示字符?,回车/退格/TAB?,如何表示定界符?,产生歧异,转义符:将后面的字符转换为其它含义,共 73 页 第 16 页,3-2 常数与常数定义-转义符常数,字符形式 功能 使用举例 0 字符串结束标志 n 换行(ASCII码为10)printf(”n”);t 横向跳格 printf(”t”);b 退格 r 回车(ASCII码为13)f 走纸换页 字符(ASCII码为92)表示字符 单引号 表示字符”双引号”表示字符”ddd 用8进制表示字符 a=141 A=101 换行符 12 xhh 用16进制表示字符 a=x61 A=x41 换行符 xa,返回,共 73 页 第 17 页,3-2 常数与常数定义-字符串常数,字符串常量:用双引号括起来的字符序列 实例:”This is C string.”a”(1个空格)”(不含空格)串定界符:双引号”字符串长度:字符串中包含的字符数量。,返回,串长=17串长=1串长=1串长=0,tNameAddressn,串长=15,空串,实例:,C is very easy.,串长=17,注意:字符串a 与 字符a 的区别,He saidok.n,串长=13,共 73 页 第 18 页,3-2 常数与常数定义,常量定义形式#define 标识符 常量 用定义的一个标识符来代表一个常量,称为符号常量#宏命令专用定义符号define 命令 标识符宏替换名(一般采用大写字符),二、常数定义与符号常量,常量定义实例,注意:符号常量与变量不同,它的值在程序运行过程中不能改变,也不能重新赋值。,共 73 页 第 19 页,3-2 常数与常数定义-常量定义实例,常量定义实例#define ONE 1#define PAI 3.1415926#define TV”television”#define MAX 10#define TWO ONE+ONE使用方法 a=8+2;printf(”%s”,”television”);s=3.14159*r*r;int array10;,返回,a=b+TWO;printf(”%s”,TV);s=PAI*r*r;int arrayMAX;,共 73 页 第 20 页,3-3 变量与变量说明,变量:在程序运行过程中允许改变的量变量的说明格式:类型修饰符 类型说明符 变量列表;例如:int i;char ch,str;long k=1,m=0 x12345678;double x,y=1;变量说明意味着确定了:该变量 占用内存单元的数量,数据在内存的表示方式,数据的取值范围。,一、变量说明的基本概念,共 73 页 第 21 页,3-3 变量与变量说明,变量的3个属性:变量名称:编程时使用(进行编程)变量的值:程序运行时使用(进行运算)变量地址:程序运行时,要将变量的值保存在计算机的存储单元中,每个存储单元都有唯一的内存地址。变量在内存中占据的存储单元的地址就是变量的地址。指针:变量的地址一般变量:存储变量的值指针变量:保存变量地址的变量,二、指针与指针变量,共 73 页 第 22 页,3-3 变量与变量说明,指针变量说明:数据类型*变量名;例:有变量说明语句:char c=A;若变量c在内存中对应的地址为1000;*变量名称:c,类型为char,占用1个字节*变量c的值:字母A*变量c的地址:1000若有:char*pc;则称指针变量pc是char型指针pc=/*&取c的地址*/则称指针变量pc指向变量c,共 73 页 第 23 页,3-3 变量与变量说明,变量在说明之后,没有固定的初始值,要先赋值(给定一个初始值),后使用。变量赋初值 将变量说明与赋初值合一,在说明变量时同时完成。实例char cc=a,dd=n;int x=10,y=-10,z;double try=28.5,w=1e10;,三、变量赋初值,共 73 页 第 24 页,3-4 运算符,一、运算符简介,按运算类型分类 1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.赋值与赋值组合运算符 6.自增自减运算符 7.条件运算 8.指针运算 9.其它运算符按运算对象的数目分类 单目运算 双目运算 三目运算,目:进行运算时需要的操作数的数量,共 73 页 第 25 页,3-4 运算符-算术运算,一、算术运算符,运算符(双目运算符/单目运算符)+加法运算 12 正值运算 14-减法运算 12 负值运算 14*乘法运算 13/除法运算 13%求余运算 13优先级:*/%同级(高),+-同级(低)结合性:相同优先级运算符进行运算时的次序 自左向右(标记为),共 73 页 第 26 页,3-4 运算符-算术运算实例,1.参加运算的对象都是int型,结果截取为int型 10/311/310.0/3 11/3.1/21./210/5*310/(5*3),2.求余运算的对象必须是整型 9%31%310%310%-3-10%3-10%-3,=3,=3,=3.3333,=3.66667,=0,=0.5,=6,=0,=0,=1,=1,=1,=-1,=-1,共 73 页 第 27 页,3-4 运算符-关系运算,二、关系运算符,运算符(双目运算符)大于 10=大于等于 10=同级(高),!=同级(低)关系运算的结果应该为逻辑型“真”或“假”C语言中没有逻辑型,将逻辑型数值化处理,用整型1表示“真”,用整型0表示“假”。,共 73 页 第 28 页,3-4 运算符-关系运算实例,实例 逻辑表达式 75 的值是 1,57 的值是 0。已知:int a=13,b=2,c=1;abab)=cab=ca-b=c,成立,结果为 1不成立,结果为 0成立,结果为 1不成立,结果为 0结果为 1与上面等价,结果为 1等价于(a-b)=1,结果为 0,?,如何判断数学中的逻辑关系:0a9?0=a=9,等价于(0=a)=9,结果恒为1,共 73 页 第 29 页,3-4 运算符-逻辑运算,三、逻辑运算符,运算符&逻辑与(双目)5()逻辑或(双目)4()!逻辑非(单目)14()逻辑运算关系,逻辑运算真值表,共 73 页 第 30 页,3-4 运算符-逻辑运算,式2(y b)&(y a),1 结果,2 结果,例:要判断 0 x 9 是否成立:(0=x)&(x=9)如果没有括号:0=x&x=9 等价,结果 结果,实例:比较下列两个逻辑表达式的执行过程 式1 y b&y a,共 73 页 第 31 页,3-4 运算符-位运算,四、位运算符,运算符 按位右移(双目)11()按位左移(双目)11()&按位与(双目)8()按位异或(双目)7()按位或(双目)6()按位反(单目)14(),共 73 页 第 32 页,实例:已知:int x=7,y=10,z=1;设字长为8位 x&y=x&z=x y=y z=x y=x=x=x2=x2=,2(0000 0111&0000 1010=0010)1(0000 0111&0000 0001=0001)15(0000 0111 0000 1010=1111)11(0000 1010 0000 0001=1011)13(0000 0111 0000 1010=1101)8(0000 0111)=1111 1000 7 28(0000 0111 2=0000 0010)1(0000 0111 2=0000 0001),3-4 运算符-位运算,共 73 页 第 33 页,说明 关于:右移一位=缩小 1/2 关于:左移一位=扩大 2 倍 关于:因为:x=按位求反=求反运算 求负=求补=求反+1 所以:求反=求负 1 x=-x-1 7=8(8)=7注意:1.位运算是对二进制的位进行运算 2.只能对int型、char型和long型进行位运算,3-4 运算符-位运算,共 73 页 第 34 页,3-4 运算符-自增自减运算,五、自增自减运算符,运算符(单目)+自增 14 自减 14+和 为单目运算,只能作用于变量只能对int、char、long和指针变量进行运算功能:+x x=x+1 x x=x1(前缀)x+x=x+1 x x=x1(后缀),共 73 页 第 35 页,3-4 运算符-自增自减运算,自增(自减)有前缀和后缀之分。前缀形式:先自增(自减)再引用 后缀形式:先引用再自增(自减)前缀与后缀的区别:y=+x;x=x+1;y=x;x先加1再赋值 y=x+;y=x;x=x+1;x先赋值再加1,共 73 页 第 36 页,3-4 运算符-自增自减运算实例,实例(1)+i;i+;因为在表达式中没有其它运算,结果一样。(2)x=1;y=+x;结果:x=2,y=2 y=+x;x=x+1;y=x;在做赋值运算之前,x先加1,然后将x赋给y(3)x=1;y=x+;结果:x=2,y=1 y=x+;y=x;x=x+1;先将 x 赋值给 y,然后 x 再加1,共 73 页 第 37 页,x=3,z=3 x=3,y=6,z=3*6=18 x=3,y=6,z=2*6=12 x=3,y=6,z=3*5=15 x=3,y=6,z=2*5=10 x=4,z=4*4=16 注意,以下操作是错误的:x=+(i+j)+1;j=+(5+x);y=+x*+x;,3-4 运算符-自增自减运算实例,实例 已知:int x=2,y=5,z;z=+x;z=+x*+y;z=x+*+y;z=+x*y+;z=x+*y+;z=+x*+x;,逻辑上虽然正确,但在实际编程中容易产生误解,应当避免,共 73 页 第 38 页,3-4 运算符-自增自减运算实例,实例 已知:int i=1,j=2,k;k=i+j;C语言处理运算符(标识符)时,遵循自左向右的原则,两个+号是一个运算符,故处理成:(i+)+j。k=i+j;不能编译通过。原因是编译器将前两个+处理成自增,接下来又将两个+号处理为自增,故不符合语法。编程者可用空格或括号来表示正确的含义:k=i+j;注意:一般不要用这样的语句。,共 73 页 第 39 页,3-4 运算符-赋值与赋值组合运算,六、赋值与赋值组合运算符,运算符(双目)赋值运算:=2赋值组合运算:e1 op=e2 2 等于于:e1=e1 op(e2)其中:op为下列10个运算符之一+*/%|,共 73 页 第 40 页,3-4 运算符-条件运算,七、条件运算符,运算符(三目)e1?e2:e3功能:如果表达式e1成立(e1值为非0),则执行表达式e2;否则(表达式e1不成立),执行表达式e3,例:max=(ab)?a:b;求变量a与b的最大值 min=(ab)?a:b;求变量a与b的最小值,共 73 页 第 41 页,3-4 运算符-指针运算,八、指针运算符,运算符(单目)&取变量的地址 14*取指针变量(所指向)的内容 14注意:运算符&和“位与”运算是同一符号;运算符*和“乘”运算是同一符号。只能从程序的上下文来区分运算符&和运算符*的实际意义。,共 73 页 第 42 页,3-4 运算符-指针运算实例,实例:已知:int x=2,y,*px;x为一般变量,px为指针型变量,y=x*100;*px=y*10;+x;x+;,px=取变量x的地址赋值给指针px 又称为让px指向变量x,x=10;,若px已经指向x,则可以用*px 代替变量 x,10,*px=10;也称为间接访问,y=*px;取指针px的内容 y=*px*100;x=y*10;+*px(*px)+;括号不能省略,y=x;,共 73 页 第 43 页,3-4 运算符-其它运算,九、其它运算符,运算符.取结构/联合的成员15 通过指针取结构/联合的成员 15()改变表达式中的优先级关系 15 数组下标 15,逗号,表达式从左向右顺序计算 1(type)e 将e的数据类型强制转换为type 14 sizeof(opr)求opr所占用的内存的字节数14,结构,数组,共 73 页 第 44 页,3-4 运算符-其它运算实例,实例:已知:int x,y,z;y=(x=10,x+1);答案:先执行x=10,然后再执行y=x+1 y=11,x=10 z=sizeof(int);答案:z=2 求int型数据占用的内存字节数量 z=sizeof(x);答案:z=2 求变量x占用的内存字节数量,共 73 页 第 45 页,3-5 运算符的优先级与结合性,按运算符的优先级分为15级按运算符的结合性分为2种自左向右结合 自右向左结合优先级不同时:运算符优先级的高低决定了进行运算的先后次序。优先级相同时:同优先级运算符的运算次序由结合性决定。例如:四则运算中的“先乘除,后加减”反映了运算符的优先级;“同级运算从左至右”反映了乘/除运算(加/减运算)的结合性。,共 73 页 第 46 页,3-5 运算符的优先级与结合性,运算符优先级表,共 73 页 第 47 页,3-5 运算符的优先级与结合性-实例,已知:int a=8,b=5,c=2;计算下列表达式结果 a/b*b a%b*c a*c 2 a&c&b a|b&c(a 3)b a?a*c:a%c,5先/后*6先%后*4先*后 0先&后&8先&后|先 后 00001000=111101113=1111 1110=0000 000116先 再 再?:,共 73 页 第 48 页,#define PRINT(x)printf(%dn,x)main()int x=3,y=2,z=1;x=y+=x,/*先算y=x结果为0,则不再 算&之后的表达式x-y=+z。将结果赋给x,最后执行y+1*/*x=0,y=3,z=1*/*先算x+(z+2),3赋给z,再执行y*=z*/*x=0,y=9,z=3*/*x先减1结果为0,则跳过&+y不执行,与z进行逻辑或运算,再执行z+,输出结果:1*/*x=0,y=1,z=2*/*/*/*/*/*/*x=0*/,实例,例C2_4003,共 73 页 第 49 页,#include main()int x,y,z;x=1;y=1;z=0;x=x,&优先级高,先计算x&y,结果为1由于是|运算,故不再计算 1|z。x=1|优先级最低,x=1,不再计算|右边的算式,y和z不变 y=1,z=0+为后缀,先将x-1的值赋给z,再计算x+x=2,z=0等价于z+=(-(x+)+(+y)x=3,z=0,y=2,实例,例C2_4002,共 73 页 第 50 页,3-6 数据类型转换,不同数据类型的数据/变量进行混合运算时,需要进行数据类型转换转换方式有两种:“显式的”类型转换“隐式的”类型转换“显式的”类型转换采用强制类型转换运算符(type)“隐式的”类型转换是语言按照一定的类型转换规则自动进行的转换,共 73 页 第 51 页,3-6 数据类型转换,“隐式的”类型转换规则 1、运算中将所有char型数据都转换成int型,float型转换成double型。2、低级类型服从高级类型,并进行相应的转换double floatlongunsignedint char,3、赋值运算以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应的转换。,共 73 页 第 52 页,3-6 数据类型转换-实例,例:int a,j,y;float b;long d;double c;则:y=j+a+a*b-c/d;其运算次序和隐含的类型转换为:计算a*b,运算结果为double型。再计算c/d,结果为double型。计算j+a,结果为整型。将第1步和第3步的结果相加,结果为double型用第4步结果减第2步结果,结果为double型给y赋值,先将第步的结果double型转换为整型(因为赋值运算左边变量y为整型),截掉double型数据的小数部分,压缩成int型。,共 73 页 第 53 页,3-7 数据的输入与输出,输入是指用户借助计算机的输入设备将数据输入到计算机中。常见的输入设备是键盘、鼠标输出是指从计算机内部将数据输送到用户指定的外部输出设备常见的输出设备如显示器、打印机、绘图仪等语言通过标准输入/输出库(I/O库)提供的函数完成输入/输出功能,共 73 页 第 54 页,3-7 数据的输入与输出-字符输入函数getchar,调用形式:c=getchar()功能:从标准输入设备(键盘)上取一个字符作为函数值返回。例:#include stdio.h main()char c;c=getchar();putchar(c);/*输出字符变量c的值*/运行程序,如果从键盘输入:aENTER则输出为:a如果从键盘输入:abcENTER则输出也为:a,共 73 页 第 55 页,3-7 数据的输入与输出-格式输入函数scanf,调用形式:scanf(”控制字符串”,参数1,参数2,参数n)其中:控制字符串也称为格式说明串,它用于描述变量的输入方式,格式说明的形式是:附加格式说明符 格式转换字符附加格式说明符部分可以缺省。功能:从标准输入设备上读取输入数据,按格式说明的描述将读入的数据赋于相应的参数。参数部分的每个参数,若为一般变量,要在变量名前加“,共 73 页 第 56 页,3-7 数据的输入与输出-格式输入函数scanf,格式转换字符 说 明 d 输入十进制整数 o 输入八进制整数 x 输入十六进制整数 c 输入单个字符 s 输入字符串 f 输入实数,可为小数形式或指数形式附加格式说明符 说 明 l 用于输入长整型数据及double型数据 h 用于短整型数据正整数 用于指定输入数据占据的宽度*表示本输入项在读入后舍弃,共 73 页 第 57 页,3-7 数据的输入与输出-格式输入函数scanf,:scanf(%3d%2d,输入序列一:123ENTER结果:x=1,y=2,z=3输入序列二:1TAB2 3ENTER输入序列三:1ENTER 2 3ENTER结果与输入序列一的结果一样。,共 73 页 第 58 页,3-7 数据的输入与输出-格式输入函数scanf,:scanf(%2d%*2d,%2d,要使x的值等于12,从键盘应怎样输入?正确的输入序列:x=12ENTER 注意:字符 x=被过滤掉了 若输入序列为:12ENTER错误!,共 73 页 第 59 页,3-7 数据的输入与输出-字符输出函数putchar,调用形式:putchar(c)功能:通过标准输出设备(显示器)输出变量c。例C2_7301.C:将从键盘输入的一行字符复制到标准输出。#include stdio.hmain()char c;c=getchar();while(c!=n)putchar(c);/*输出该字符*/c=getchar();/*再取下一输入字符*/,例C2_7301,共 73 页 第 60 页,3-7 数据的输入与输出-格式输出函数printf,调用形式:printf(”控制字符串”,参数1,参数2,参数n)其中:控制字符串也称为格式说明串,它用于描述变量的输出方式,格式说明的形式是:附加格式说明符 格式转换字符附加格式说明符部分可以缺省。功能:按照控制字符串中的格式说明依次将后面的各参数进行转换,排放成格式说明中规定的格式,输出到输出设备上。对非格式说明符,则按原样输出。,共 73 页 第 61 页,3-7 数据的输入与输出-格式输出函数printf,格式转换字符 说 明 d 以十进制形式输出整数(正数不输出符号)o 以八进制无符号形式输出整数(不输出前缀符)x 以十六进制无符号形式输出整数(不输出前缀符)u 以无符号十进制形式输出整数 c 以字符形式输出,仅输出一个字符 s 输出字符串 f 以小数形式输出单、双精度数 e 以标准指数形式输出单、双精度数 g 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的,共 73 页 第 62 页,3-7 数据的输入与输出-格式输出函数printf,附加说明符 说 明 l 用于输出长整型数据,可加在格式转换符d,o,x,u前面 m(正整数)输出数据的最小域宽.n(正整数)对实数,表示输出 n 位小数;对字符串,表示截取的字符个数 输出的数据在输出域内向左对齐,共 73 页 第 63 页,3-7 数据的输入与输出-格式输出函数printf,实例:#include main()printf(This is a C program.n);实例:#include main()int a=1,b=2,c=100;printf(a=%d,b=%3d,d=%3d%n,a,b,a*c/b);printf(%d,%o,%xn,-a,-a,-a);答案:a=1,b=2,d=50%-1,177777,ffff,例C2_7302,例C2_7303,共 73 页 第 64 页,3-7 数据的输入与输出-格式输出函数printf,实例:#include main()char c=a;char ch=Good-bye.;printf(%c,%3c,%3dn,c,c,c);printf(%s,%10s,%-8s,%-12s,%6.4sn,ch,ch,ch,ch,ch);答案:a,a,97Good-bye.,Good-bye.,Good-bye.,Good-bye.,Good12345678901234567890123456789012345678901234567890,例C2_7304,共 73 页 第 65 页,3-7 数据的输入与输出-格式输出函数printf,实例4:#include main()int a;float b,c;scanf(”%2d%3f%4f”,输出:a=12,b=345.000000,c=6789.000000,例C2_7305,共 73 页 第 66 页,3-8 综合举例,1、运算符有优先级,在C语言中关于运算符优先级的正确叙述是。A)逻辑运算符高于算术运算符,算术运算符高于关系运算符 B)算术运算符高于关系运算符,关系运算符高于逻辑运算符 C)算术运算符高于逻辑运算符,逻辑运算符高于关系运算符 D)关系运算符高于逻辑运算符,逻辑运算符高于算术运算符答案:B,共 73 页 第 67 页,3-8 综合举例,2、在以下关于C语言的不严格的叙述中,错误的是 A)大写字母和小写字母的意义相同 B)有些不同类型的变量可以在一个表达式中运算 C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义答案:A3、语言中的简单数据类型包括。A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型答案:B,共 73 页 第 68 页,3-8 综合举例,4、在C语言中,错误的int类型的常数是。A)32768 B)0 C)037 D)0 xAF答案:A5、下列常数中不能作为C的常量的是。A)0 xA5 B)2.5e-2 C)3e2 D)0582答案:D6、在语言中,十进制的47可等价地写为。A)2f B)02f C)57 D)057答案:D7、已知:int a=4,b=5,c;则执行下列表达式“c=a=ab”后变量a的值为。A)0 B)1 C)4 D)5答案:A,共 73 页 第 69 页,3-8 综合举例,8、下列可以正确表示字符型常数的是 A)aB)t C)n D)297答案:B9、以下错误的转义字符是 A)B)C)81 D)0答案:C10、已知:float x=1,y;则:y=+x*+x的结果是 A)y=9 B)y=6 C)y=1 D)表达式是错误的答案:D11、已知:char ch=A;则下列表达式的值是ch=(ch=A A)A B)a C)Z D)z答案:B,共 73 页 第 70 页,3-8 综合举例,12、字符串22a,0n的长度是。A)8 B)7 C)6 D)5答案:C13、在程序中要使用语句:printf(%sn,STRING);输出一个长度为个字符的提示信息OK!,则应使用宏定义语句_。A)#define STRING OK!B)#define STRING OK!C)#define STRING OK!D)以上三个答案都是错误的答案:D#define STRING OK!,共 73 页 第 71 页,3-8 综合实例,C2_8002#define printt(x,y,z)printf(x=%d,y=%d,z=%dn,x,y,z)main()int x,y,z;x=y=z=2;+x|+y,例C2_8002,x=3,y=2,z=2 x=3,y=3,z=2 x=3,y=3,z=3 x=-1,y=-2,z=-2 x=-1,y=-1,z=-2 x=-1,y=-1,z=-1,