c语言 ppt课件
加入VIP免费下载

c语言 ppt课件

ID:491151

大小:1.24 MB

页数:71页

时间:2020-12-23

加入VIP免费下载
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天资源网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:403074932
资料简介
课程安排 总课时72,其中理论36学时,实验36学时 课程基本要求 1. 了解基本算法 2. 了解C语言的数据类型、运算符与表达式 的使用方法。 3. 熟练三种基本设计语句编程。 4. 熟练使用数组编程。 5. 熟练函数的定义和设计。 6. 了解指针的运算与使用。 教学方法及要求 1. 课堂教学 采用大屏幕投影仪授课,操作示范。 要求:认真听课、作笔记、遵守课堂纪律。 2. 实验课 培养实际操作能力、自学能力。 要求:遵守机房规则。独立完成各个实验(期未要 进行上机考试)。 3. 课后练习 每章交一次作业、上机前预习、争取多上机 4. 成绩评定 根据理论考试、上机操作和平时成绩评定。 .机位安排及机房清洁卫生 1. 换鞋上机,对号入座 要求:按学号顺序,固定机位。学习委员填写机 位表3份,交任课教师、实验室各一份。 注意: 不要穿太昂贵的鞋上机。 2. 为防止病毒,严禁自带磁盘上机 要求:磁盘集中保管,专人负责(上机发磁盘, 下课收磁盘)。 3. 保持机房清洁 要求:每天下午搞一次清洁,每周大搞一次。 .目录 1.C语言概述 2.数据类型、运算符与表达式 3.顺序设计 4.选择结构设计 5.循环结构设计 6.数组的定义和引用 7.函数的定义和调用 8.预处理命令 9.指针的使用 10.结构体与共同体 11.位运算 12.文件的操作 第一章 C语言概述 1.1C语言出现的历史背景 汇编语言编写的程序太依赖硬件,程序的可 读性和移植性都差,C语言既有高级语言 的特点又有低级语言特点. C语言是在B语言中发展起来的. 1960 ALGOL语言 1970 B语言,开发出UNIX系统(贝尔实验室) 1972 C语言 1975C语言开始被人们所接受,并开始流 行. C语言有各种不同版本: TURBO C, BORLAND C, QUICK C, MICROSOFT C. 1.2 C语言的特点 1、语言简洁,使用方便。32个关键字、9 种控制语句,书写形式自由。 2、运算符丰富。有34种运算符,包括算术、 逻辑、逗号运算、移位运算等等。 3、数据结构丰富。有整型、实型、字符型、 数组类型,指针类型、结构类型、共同 体类型等等。 4、具有结构化的控制语句,函数模块化。 5、允许直接访问物理地址,进行位操作, 可直接对硬件进行操作。 1.2 C语言的特点 6、生成目标代码质量高,执行效 率高,可以直接生成EXE文件。 7、可移植性好。 8、C语言比其它语言相对来说难 掌握。 1.3 简单的C程序介绍 例1: main( ) { printf ( “This is a C program.\n”); } 输出结果为: This is a C program. 1.3 简单的C程序介绍 例2: main( ) { int a,b,sum; a=123;b=456; sum=a+b; printf ( “sum is %d\n”,sum); } 输出结果为: sum is 579 1.3 简单的C程序介绍 例3: main( ) { int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf ( “max is %d\n”,max); sum=a+b; printf ( “sum is %d\n”,sum); } 1.3 简单的C程序介绍 继例3: int max(int x,int y ) { int z; if(x>y) z=x; else z=y; return(z); } 输出结果为: max is xxx sum is xxx 1.3 简单的C程序介绍 1 、C程序是由函数构成,至少有一个 main函数和若干个其它函数。 2、一个函数由两部分组成: (1)函数的首部:在函数的第一行。 int max(int x,int y ) (2)函数体:包含两部分(声明部分 和执行部分) 3、C程序总是从main函数开始执行的。 1.3 简单的C程序介绍 4 、一行可以有多个语句,一个语句 也可以写在不同行上。 5、但每个语句后一定要有分号; 数据定义后也要有分号; 6、C语言没有专门的输入输出语句。 由scanf和printf两个函数提供。 7、用/*…….*/来作注释,不执行。 1.4 C程序的上机环境 我们用的是turbo C。 第三章 数据类型、运算符与表达式 • 基本数据类型与特点 • 各种数据类型表示范围 • 常量的表示方法 • 变量说明语句 • 运算符与基本运算规则 • 各种表达式的使用 •基本输入输出函数使用方法 本 章 要 点 §3-1 数据与数据类型(续) C语言的数据类型 基本类型 字符型 char 整型 int 浮点型 单精度 float 双精度 double 指针类型 构造类型 数组 结构 struct 联合 union 枚举 enum 空类型 第三章 第七章 第十一章 指针类型 §3-2 常量与变量  数据数据 程序加工处理的对象及其结果  数据类型数据类型 数据在计算机内部的存储形式(占用的内存单元 数量、编码方式、取值范围等)  常量常量 在程序运行过程中不允许改变的量可用一个标识 符来代表一个常量。  变量变量 在程序运行过程中允许改变的量 一、基本概念 例题: #define PRICE 30 Main( ) { int num,total; num=10; total=num* PRICE; Printf( “total=%d”,total); } §3-2 常数与常数定义  常量定义形式 #define 标识符 常量 用定义的一个标识符来代表一个常量, 称为符号常量 # 宏命令专用定义符号 define 命令 标识符 宏替换名(一般采用大写字符) 二、常数定义与符号常量 常量定义实常量定义实 例例 注意:符号常量与变量不同,它的值在程 序运行过程中不能改变,也不能重新赋值。 §2-2 常数与常数定义  整型常量(3种形式) 10进制 8进制 16进制  实型常量(2种形式) 十进制 指数  字符常量  字符串常量 一、常数 :0 ~9 整型常量实整型常量实 例例 :0 ~7 以数字0开头 :0 ~9,A~F/a~f,以0x或0X开头 :符号、整数、小数点和小数 :用e或E和表示指数部分 实型常量实实型常量实 例例 字符常量字符常量 字符串常量字符串常量 §2-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 array[10]; 返返 回回 a=b+a=b+TWOTWO;; printf(”%s”,printf(”%s”,TVTV);); s=s=PAIPAI*r*r;*r*r; int array[int array[MAXMAX];]; 注:符号常量名一般用大写,变量用小写。 符号常量在程序的执行部分不能再赋值。 3.2.2 变量 值在程序执行过程中可随时改变的量称为 变量。一个变量在内存中占据一定的存 储单元,在该单元中存放变量的值。变 量名实际上是一个符号地址。 A 变量名 变量值 存储单元 13  变量的说明格式: [类型修饰符] 类型说明符 变量列表;  例如:int i; char ch, str; long k=1, m=0x12345678; double x, y=1;  变量说明意味着确定了:该变量 占用内存单元的数量, 数据在内存的表示方式, 数据的取值范围。 标识符(变量名)的说明 (1)标识符只能由字母、数字和下划线组成, 且第一个字符是字母或下划线。 例:sum,_total,a123-e,Basic, m.e.12, er#we,1asd,a>b (2)大写字母和小写字母被认为是两个不同 的字符。 (3)一般只认前面的8个字符。 变量的说明 (1)变量要先定义再使用 例:int student; stuent=10; (2)每个变量有一确定的类型 例:int student; student=15;student=34.56; (3)每个变量所进行的运算必须合法。 Float a,b,c; a=10.4;b=3.6;c=a%b; 3.3 整型数据 3.3.1整型常量的不同表示方法: 10进制: 100 -8 0 +123 8进制: 010 024 0100 16进制: 0x38 0x10 0X10 0XFF 0xa 整型常量的类型: 1.在整型表示范围之内,根据值大小默认类型 2.在常量后面加l或L,则认为它是long int型 例如:都是long int型常量 10进制:-123L 0L 432l 8进制: 010L 024L 0100L 16进制: 0x38L 0x1000L 0XFFl x0a0000l 3.3.2整型变量 1、在内存中的存放形式。 以二进制的补码形式,占两个字节,左边一位表示 符号,“0”为正,“1”为负。 补码的表示:正数的补码与原码相同。 负数的补码是将该数的绝对 值的二进制形式,按位取反 后再加1。 如-10 的表示方法 10的原码:0000000000001010 取反 1111111111110101 再加1 1111111111110110 (-10的补码) 2.整型数据的分类 类型 比特数 取值范围 Int 16 -32768 ~+32767 Unsigned int 16 0~65535 Short 16 -32768 ~+32767 Unsigned short 16 0~65535 Long 32 -2147483648~2147483647 Unsigned long 32 0~4294967295 3、整型变量的定义 例:main( ) {int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\”,c,d); } 4、整型数据的溢出 §2-1 数据与数据类型-int int型数的表示范围:二进制 16bit (2Byte) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 =1=3intint型整数的最型整数的最大值值 int型表示数的范围:- 32768 ~ 32767 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 注意:使用中要防止数据溢出注意:使用中要防止数据溢出 =-1intint型整数的最型整数的最小值值 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 =215-1=32767 =-215=-32768 §2-1 数据与数据类型-int main( )main( ) { int i;{ int i; i= 1; i= 1; i=i*2; printf(”\n i=i*2; printf(”\n i=%d”,i);i=%d”,i); i=i*3; printf(”\n i=i*3; printf(”\n i=%d”,i);i=%d”,i); i=i*4; printf(”\n i=i*4; printf(”\n i=%d”,i);i=%d”,i); i=i*5; printf(”\n i=i*5; printf(”\n i=%d”,i);i=%d”,i); i=i*6; printf(”\n i=i*6; printf(”\n i=%d”,i);i=%d”,i); i=i*7; printf(”\n i=i*7; printf(”\n i=%d”,i);i=%d”,i); i=i*8; printf(”\n i=i*8; printf(”\n i=%d”,i);i=%d”,i); i=i*9; printf(”\n i=i*9; printf(”\n i=%d”,i);i=%d”,i); i=i*10; printf(”\n i=i*10; printf(”\n i=%d”,i);i=%d”,i); }} 期望结果期望结果 i=2i=2 i=6i=6 i=24i=24 i=120i=120 i=720i=720 i=5040i=5040 i=40320i=40320 i=362880i=362880 i=3628800i=3628800 实际运行结果 i=2 i=6 i=24 i=120 i=720 i=5040 i=-25216 i=-30336 i=24320 产生 数据 溢出 上溢 下溢 返返 回回 例:main( ) {int a,b,; a=32767; b=a+1; printf(“%d,%d\”,a,b); } 结果为:32767,-32768 3.3.3、整型常量的类型 1、整数的范围如果在-32768~+32767, 可以是int型或 long int型。 2、整数的范围如果在- 2147483648~+2147483647,则是 long int型。 3、int 型与short int型是等同的。 4、unsigned型是无符号的,注意范围。 5、在一个整常量后加字母l或L,则认为 是long int型。 3.4 实型数据  3.4.1实型常量的表示方法 两种表示形式:十进制小数形式 指数形式:123e-4,e后面 的数必须为整数。 3.4.2实型变量 1、存放形式:占4位,按指数形式存储, 分成小数和指数部分来存放。 2.实型变量的分类 类型 比特数 有效数字 数值范围 float 32 6~7 10-37~1038 Double 64 15~16 10-307~10308 Long double 128 18~19 10-4931~104932 3。实型数据的舍入误差 由于实型变量的有效位有限,有效位外的 数字将被舍去,所以会产生一些误差。 例:main( ) { float a,b; a=123456.789e5; b=a+20; printf(“%f”,b); } § 3.5 字符型数据 字符型常量:用字符型常量:用单引号单引号括起来的括起来的单个单个字符字符 实例:实例:’’AA’’ ’’gg’ ’’ ’##’ ’’ ’00’ ’’ ’22’’ ’ ’++’ ’’ ’,,’ ’’ ’;;’ ’’ ’((’ ’’ ’))’’ 字符定界符:字符定界符:单引号单引号 ’’ 还有一种特殊形式的字符常量还有一种特殊形式的字符常量,,以以“\”“\”开头的字符序列开头的字符序列.. 见表见表3.3.3.3. 返返 回回 如何表示不可显示字符? 回车/退格/TAB? 如何表示定界符? ’’’ 产生歧异 转义符\:将\后面的字符转换为其它含义 表3.3 转义字符及其含义 字符形式 含义 ASCII码 \n 换行,将当前位置移到下一行开头 10 \t 水平制表(跳到下一个tab位置) 9 \b 退格,将当前位置移到前一列 8 \r 回车,将当前位置移到本行开头 13 \f 换页,将当前位置移到下页开头 12 \\ 反斜杠字符“\” 92 \‘ 单引号字符 39 \“ 双引号字符 34 \ddd 1到3位8进制数所代表的字符 \xhh 1到2位16进制数所代表的字符 3.5.2 字符变量  每个字符变量只能放一个字符.  字符变量在内存中是以二进制的形式来 存放的,与整形数据可以通用.一个字符 数据既可以用字符形式来输出,也可以用 整形形式来输出.C语言允许字符与整数 直接进行算术运算. 例子1: main( ) { char c1,c2; c1=97;c2=98; printf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 例子2: main( ) { char c1,c2; c1=‘a’;c2=‘b’; c1=c1-32; c2=c2-32; printf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 3.5.4 字符串常量  字符常量是由单引号括起来的,字符串常 量是由双引号括起来的.如“china”.  如‘a’和“a”是两个不同的概念.  C语言规定:每个字符串是以‘\0’为结 束标志的.所以“a”其实在内存中是占 两个字节的位置,而‘a’在内存中是占 一个字节的位置. Char c C=“a” (X) §2-2 常数与常数定义-字符串常数 实例:”This is C string.” ”a” ” ” (1个空格) ”” (不含空格) 串定界符:双引号 ” 字符串长度:字符串中包含的字符数量。 返返 回回 串长=17 串长=1 串长=1 串长=0 "\t\"Name\\Address\n" 串长=15 空串 实例: "\"C is very easy.\"" 串长=17 注意: 字符串"a" 与 字符’a’ 的区别 "He said\"ok.\"\n" 串长=13 3.6 变量赋初值  对变量,可以在定义时给定初值  如int a=3,b,c;  float f=3.14;  char c=‘a’;  但不能 int a=b=c=3;  int a=3,b=3,c=3;  a=b=c=3; 3.7 各类数值型数据间的混合运算  高double float   long   unsigned  低 int char,short 3.8 算术运算符和算术表达式  3.8.1 C运算符简介 1、算术运算符 +、—、*、/、% 2、关系运算符 >、 =、 12、下标运算符 [ ] 13、其它运算符 3.8.2 算术运算符和算术表达式 1、基本的算术运算符 2、算术表达式和运算符的优先级与结合性 先乘除后加减,同一级的结合方向“自左而 右” § 运算符和算术表达式 一、算术运算符  运算符(双目运算符/单目运算符) + 加法运算 12 正值运算 14 - 减法运算 12 负值运算 14 * 乘法运算 13 / 除法运算 13 % 求余运算 13  优先级:* / % 同级(高),+ - 同级(低)  结合性:相同优先级运算符进行运算时的次序 自左向右(标记为 → ) § 运算符-算术运算实例 1.参加运算的对象都是int型,结果截取为int型 10/3 11/3 10.0/3 11/311/3.. 1/2 1./2 10/5*3 10/(5*3) 2.求余运算的对象必须是整型 9%3 1%3 10%3 10%-3 -10%3 -10%-3 =3 =3 =3.3333 =3.66667 =0 =0.5 =6 =0 =0 =1 =1 =1 =-1 =-1 3、强制类型转换运算符 格式:(类型名)(表达式) 如 float x,y; x=5.67;y=78.6; (int)x+y 的结果为83.6 x=5.67 (int)x 5 (int)(x+y) 84 §4 自增、自减运算符  运算符((单单目目 ←← )) ++ 自增自增 1414 – – 自减自减 1414  ++和– –为单目运算,只能作用于变量  只能对int、char、long和指针变量进行运算  功能: ++x x=x+1 (前缀:使用X之前,先改 – –x x=x–1 变X的值) x++ x=x+1 (后缀:使用X之后,再改 x– – x=x–1 变X的值)  自增(自减)有前缀和后缀之分。 前缀形式: 先自增(自减)再引用 后缀形式: 先引用再自增(自减)  前缀与后缀的区别: y=++x; x=x+1; y=x; x先加1再赋值 y=x++; y=x; x=x+1; x先赋值再加1 如 I=3; j=++I-4; (j=0,l=4) j=I++; (j=3,l=4) 说明: 1、自增或自减,只能用于变量,不能用 于常量和表达式。 2、++或- -的结合方向是“自右至左” j=(-I)++ 相当于j=-(I++)(j=-3,I=4) 不要使用这种表达式: I+++I+++I++ §2-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   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; §自增自减运算实例  实例 已知:int x = 2, y = 5, z; z = ++x; z = ++x * ++y; z = x++ * ++y; z = ++x * y++; z = x++ * y++; z = ++x * ++x; 逻辑虽然正确 ,但实际编程 中容易产生误 解,应当避免 §自增自减运算实例  实例实例 已知:已知:int i=1, j=2, k;int i=1, j=2, k; k=i+++j;k=i+++j; C C语言处理运算符(标识符)时,遵循语言处理运算符(标识符)时,遵循自左向右自左向右组合组合 的原则,两个的原则,两个‘‘++’’号是一个运算符,故处理成号是一个运算符,故处理成 ((i++i++)+j)+j。。 k = i+k = i+++++++++jj; ; 不能编译通过。原因是编译器将不能编译通过。原因是编译器将前两个前两个‘‘++’’处理成处理成 自增,接下来又将两个自增,接下来又将两个‘‘++’’号处理为自增,故不合语号处理为自增,故不合语 法。法。 编程者可用空格或括号来表示正确的含义:编程者可用空格或括号来表示正确的含义: k=ik=i++++ + + ++++j;j; 注意:一般不要用这样的语句。注意:一般不要用这样的语句。 3.9 赋值运算符和赋值表达式  1、赋值运算符:=  2、类型转换 如果=两边类型不同,将右边的表达式结果转 为左边的类型。 如 int I; float f; double d; I=3.45 ; (I的结果为3) f=23; (f的结果为23.00000) d=123.4536777;f=d; (f的结果为123.4537, 取七位有效数值) d=123.456789e100; f=d; (f的结果发生溢出的错误)  (1)、将int\short\long型数据赋给char型 时,只将低8位传送。  Int I=289; (100100001)  Char c;  C=I (低8位的结果为33 ,对应为!字符)  (2)、将unsigned int 型数据赋给 int 型 变量时,注意符号。  unsigned int a=65535;  Int b;  b=a; (b的结果为-1) 3、复合的赋值运算符 在赋值运算符“=”之前加上其它运算符, 可以构成复合的运算符。 如:a+=3 ( a=a+3 ) x*=y+8 ( x=x*(y+8) ) x%=3 ( x=x%3 ) 4、赋值表达式 注意:赋值表达式是右结合律的。 如:a=b=5 a=(b=5) a=b=4+c=6 a=(b=4)+(c=6) a=12; a+=a-=a*a; ( a-=a*a a=a-a*a a=-132 a+=-132 a=a+(-132) a=- 264) 赋值操作不仅可出现在赋值语句中,也可以以 表达式形式出现在其他语句中(如输出或 循 环语句)。 b=3; printf(“a=%d”,a=b); 结果为 a=3 3.10逗号运算符和逗号表达式 格式为: 表达式1,表达式2 (先求表达式1,再求表达式2,结果取表达式 2的值) 注意:逗号运算符的运算级别最低,低于赋值 运算符。 如: a=3; a=3*5,a*4 (a的结果不等于12,而是逗号表 达式的结果为60) X=(a=3,6*a) x的结果为18 X=a=3,6*a x的结果为3,整个表达式的结 果为18 逗号表达式的扩展为: 表达式1,表达式2,…….表达式n §2-8 综合举例  1、运算符有优先级,在C语言中关于运算符 优先级的正确叙述是 。 A) 逻辑运算符高于算术运算符,算术运算 符高于关系运算符 B) 算术运算符高于关系运算符,关系运算 符高于逻辑运算符 C) 算术运算符高于逻辑运算符,逻辑运算 符高于关系运算符 D) 关系运算符高于逻辑运算符,逻辑运算 符高于算术运算符  答案:B §2-8 综合举例  2、在以下关于C语言的不严格的叙述中,错误的是 A)大写字母和小写字母的意义相同 B)有些不同类型的变量可以在一个表达式中运算 C)在赋值表达式中等号(=)左边的变量和右边的值可 以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义  答案:A  3、C语言中的简单数据类型包括 。 A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型  答案:B §2-8 综合举例  4、在C语言中,错误的int类型的常数是 。 A) 32768 B) 0 C) 037 D) 0xAF  答案:A  5、下列常数中不能作为C的常量的是 。 A) 0xA5 B) 2.5e-2 C) 3e2 D) 0582  答案:D  6、在C语言中,十进制的47可等价地写为 。 A) 2f B) 02f C) 57 D) 057  答案:D  7、 已 知 : int a=4,b=5,c;则 执 行 表 达 式 “c=a=a>b”后变量a的值为 。 A) 0 B) 1 C) 4 D) 5  答案:A §2-8 综合举例  8、下列可以正确表示字符型常数的是 A) "a" B) ’\t’ C) "\n" D) 297  答案:B  9、以下错误的转义字符是 A) ’\\’ B) ’\’’ C) ’\81’ D) ’\0’  答案:C  10、已知:float x=1,y;则:y=++x*++x的结果是 A) y=9 B) y=6 C) y=1 D) 表达式是错误的  答案:D  11、已知:char ch=’A’;则下列表达式的值是 ch = (ch>=’A’&&ch

资料: 29.3万

进入主页

人气:

10000+的老师在这里下载备课资料