C语言程序设计第2章.ppt

上传人:小飞机 文档编号:6504130 上传时间:2023-11-07 格式:PPT 页数:89 大小:492KB
返回 下载 相关 举报
C语言程序设计第2章.ppt_第1页
第1页 / 共89页
C语言程序设计第2章.ppt_第2页
第2页 / 共89页
C语言程序设计第2章.ppt_第3页
第3页 / 共89页
C语言程序设计第2章.ppt_第4页
第4页 / 共89页
C语言程序设计第2章.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《C语言程序设计第2章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第2章.ppt(89页珍藏版)》请在三一办公上搜索。

1、第2章 基本数据类型与运算符,返回总目录,目录,2.1数据类型和取值范围,2.2运算符,2.3输入/输出函数,2.4习题二,返回总目录,基本要求:)熟悉C语言的常用数据类型;)熟悉C语言的常用运算符;)熟练掌握输入/输出函数的使用。学习重点:)C语言运算符的使用;)输入/输出函数的使用。,2.1基本数据类型和取值范围,2.1.1 基本数据类型和取值范围,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,数据类型总表,返回目录,2.1基本数据类型和取值范围,2.1.1 基本数据类型和取值范围,整型数的取值范围:,2.1基本数据类型和取值范围,2.1.1 基本数据类型和取值范

2、围,浮点型数的取值范围:,2.1.2 常量与变量,标识符,定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字命名原则:见名知意不宜混淆 如l与I,o与0,2.1基本数据类型和取值范围,2.1.2 常量与变量,标识符,例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$123,3days,#33,char,$123,ab,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量,定义:程序运

3、行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define 符号常量 常量,如#define PRICE 30,例 符号常量举例#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);,一般用大写字母是宏定义预处理命令,不是C语句直接常量:整型常量 实型常量 字符常量 字符串常量,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量-整型常量(整常数),三种形式:十进制整数:由数字09和正负号表示.如 123,-456,0八进制整数:由数字0开头,后跟数

4、字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff,示例:0571=(377)100 x179=(377)100X179=(377)10,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量-整型常量(整常数),两种长度:整型常量按长度划分为两种:短整型和长整型(后缀为小写字母l或大写字母L),从长度来看:Turbo C中默认为短整型,如-377是一个短整型数,而-377l或-377L表示-377是长整型数。而在Visual C+6.0中默认为长整型,如-377、-377l或-377L均表示-377是长整型数。例:语句:print

5、f(“%d,%d”,sizeof(-377),sizeof(-377L);在Turbo C中的运行结果为:2,4而在VC中的结果为:4,4小结:从数据类型角度来分析,整型常量默认为int类型,而加上后缀(l或L)后,就是long int类型。,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量-实型常量(实数或浮点数),表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,实型常量的类型默认double型在实型常量后加字母f或F,认为它是float

6、型例:语句:printf(“%d,%d”,sizeof(0.123),sizeof(0.123F);在Turbo C和VC中的运行结果均为:8,4,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量-字符常量,定义:用单引号括起来的单个普通字符或转义字符.,1)普通字符:其值就是该字符的ASCII码值,如 a A?n 101,2)转义字符:反斜线后面跟一个字符或一个代码值表示,如 A65,a97,048,n10,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量-字符常量,2.1基本数据类型和取值范围,注:1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。2)v 垂

7、直制表和f 换页符对屏幕显示无影响,但会影响打印机响应。,2.1.2 常量与变量,常量-字符常量,如 101-A 012-n x61-a 60-0 483-(),例:A-101-x41-65,转义字符示例:,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量-字符常量,例 转义字符举例 main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);,运行结果:(屏幕显示)A B CI say:”How are you?”C ProgramTurbo C,例 main()pr

8、intf(“Yb=n”);,运行结果:屏幕显示:=打印机输出:,2.1基本数据类型和取值范围,2.1.2 常量与变量,常量-字符串常量,定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 0 作为字符串结束标志,字符常量与字符串常量不同,例:char ch;ch=“A”;,2.1基本数据类型和取值范围,2.1.2 常量与变量,变量,概念:其值可以改变的量变量名与变量值变量定义的一般格式:数据类型 变量1,变量2,变量n;,例:int a,b,c;float data;,决定分配字节数和数的表示范围,合法标识符,2.1基本数据类型和取值范围,2.1.2 常量与变量,变量,例:in

9、t a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;,变量初始化:定义时赋初值,2.1基本数据类型和取值范围,2.1.2 常量与变量,变量,例1 int student;stadent=19;,例2 int a,b,c;c=a%b;,变量的使用:先定义,后使用,2.1基本数据类型和取值范围,/本行语句有错,a、b没有具体的值就参与运算,/本行语句有错,符号“stadent”未定义,2.1.2 常量与变量,变量,/*right.c*/#includemain()int a,b=2;float data;a=1;dat

10、a=(a+b)*1.2;printf(“data=%fn”,data);,变量定义位置:一般放在函数开头,2.1基本数据类型和取值范围,文件名改成wrong.cpp在VC中编译可通过,因C+语法允许!,2.1.2 常量与变量,变量,整型变量占字节数随机器不同而不同,一般占一个机器字shortintlong可用sizeof(类型标识符)测量,#include stdio.hmain()printf(int length=%d,sizeof(int);,VC运行结果:int length=4,2.1基本数据类型和取值范围,2.1.2 常量与变量,变量,实型变量float:占4字节,提供67位有效数

11、字(跟C编译系统有关,将实型数据按指数形式存储时,一般若以24位二进制位表示小数部分(含符号),则对应的十进制有效数字为7位)double:占8字节,提供1516位有效数字,2.1基本数据类型和取值范围,#includemain()double a=1.234567890123456789e18;float b=a;printf(a=%.20len,a);printf(b=%.20len,b);,程序输出结果为:a=1.23456789012345680000e18b=1.23456793955060940000e18,2.1.2 常量与变量,变量,字符型变量字符变量存放字符ASCII码cha

12、r与int数据间可进行算术运算,例 a=D;/*a=68;*/x=A+5;/*x=65+5;*/s=!+G/*s=33+71;*/,没有字符串变量,字符串用字符数组存放,2.1基本数据类型和取值范围,2.1.2 常量与变量,变量,变量综合示例:#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);,运行结果:total=37.500000,ch1=d,2.1基本数据类型和取值范围,2.2运算符,2

13、.2.1 优先级与结合规则,运算符,返回目录,2.2运算符,2.2.1 优先级与结合规则,优先级和结合规则总表,2.2运算符,2.2.1 优先级与结合规则,不同级别的运算符按运算符的优先级别确定计算顺序,优先级别高(即优先级别数小)的运算符先计算:相同级别的运算符按结合规则(左结合性:从左至右;右结合性:从右至左)确定计算顺序。,运算符的计算规则,2.2运算符,2.2.1 优先级与结合规则,运算符的计算规则,例:表达式3+4*(12-6)/(1+2)的计算顺序按优先级和结合规则可以简单理解为:(126)6(12)3 4*624 24/3=8 3+8=11注:表达式的求值问题属于“栈”的典型应用

14、,在数据结构课程中会详细介绍。,2.2运算符,2.2.2 赋值运算与连续赋值,在C中,运算符“=”是赋值运算符。简单赋值运算的一般形式为:变量=表达式其功能是将一个表达式的值赋给变量。如下表达式a=b+c该式读作将表达式b+c的值赋给a。其本意是改写变量a的值,而不是判断b+c与a是否相等。,赋值运算,2.2运算符,2.2.2 赋值运算与连续赋值,连续赋值,在C语言中,赋值运算符的级别较低,为14级,并满足右结合规则。因此表达式:x=y=z=1是连续赋值表达式,其功能相当于如下表达式的功能x=(y=(z=1)它是先执行表达式z=1,即将1赋给z,表达式值也为1,然后将表达式值1赋给y,即执行y

15、=1,表达式值也仍为1,再将表达式值1赋给x,即执行x=1。,2.2运算符,2.2.3 算术运算,结合方向:从左向右优先级:-*/%+-(2)(3)(4)说明:“-”为单目运算符时(表示负号),为右结合性两整数相除,结果为整数%要求两侧均为整型数据,例 5/2=2-5/2.0=-2.5,例 5%2=1-5%2=-1 1%10=1 5%1=0 5.5%2(),基本算术运算符:+-*/%,2.2运算符,2.2.3 算术运算,自增、自减运算符+-,作用:使变量值加1或减1种类:前置+i,-i(先执行i+1或i-1,再使用i值)后置 i+,i-(先使用i值,再执行i+1或i-1),例 j=3;k=+j

16、;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=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,“先加后用”,“先用后加”,2.2运算符,2.2.3 算术运算,自增、自减运算符+-,说明:+-不能用于常量和表达式,如5+,(a+b)+-结合方向:自右向左优先级:-+-*/%+-(2)(3)(4),例-i+-(i+)i=3;printf(“%d”,-i+);/-3,2.2运算符,2.2.3 算术运算,自增、自减运算符+-,特别提示:慎用

17、+,-运算符!,4,34 5,3,2,2,3,34 3,2,2,2,a=3;printf(%d,%dn,a,a+);printf(%dn,a);a=3;printf(%d,%d,%d,%dn,+a,a+,a+,-a);,TC中结果:,VC中结果:,从例中可分析出:1、函数参数均按从右到左的顺序求值;2、对于后置运算,都遵循“先用后加”规则,但“加”的时机不同,TC中是用后马上加,这样下个左边的参数用到的值是加后的值,而在VC中,用后不马上加,而是在函数调用(printf)完成后才加。,例:,2.2运算符,2.2.3 算术运算,自增、自减运算符+-,特别提示:慎用+,-运算符!,由上例知,由于+

18、,-运算符在不同版本的C编译系统中使用时会出现非预期的结果,因此要慎用!例如:a=3;printf(“%d,%d”,a,a+);在有的系统中,函数参数是从左至右求值,输出“3,3”,在多数系统(如TC和VC)中是从右至左求值,输出“4,3”或“3,3”。因此,以上写法不宜提倡,最好改写成:a=3;b=a+;printf(“%d,%d”,a,b);或:a=3;b=a;a+;printf(“%d,%d”,a,b);则结果都是明确的(输出“4,3”)。,2.2运算符,2.2.3 算术运算,自增、自减运算符+-,特别提示:慎用+,-运算符!,总之,不要编写让人很难看懂,也不知道系统会怎样执行的程序。所

19、以,我们可以通过一些含+,-比较多的表达式来加深对其运算规则的理解,但在实际编程中,除非不得已,否则绝对不要编写含+,-比较多的表达式。从上面的介绍可知,含+,-比较多的复杂语句或有歧义的语句完全可以用简单易懂、结果明确的语句组替代。,2.2运算符,2.2.4 关系运算,关系运算又称为比较大小运算,它有六个运算符:、=、=、=等四个运算符级别为6级,它们比=、!=等两个运算符级别为7级的要高.,2.2运算符,2.2.4 关系运算,关系运算的结果为逻辑真或逻辑假,关系成立时为逻辑真(值为1),关系不成立时为逻辑假(值为0)。如下表达式:53 5=3 53 5=3 5=3 5!=3的逻辑值分别为

20、1 1 0 0 0 1,2.2运算符,2.2.4 关系运算,关系运算的等于运算符=与数学上的等于运算符=具有相同的含义,与C语言中的赋值运算符=是完全不同的,这一点对初学者而言往往容易搞错。,2.2运算符,2.2.5 逻辑运算、连续比较和逻辑优化,C语言中逻辑运算符有三个:逻辑与&(11级、左结合)。逻辑与表达式a&b表示a与b中只要有一个条件不满足(值为0),其运算结果为0。逻辑或|(12级、左结合)。逻辑或表达式a|b表示a与b中只要有一个条件满足(值为1),其运算结果为1。逻辑非!(2级、右结合)。逻辑非表达式!a,当a为1时,结果为0,当a为0时,结果为1。,逻辑运算,2.2运算符,2

21、.2.5 逻辑运算、连续比较和逻辑优化,表2.4逻辑运算真值表,在C语言的逻辑运算中,任何非0值都当作逻辑值1处理,因此表达式0.1|0的结果值为1。,逻辑运算,2.2运算符,2.2.5 逻辑运算、连续比较和逻辑优化,数学上的连续比较532在数学上是恒成立的。但在C语言中,上式却不成立,因为首先计算第一个大于号,其值为1,而后计算第二个大于号时,成为计算12,显然不成立,其值为0。实际上,连续比较大小时,表示几个条件同时满足,因此若将上式改写为条件表达式53&32后,则与数学上的的连续比较含意相符,表达式也是成立的。,连续比较,2.2运算符,2.2.5 逻辑运算、连续比较和逻辑优化,逻辑优化,

22、逻辑与优化。从逻辑与运算a&b的真值表中,我们可以看出,只要a值为0,不管b值如何,其运算结果都为0,因此,在进行逻辑与运算时,只要计算出a值为0,则不需计算b值,这种情况,我们称之为逻辑与优化。逻辑或优化。对于逻辑或运算a|b,只要计算出a值为1,则也不需计算b值,此时表达式值恒为1,这种情况称之为逻辑或优化。,2.2运算符,2.2.5 逻辑运算、连续比较和逻辑优化,例2.4逻辑运算综合举例,#include main()int x,y,z;x=y=z=0;+x|+y|+z;printf(“x=%d y=%d z=%dn”,x,y,z);x=y=z=0;+x,程序运行结果为:,x=1 y=0

23、 z=0 x=1 y=1 z=0 x=1 y=1 z=1x=1 y=0 z=0,2.2运算符,2.2.6 位运算,位运算操作符,表2.5位运算符号表,2.2运算符,2.2.6 位运算,异或运算,异或运算真值表见表2.6,即对应位相同时为0,不同时为1.表2.6异或运算真值表,2.2运算符,2.2.6 位运算,移位运算,左移位运算ab:右边移出的部分将丢弃,左边空出的高位部分填补方法则根据a是否为带符号数又分为两种:a为带符号数时,左边空出的高位部分用符号位填补;a为不带符号数时,左边空出的高位部分用0填补。,注意:参与运算的数以补码形式出现.,2.2运算符,2.2.6 位运算,例2.5,#in

24、clude main()char a=-25,b=93,c;unsigned char d=-25;c=a,69-1-7024-4283-56,程序运行结果为:,2.2运算符,2.2.7 条件运算,一般形式:expr1?expr2:expr3执行过程,条件运算符可嵌套 如 x0?1:(x0?-1:0)优先级:13,结合方向:自右向左 如 ab?a:cd?c:d ab?a:(cd?c:d),2.2运算符,2.2.7 条件运算,例 求 a+|b|printf(“a+|b|=%dn”,b0?a+b:a-b);,例(a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=a&c=z)?c-a+

25、A:c,2.2运算符,2.2.8 复合赋值运算,表2.7复合赋值运算符,2.2运算符,2.2.9 逗号运算,形式:表达式1,表达式2,表达式n结合性:从左向右优先级:15计算过程:从前往后,依次计算逗号表达式的值:等于表达式n的值,例:#include main()int x,y=7;float z=4;x=(y=y+6,y/z);printf(x=%dn,x);,X=3,程序运行结果为:,2.2运算符,2.2.10 求字节数(sizeof),1)sizeof计算类型占用字节数的形式为:sizeof(类型)2)sizeof计算变量占用字节数的形式有两种:sizeof(变量)或sizeof 变量

26、,示例:#includemain()int a=5;printf(%dn,sizeof(int);printf(%dn,sizeof(a);printf(%dn,sizeof a);,TC运行结果为:,222,VC运行结果为:,444,2.2运算符,2.2.11 类型转换,算术运算类型转换,算术运算中,当两个运算数类型相同时,运算结果类型与原类型相同,当两个运算数类型不同时,运算结果类型为级别较高的数据类型。类型级别高低按下述规则进行:,即字符型向整型转换、整型向实数型转换、短型向长型转换、不带符号型向带符号型转换。,例如表达式:5/2+3*4.5+2的运算结果为17.5,而不是18。因为5/

27、2时,除法运算符“/”两边运算数的类型都为整数,其运算结果类型也应为整数类型,其值当然为2,而不是2.5;乘法3*4.5两边运算数的类型不同,结果类型为级别高的类型,即实型,值为13.5,整个表达式值为17.5。如将上述表达式改写为:5/2.0+3*4.5+2此时,其运算结果为18.0,而不是17.5,请读者自行分析。,2.2运算符,2.2.11 类型转换,算术运算类型转换,2.2运算符,2.2.11 类型转换,赋值转换,执行赋值运算变量a=表达式b时,若a、b类型相同,则直接将b赋给a即可,若a、b类型不同,则需先将b的类型转换为a的类型后再赋值,这种类型转换,我们称之为赋值类型转换。,2.

28、2运算符,2.2.11 类型转换,强制类型转换,强制类型转换的一般格式为:(目标类型)表达式其功能是将表达式类型转换为目标类型,其转换方法同赋值转换。如:float a=3.1;int i;i=(int)a;则i的值为3。,2.2运算符,2.2.11 类型转换,输入/输出类型转换,示例:#includemain()int a=15;char ch=A;printf(%dn,ch);printf(%Xn,a);,65F,程序运行结果为:,详见“输入/输出函数”一节,2.3输入/输出函数,2.3.1 格式化输出函数printf,printf()函数调用格式,#include,格式:printf(“

29、格式字符串”,输出表)功能:按指定格式向显示器输出数据,输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%flagswidth.precisionF|N|h|ltype,用于指定输出格式普通字符或转义序列:原样输出,返回目录,2.3输入/输出函数,2.3.1 格式化输出函数printf,Type类型代码及示例,d,i,x,X,o,u,c,s,e,E,f,g,%,十六进制无符号整数,不带符号十进制整数,十进制整数,指数形式浮点小数,单一字符,字符串,八进制无符号整数,小数形式浮点小数,e和f中较短一种,去0,百分号本身,int a=567;printf(“%

30、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);,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(“%”);,567,ff,101,567,A,ABC,5.677890e+002,567.789001,567.789,%,p,指针,

31、int a=567;int*q=,FFF4,FFF4,以无符号的十六进制形式输出变量的地址,说明Type类型代码字符与输出项个数应相同,按先后顺序一一对应。,2.3输入/输出函数,2.3.1 格式化输出函数printf,程序运行结果为:,Type类型代码及示例,3 4 a=3,b=4,示例:main()int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);,说明输出类型转换:格式字符与输出项类型不一致,按指定type类型输出。输出类型转换与赋值类型转换规律相同。,2.3输入/输出函数,2.3.1 格式化输出函数printf,程序在VC

32、中运行结果为:,Type类型代码及示例,u=1 u=4294967295,示例:main()int u=-1;printf(“u=%dn,u);printf(“u=%un”,u);,2.3输入/输出函数,2.3.1 格式化输出函数printf,可选格式说明符宽度 width,定义输出数据域宽。数据长度width,左补空格;否则按实际输出宽度。当width值前加0时,表示左边空位用0填补。,程序运行结果为:,a=888 a=000888,示例:main()int a=888;printf(a=%6dn,a);printf(a=%06dn,a);,2.3输入/输出函数,2.3.1 格式化输出函数p

33、rintf,可选格式说明符精度.precision,精度作用于浮点数%f,%e,%E:精度表示“小数点后最多显示位数”,默 认值为6 精度作用于%g,%G:精度表示“有效位的数目”精度作用于字符串%s:精度表示“最大字符串位数”精度作用于整数:精度决定“必须显示的最小位数”,不足时补前导0。,程序运行结果为:,123.1235 00001234This is a simpl,例2.12:main()printf(%.4fn,123.1234567);printf(%3.8dn,1234);printf(%10.15sn,This is a simple test);,2.3输入/输出函数,2.

34、3.1 格式化输出函数printf,可选格式说明符标志 flags,程序运行结果为:,示例:对齐符”-”main()printf(%8dn,12345);printf(%8dn,12);printf(%-8dn,12345);printf(%-8dn,12);,12345 121234512,“-”:表示左对齐,缺省(即没有”-”号时)为右对齐;“0”:输出数值时指定左面不使用的空位置自动填0;“+”:表示右对齐,在有符号数的正数前显示正号(+);“#”:在八进制和十六进制数前显示前导0,0 x 或0X;,2.3输入/输出函数,2.3.1 格式化输出函数printf,可选格式说明符标志 fla

35、gs,程序运行结果为:,示例:“0”与“”main()printf(%+08dn,12345);printf(%+8dn,12);printf(%-8dn,12345);printf(%-8dn,12);,“-”:表示左对齐,缺省(即没有”-”号时)为右对齐;“0”:输出数值时指定左面不使用的空位置自动填0;“+”:表示右对齐,在有符号数的正数前显示正号(+);“#”:在八进制和十六进制数前显示前导0,0 x 或0X;,+0012345+121234512,2.3输入/输出函数,2.3.1 格式化输出函数printf,可选格式说明符标志 flags,程序运行结果为:,示例:”#”main()p

36、rintf(%#8xn,0 x1234);printf(%#8xn,0 x12);printf(%-#8on,01234);printf(%-#8on,012);,0 x1234 0 x12 01234012,“-”:表示左对齐,缺省(即没有”-”号时)为右对齐;“0”:输出数值时指定左面不使用的空位置自动填0;“+”:表示右对齐,在有符号数的正数前显示正号(+);“#”:在八进制和十六进制数前显示前导0,0 x 或0X;,2.3输入/输出函数,2.3.1 格式化输出函数printf,可选格式说明符标志 h|l,程序运行结果为:,示例:”h”与“l”main()printf(%hdn,6553

37、6);printf(%hon,8);printf(%lun,65536);printf(%lxn,65536);printf(%len,5000000000.0);printf(%lfn,5000000000.0);printf(%lgn,5000000000.0);,01065536 100005.000000e+0095000000000.0000005e+009,“h”:在d,o,x,u前,指定输出精度为short型;“l”:在d,o,x,u前,指定输出精度为long型;在e,f,g前,指定输出精度为double型;,2.3输入/输出函数,2.3.1 格式化输出函数printf,可选格式

38、说明符标志 F|N,“F”:在p前,指定为远指针(32位),表示段地址:偏移地址;“N”:在p前,指定为近指针(16位),表示段内偏移地址;,TC程序运行结果为:,示例:”F”与“N”main()char far*q1=(char far*)0 xB5000002;char near*q2=(char near*)0 x452;printf(%Fpn,q1);printf(%Npn,q2);,B500:00020452,注意:在VC中运行本程序时,会出现far is an obsolete keyword或near is an obsolete keyword之类的错误,表示在VC中,far和

39、near是已经被废弃的关键字。,2.3输入/输出函数,2.3.2 格式化输入函数scanf,scanf()函数调用格式,格式:scanf(“格式字符串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中。,地址表:变量的地址,常用取地址运算符&。格式控制串:包含两种信息格式说明:%*widthh|ltype,用于指定输入格式普通字符或转义序列:原样输入,#include,2.3输入/输出函数,2.3.2 格式化输入函数scanf,scanf()函数调用格式,说明:各项的含义与printf中的含义相同,不同的是输入格式串没有“精度项”,其中“*”用于跳读输入的数据项.,程序运

40、行结果为:,例2.13:main()int r,h;float v;scanf(%d%*d%d,3 5 4The volume is:113.09724,2.3输入/输出函数,2.3.2 格式化输入函数scanf,输入数据流的分隔方式,用空白符号分隔:空白符有:空格,制表符,回车符;,程序运行结果为:,例2.13:main()int r,h;float v;scanf(%d%*d%d,3 5 4The volume is:113.09724,程序运行结果为:,3 5 4The volume is:113.09724,2.3输入/输出函数,2.3.2 格式化输入函数scanf,输入数据流的分隔方

41、式,示例:main()int r,h;float v;scanf(“r=%dh=%d,程序运行结果为:,r=3 h=4The volume is:113.09724,用指定的符号分隔:,2.3输入/输出函数,2.3.2 格式化输入函数scanf,输入数据流的分隔方式,示例:main()int r,h;float v;scanf(%2d%*3d%2d,程序运行结果为:,12345678r=12 h=67 The volume is:30310.06055,用指定输入宽度分隔:,2.3输入/输出函数,2.3.2 格式化输入函数scanf,输入数据流的分隔方式,根据数据含义分隔:,示例:main()

42、int r,h;char c;float v;scanf(%d%d%c,程序运行结果为:,3 5rr=3 h=5Input character is:rThe volume is:113.09724,2.3输入/输出函数,2.3.3 字符输入/输出函数,字符输入,采用scanf函数 例如:char ch;scanf(“%c”,2.3输入/输出函数,2.3.3 字符输入/输出函数,字符输出,采用printf函数:例如:char ch=B;printf(“%c”,ch);采用函数:putchar(参数)功能:向显示器输出参数指定的一个字符。例如:char ch=B;putchar(ch);/参数是

43、字符变量 putchar(B);/参数是字符常量 putchar(66);/参数是整型常量 putchar(ch+1);/参数是表达式,2.3输入/输出函数,2.3.3 字符输入/输出函数,例2.14字符输入输出函数。#include main()char c1,c2,c3;c1=getchar();c2=getchar();c3=getchar();putchar(c1+32);putchar(c2+32);putchar(c3+32);,综合示例,程序运行结果为:,ABCabc,本程序实现将大写字母转换成小写字母。,2.4习题二,单项选择题,C语言中最基本的非空数据类型包括.A)整型、浮点

44、型、无值型 B)整型、字符型、无值型 C)整型、浮点型、字符型 D)整型、浮点型、双精度型、字符型C语言中运算对象必须是整型的运算符是.A)%B)/C)=D)=,D,A,返回目录,单项选择题,若已定义x和y为int类型,则执行了语句x=1;y=x+3/2;后y的值是.A)1 B)2 C)2.0 D)2.5 若有以下程序段,int a=1,b=2,c;c=1.0/b*a;则执行后,c中的值是.A)0 B)0.5 C)1 D)2 5)能正确表示逻辑关系:“a10或a0”的C语言表达式是_.A)a=10 or a=0|a=10&a=10a=0,B,A,D,2.4习题二,单项选择题,下列字符序列中,不

45、可用作C语言标识符的是.A)xyd233 B)No.1 C)_sd D)xyz 在printf()函数中,反斜杠字符表示为.A)B)0 C)n D)8)设先有定义:int a=10;则表达式a+=a*=a的值为_.A)10 B)100 C)1000 D)2009)设先有定义:int a=10;则表达式(+a)+(a-)的值为_.A)20 B)21 C)22 D)19,B,D,D,C,2.4习题二,单项选择题,10)设先有定义:int y=3,x=3,z=1;则语句:printf(“%d%dn”,(+x,y+),z+2);的输出结果为_.A)3 4 B)4 2 C)4 3 D)3 311)假定x

46、、y、z、m均为int型变量,有如下程序段:x=2;y=3;z=1;m=(yx)?y:x;m=(zy)?m:y;则该程序运行后,m的值是 _.A)4 B)3 C)2 D)1,D,C,2.4习题二,单项选择题,以下选项中合法的字符常量是.A)BB)010C)68D)D设x=3,y=4,z=5,则表达式(x+y)z)则m+=n;的结果是_.A)0 B)1 C)2 D)3,B,B,A,A,2.4习题二,填空题,1表达式10/3的结果是_;10%3的结果是_。2执行语句:int a=12;a+=a-=a*a;后的值是_。3以下语句的输出结果是_。short b=65535;printf(%d,b);,

47、3,1,-264,-1,2.4习题二,填空题,4以下程序的执行结果是_。#includemain()int a,b,x;x=(a=3,b=a-);printf(x=%d,a=%d,b=%dn,x,a,b);,x=3,a=2,b=3,2.4习题二,填空题,5以下程序的执行结果是_。#includemain()float f1,f2,f3,f4;int m1,m2;f1=f2=f3=f4=2;m1=m2=1;printf(%dn,(m1=f1=f2),0,2.4习题二,6以下程序的执行结果是_。#includemain()float f=13.8;int n;n=(int)f%3;printf(n=%dn,n);,填空题,n=1,2.4习题二,本章完!谢谢大家的合作!,手机祝同学们学业大成!有问题或建议请与本人直接联系!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号