C语言程序设计期中复习.ppt_第1页
C语言程序设计期中复习.ppt_第2页
C语言程序设计期中复习.ppt_第3页
C语言程序设计期中复习.ppt_第4页
C语言程序设计期中复习.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

2019/7/11,1,C语言程序设计期中复习,李 书 涛 ,2019/7/11,2,期中试卷题型,一、选择题(每小题2分,共30分) 数值常量,运算符,优先级, 二、阅读下列程序,写出输出结果(每题4分,共16分) 选择结构程序设计,循环结构程序设计。 三、读程序,并填空(每小题3分,共30分) 选择结构程序设计,循环结构程序设计。 四、编程题(每小题8分,共24分) 穷举法,选择结构程序设计,循环结构程序设计。,2010C语言程序设计期中试卷题型,2019/7/11,3,1 程序操作的对象数据,1 程序操作的对象数据 1.1 C语言的数据类型,2019/7/11,4,1. 不同类型数据采取不同的存储形式; 2. 不同类型数据在内存中占有不同的 存储空间; 3. 不同类型数据对应不同的取值范围; 4.不同类型数据确定了允许对其进行不 同的操作类型。,数据类型的含义,1 基本数据类型,2019/7/11,5,按照数据在程序中的取值分为两类: 值保持不变-常量 x=2 + y 值随程序运行变化-变量,C语言的基本数据类型,1 基本数据类型,2019/7/11,6,1. 在程序运行中,其值保持不变 2. 表示方法:,整型 100,-25,12L 实型 3.14 , 0.125 字符型 a, b 字符串常量 “string”,3. 符号常量: #define PI 3.14159,宏定义:给常量定义一个标识符,称宏名,大写。,1.2 常量与变量 一、常量,2019/7/11,7,3. 变量通过变量名来标识。,1. 在程序运行中,值发生变化;,2. 必须先定义,再使用;,int a, b;,类型 变量名表,256,3,变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。,二、变量,变量,2019/7/11,8,(1)以字母或下划线开头,(2)不能用系统中的关键字作为变量名,int a,b,A123,_b;,int a; A=5;,(3)变量名中的字母是区分大小写的。 sum、stu_name、_age、Lts_1_2、a2 32c、x.y、start+9、c2.0 非法 NAME name 表示两个不同的标识符。,4. 有关变量名的规定,2019/7/11,9,有三种表 示形式,十进制 八进制 十六进制,1234 12L,加前导0 01234,0125,加前导0x如0x123,0xffff,整型数据包括整型常量和整型变量, 整型数据以二进制补码形式存储。,例,100、-8、0;010、024;0x38、0X1F,1.3 整型数据 一、整型常量,2019/7/11,10,掌握要点 1. 有几种定义形式; 2. 每种形式占存储空间的大小不同; 3. 取值范围不同; 4. 输入输出格式不同。,二、整型变量,2019/7/11,11,六种形式,基本整型 短整型 长整型 无符号整型 无符号短整型 无符号长整型,int short int long int unsigned int,占存储空间,一个变量,2 2 4 2,字节,unsigned short unsigned long,2 4,1. 定义形式,2019/7/11,12,类 型 说明符 长度 数的范围 基本型 int 2字节 -3276832767 短整型 short 2字节 -215215-1 长整型 long 4字节 -231231-1 无符号整型 unsigned 2字节 065535 无符号短整型 unsigned short 2字节 065535 无符号长整型 unsigned long 4字节 0232-1,2. 整型变量的取值范围,类 型 说明符 长度 数的范围 基本型 int 2字节 -3276832767 无符号整型 unsigned 2字节 065535,有符号与无符号整型数的区别,int 最高位为符号位1为 负数补码 unsigned 最高位为数值位=215=32768,则:unsigned a= 216-1=65535,而int a=-1,则:unsigned a= 215=32768,而int a=-32768,2019/7/11,14,int型数存储长度为16位二进制(2Byte),0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,=215-1=32767,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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,=1,=3,上面的数再加1是多少?,=-215=-32768,例,补码表示,int型表示数的范围:- 32768 32767,3. 输入输出形式 : %d,%ld,%x,%o,%u,?,int型数的表示范围,2019/7/11,15,包括实型常量和实型变量,两种表 示形式,小数 指数,0.123 123e-3,实型常量只能用十进制形式表示,不能用八进制和十六进制,1e3、1.8e-3、-123e-6、-.1e-3 e5、1e-3.2、e、.e-03,1.4 实型数据 一、实型常量,指数格式:,数符尾数e阶符阶码,2019/7/11,16,1. 定义形式,三种形式,单精度 双精度 长双精度,float double long double,2. 占存储空间,一个变量,4 8 16,字节,实型常量不区分单精度和双精度,二、实型变量,2019/7/11,17,4. 输入输出形式 %f, %lf,3. 变量的取值范围,实型数据在计算机中以指数形式存储,单精度float变量占四个字节。一个字节存放指数部分, 三个字节存数值部分。,2-23 = |尾数| = 1-2-23,float型数的表示范围,最小尾数= 2-23,二进制 7位,二进制 23位,单精度实型,数符 尾数,阶码,阶符,最大尾数= 1-2-23,2019/7/11,19,1.5 字符型数据 一、字符型常量,字符型常量 字符型变量,1. 用单引号包含的一个字符是字符型常量,2 .只能包含一个字符,例,a,A, 1 abc “a”,2019/7/11,20,有些以“”开头的特殊字符称为转义字符,n 换行 t 横向跳格 r 回车 反斜杠 ddd ddd表示1到3个八进制数字 xhhh hhh表示1到3个十六进制数字,请牢记!,printf(“%d t %d t”,a,b); printf(“%d n%d n”,a,b);,若:a为1,b为0, 则,3. 转义字符,输出: 1 0 1 0,转义字符表示法,2019/7/11,22,ddd 表示1到3个八进制数字对应ASCII字符 xhhh 表示1到3个十六进制数字对应ASCII字符 101 141 60 x41 x61 x30,printf(“%c,%c,%cn”,a,b,c); printf(“%c,%c,%cn”,x,y,z);,若:a =101 ,b =141,c= 60; 若:x =x41 ,y =x61,z= x30;,转义字符举例 课堂作业,输出: A,a,0 输出: A,a,0,表示A 表示a 表示0,表示A 表示a 表示0,2019/7/11,23,1. 定义形式:,2. 占存储空间,一个字节,1 字节,char 变量表,一个字符变量只 能包含一个字符,3. 输入输出形式 %c,a ASCII值为 97 内存中存储形式,0 1 1 0 0 0 0 1,4. 字符型数据在内存中以相应的ASCII值存储,二、字符型变量,2019/7/11,24,在ASCII范围以内,整型数据 与字符型数据可以通用,!,main( ) char c ; c = c; printf ( “%c”, c ); ,c,?,例,题目中有几个c,哪些是等价的?,运行结果:,字符型数据的特点,2019/7/11,25,1. 双引号内的一串字符 “china”,2. n个字符组成的字符串常量,在内存中占空间为 n+1 个字节。,c,h,i,n,a,0,字符串结 束标记,3. C 中没有专用的 字符串变量。,“This is C string” 串长 16 “a” 串长 1 “ ” (空格)串长 1 “” (不含空格)串长 0,三、字符串常量,2019/7/11,26,C语言的基本数据类型小结,类 型 说明符 长度 数的范围 字符型 char(ASCII码) 1字节 0127 整 型 int(-215215-1) 2字节 -3276832767 长整型 long 4字节 -231231-1 单精度 float 4字节 10- 381038 双精度 double 8字节 10- 30810308 长双精度 long double 16字节 10- 4931104932,2019/7/11,27,一、运算符,运算符,运算分量,x = 5 + b * c,对数据进行 运算的符号,被加工 的数据,+,表达式,算术运算符 赋值运算符 关系运算符 逻辑运算符 逗号运算符 条件运算符 ,C 中运算符,共34种,2 C程序的基本操作,2 C程序的基本操作 2.1 运算符和表达式,2019/7/11,28,2. 表达式的运算结果称为 表达式的值,1. 运算符和运算分量构成 表达式,算术表达式 关系表达式 逻辑表达式 赋值表达式 逗号表达式 条件表达式 ,二. 表达式,2019/7/11,29,*优先级: 运算符的执行顺序,*结合性:优先级相同时的结合方向,*运算结果的类型,X=5+8 a100,X=a+b*c,a+b-c 572 a=b=5,结果?,单目运算符的优先级高于双目运算符 单目运算符从右向左结合 双目运算符从左向右结合,运算符的优先级与结合性,2019/7/11,30,1. 共有5个:+,-,*,/,%,2. “-”作为 负号时为单目,单目: -,双目:*, /, %,双目:+,-,5. 优先级:,6. 结合性: 从左向右,3. %运算只适用于整型数,算术运算的结 果为什么类型,取模(求余数) a=10%4 a的值为2,?,2.2 算术运算符和算术表达式,4. /运算用于整型和实型时不同,2019/7/11,31,1. 模(求余数) % 运算,令:a=10; b=4; 求a % b与b % a;,结果: a / b= 2,令:a=10; b=4; x=10.0; y=4.0; 求a / b与x / y;,结果: x / y=2.5,结果: a % b=2, b % a=4,算术运算符举例,2. / 运算用于整型时称整除;用于实型时称实除。,2019/7/11,32,1. 有三个,&(与):两边为1,结果为1 (或):两边有一个为1,结果为1 ! (非):非1为0,非0为1 =0,=1,2. 优先级:!的优先级高于&和 (),逻辑运算与其他运算相比: 非 ! 的优先级最高,与&和或 的优先级低于其他。,3. 结合性:与和或是从左向右,非是从右向左,2.3 逻辑运算符与逻辑表达式 一 、逻辑运算符,2019/7/11,33,逻辑运算符的真值表,逻辑值用1和0表示,2019/7/11,34,2. 表达式的值为逻辑的1和0,表示真与假,任何非零实数均可作为逻辑上的1,例:a=5,b=7,c=4,d=3 x=(a+b)(c+d)&(da),先做算术运算,再做关系判断,将最后结果赋给x,1. 用逻辑运算符将关系运算表达式或逻辑量连接起来构成逻辑表达式,5 2 7 8,从左向右运算 (52)逻辑值为1 (17)逻辑值为0 (08)逻辑值为0,整个表达式的值为 0,二、逻辑表达式,结果:x=(12)(7)&(0)=1 & 0 = 0,3. 在逻辑表达式中,并不是所有的逻辑运算都必须执行,如果&的一边已经为0,结果一定为 0,如果 的一边已经为 1 ,结果一定为 1。,(1) a a,b均为非0, 再判断c;若a为0时,不必判断 b和 c,结果一定为 0不必判断 b和 c,结果一定为 1 (2 ) a b c,若a为非0,不必判断 b和 c,结果一定为 1,已知 :a=1,b=2,c=3,d=4,m=1,n=1 执行 (m=ab)&(n=cd) 之后 : m=? n=?,由于 ab的值为 0,m=0 不再判断( n=cd )的值,因此,n 维持原有的值,m=0 n=1,逻辑运算的特点,求逻辑表达式的值 1 ) 17 3 ) !(2 3) !(25) 5 ) !(4=6) & (3=7),如何表示闰年,逻辑运算举例一,逻辑表达式 结果 1 ) 17 1 & 0 = 0 3 ) !(2 3) !(25) ! 0 = 1 5 ) !(4=6)&(3=7) ! 1 = 0,课堂作业,2019/7/11,37,要判别用year表示的某一年是否闰年,闰年的条件是符合下面二者之一: 1 ) 能被4整除,但不能被100整除,如2008; 2 ) 能被400整除,如2000。 上面两个者条件可以用一个表达式来表示:,闰年的表示,( year%4=0 & year%100!=0 ) | year%400=0,2019/7/11,38,k =k+1,k + + 先使用变量k的值,再加 1,+ + k 先加1,再使用变量 k的值,k = k-1,k - - 先使用变量k的值,再减 1,- - k 先减1,再使用变量k 的值,k=3; printf( “%d”, k + +); 输出 3 后, k 的值为 4,i =3; printf( “%d”, + + i );,输出4,2.4 自增、自减运算符 1. 变量自身加(减)1:+与- -,2019/7/11,39,2. 只能用于变量,不能用于表达式和常量,(i+k) + , - - 3,3. 优先级:高于双目算术运算符,4. 结合性:从右向左,x+=n x=x+n,赋值运算符两侧出现相同的变量,x=x+n x=x-n x=x*n x=x/n x=x%n,x + = n x - = n x * = n x / = n x % = n,算术运算与赋值运算相结合,X与n均为整数,n 为常数,2.5 组合赋值运算符和组合赋值表达式,格式:变量 双目操作符 = 表达式;,双目操作符:+、-、*、/、%、&、,功能等价于:变量 =变量 双目操作符 表达式;,2019/7/11,41,运算符小结,算术运算符: +,-,*,/,% 赋值运算符: = 关系运算符: ,=, , ,sizeof( ),(type),,2019/7/11,42,不同数据类型需先转换成同一类型,然后进行运算,方式,自动进行-隐式转换 强制进行-显式转换,一、隐式转换(算术转换),优先级低的向优先级高的转换,int i; float f; double d; long e; 表达式:10+a+i*f-d/e 的结果为: double,2.6 混合运算及数据类型转换,2019/7/11,43,格式: (类型)表达式,(int) (10+a+i*f-d/e),将该结果强制转换为整型,例:int i;float f; 求:(int)f%i,取模运算要求运算分量是整数,所以先将 f 转换为整型,再做%运算,三、赋值转换,赋值符号右边的类型向左边的转换,int x; float y = 5.3; x=y;,int x=5; float y; y=x;,二、显式转换(强制转换),结果: x=5,结果: y=5.000000,2019/7/11,44,1. 优先级:分为1 15级,不同级别混合运算时,按优先级先高后低。,2. 结合性,相同级别进行运算时,按结合性处理。,单目、条件、赋值运算符的结合性是自右向左。,其它运算符的结合性是自左向右。,四、优先级与结合性,2019/7/11,45,数据类型与运算符总结,数据类型与运算符总结,十、 常用的常量表示方法 十进制 100 ,-5L; 整数 八进制 0123 ; 十六进制 0xf3d ; 实数的小数,指数形式 ; 字符常量 a; 字符串常量“ a ”。,十一、单目运算,双目运算的优先级和结合性特点,熟记基本概念和规则!,2019/7/11,46,运算符的优先级和结合方向 1,运算符的优先级和结合方向 2,值得注意的几个问题 1. 取模(求余数),求: 10 % 3 = 10 %-3 = -10 % 3 = -10 %-3 =,计算结果如右:,1 1 -1 -1,结论:结果符号与被除数一致,2. 自反赋值 变量 双目操作= 表达式,功能,变量 =变量 双目操作 表达式,int a=10,b=5; 求:a*=b+1; printf(“a=%dn”,a);,a=60,计算结果如下:,结论:表达式作为整体参加运算,课堂作业,2019/7/11,49,自反赋值,int x=5; 求:x+=x-=x*x;,结果:x = - 40,int x=3; 求:x+=x-=x*x;,结果:x = - 12,课堂作业,运算符的优先级与结合性,2019/7/11,51,2.7 综合练习 一. 单项选择,1. 字符串“ABC“在内存中占用的字节数是。 3 4 6 8 2. 设int a,b,c均为 2,表达式a+b+c+的结果是。 6 9 8 表达式出错 3. 如下程序的执行结果是。 main() int n=1; printf(“%d %d %dn“,n,+n,n-); 111 122 123 121,2019/7/11,52,二. 填 空,1. 设a=3,b=2,c=1,则ab的值为( ),abc的值为( )。 2. 设整型变量x,y,z均为5: 执行“x-=y-z”后x=( ), 执行“x%=y+z”后x=( ), 执行“x=(yz)?x+2:x-2,3,2”x=( )。 3. 求以下程序的执行结果: #include main() int x=5,y=2; printf(“1:%dn“,!(y=x/2); printf(“2:%dn“,y!=x%3); printf(“3:%dn“,x0 ,1,0,5,5,3,结果是(1:0 ),结果是(2:0 ),结果是(3:0 ),结果是(4:1 ),2019/7/11,53,三. 问答,为什么应避免对两个实数表达式作“相等”或“不相等”的判别? 2. 关系表达式能否视为一种整型表达式?为什么?,在判定两个浮点数是否相等时,由于计算机存储上出现的误差,会出现错误的结果。例如: 1.0/3.0*3.0=1.0 在数学上显然应该是一个恒等式,但由于1.0/3.0 得到的值的有效位数是有限的,并不等于0.3.,因此上面关系表达式的值为0(假), 而不为(真)。所以应避免对两个实数表达式作“相等”或“不相等”的判别。,由于关系表达式的值是整型数0或1,故也可以将其看成是一种整型表达式。,2019/7/11,54,一. C中用输入与输出函数实现输入与输出语句 二. 字符输入输出函数(getchar,putchar, 一次 一个字符) 三. 格式输入输出函数( scanf,printf,按格式输 入输出) 四. 格式控制符的使用: %d, %o, %x, %c , %m.nf, %-m.nf, %ms, %-ms等,基本输入与输出函数总结,2019/7/11,55,3 本章小结,3 本章小结 一. C语言程序结构,main( ) 程序首部 说明语句 数据结构 语句 输入语句 执行语句 运算处理 算法设计 输出语句,2019/7/11,56,二. C语言的数据类型,2019/7/11,57,C语言的基本数据类型小结,类 型 说明符 长度 数的范围 字符型 char(ASCII码) 1字节 0127 整 型 int(-215215-1) 2字节 -3276832767 长整型 long 4字节 -231231-1 单精度 float 4字节 10- 381038 双精度 double 8字节 10- 30810308 长双精度 long double 16字节 10- 4931104932,2019/7/11,58,三. 运算符小结(9类34种),算术运算符: +,-,*,/,% 赋值运算符: = 关系运算符: ,=, , ,sizeof( ),(type),,运算符的优先级与结合性,2019/7/11,60,运算符综合练习,1. 字符串“ABC“在内存中占用的字节数是。 3 4 6 8 2. 设int a,b,c均为 2,表达式a+b+c+的结果是。 6 9 8 表达式出错 3. 如下程序的执行结果是。 main() int n=1; printf(“%d %d %dn“,n,+n,n-); 111 122 123 1

温馨提示

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

评论

0/150

提交评论