《C语言程序设计》课程教案课题C语言概述课型新授课授课日期课时2教学目的1、了解C语言的特点;2、掌握C简单程序的结构;3、熟练掌握C程序的编辑、编译、链接和运行的过程。教学重点难点教学重点:C语言的特点与编程环境教学难点:C语言的编程环境教学方法主要运用讲授法,兼用演示法教学内容提纲1、C语言的简史与特点;2、简单的C程序;3、C程序的上机步骤,掌握程序的编辑、编译、链接和运行。教学过程:本章导读:阐述本章主要内容,重点要掌握的知识点。§1.1C语言概况1.1.1C语言的发展(1)C语言的发展源于人们希望用高级语言编写操作系统。(C-BCPL第二字母)ALGOL60(高级语言)-CPL(硬件支持)-BCPC-B-C-标准C-ANSIC-ISOC(2)语言既具有高级语言特性,又具有低级语言特性-中级语言。1.1.2C语言的特点C语言是从ALGOL60、CPL发展而来,既具有一般高级语言特性,又具有低级语言特性。8个特点。§1.2简单的C语言程序通过简单的C语言程序举例,总结C语言程序的结构。【例1.1】在计算机屏幕上输出“Hello,World!”/*EX1-1.C*/main(){printf(Hello,World!\n);}【例1.2】己知圆的半径,求圆的周长和面积/*EX1-2.C*/main(){intr;floatl,s;r=5;l=2*3.14159*r;s=3.14159*r*r;printf(r=%d,l=%f,s=%f\n,r,l,s);}§1.3算法算法的概念和表示方法(流程图的画法)。【例1-4】画出求1+2+3+……+100之和的流程图。§1.4C程序的实现1、源程序、目标程序、可执行程序的概念(补充)。2、C语言程序的实现:编辑、编译、连接、运行。课堂提问与讨论本章小结、作业布置课题数据类型标识符与常量课型新授课授课日期课时2教学目的1、了解C语言丰富的数据类型;2、了解常量的基本概念;3、掌握常用基本数据类型(整型、实型、字符型)数据的常量表示。教学重点难点掌握C语言数据和数据类型的相关知识教学方法由于本节内容语法点比较多,所以在教学中结合多个小示例,在练习中掌握各知识点,通过实例操作,体会语法点。教学内容提纲1、C数据类型概述2、C的基本数据类型(整型、字符型、枚举型、实型)3、标识符的定义与使用规则;4、常量的类型和定义方法及举例。教学过程:本章导读数据是程序处理的对象,是程序设计中的重要组成部分。C语言为我们提供了丰富的数据类型和运算符及语法规则。阐述本章的主要内容与学习要求。§2.1数据类型2.1.1数据类型概述YNi≤100开始s+i⇒s,i+1⇒i0⇒s,1⇒i结束输出s的值§2.1数据类型C语言的数据类型(整型、实型、字符型),数据的类型、表示形式和数据表示范围的定义。3、标识符的概念及其使用规则,包括系统定义的32个关键字。(1)标识符只能由下划线、数字0~9与大小写字母a~z,A~Z构成。TurboC最多识别由32个字符组成的标识符,MicrosoftC最多识别由8个字符组成的标识符。(2)标识符的首个字符必须是字母或下划线,而不能是数字或其它符号。(3)C语言中大小写字母是敏感的,即在标识符中,大写字母和小写字母代表不同的意义。例如:Name和name是两个不同的标识符。(4)标识符不能使用系统的关键字,因为关键字是系统保留的,它们已有特定的含义。(5)系统预定义标识符,如预编译命令名(define、include)、系统函数名(scanf、printf、getchar、putchar)等可作为用户标识符,但建议不作它用。(6)尽量作到“见名知义”,例如max、score等,而不用象abc、x1、y2等标识符。(7)避免使用易混字符,如1、l、i;0、o;2、z等。ANSIC定义的关键字共32个:autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifwhilestatic§2.2.2常量1、各类型常量的定义和表示方法的详细说明。2、C语言中特殊的不可见字符的表示方法--转义字符。3、字符串常量的定义和表示形式,以及与字符常量的区别方法。4、符号常量的概念和定义方法。#definePI3.14159这种常量定义在C语言中被称之为“宏定义”,具体方法将在本书第11章中介绍。整型(int)数据类型基本类型整型单精度型(float)字符型(char)长整型(long)短整型(short)实型双精度型(double)枚举类型(enum)共用体类型(union)构造类型结构体类型(struct)数组类型(第6章)空类型(void)指针类型(*)【例2-1】输入圆的半径,计算周长和面积#definePI3.14159main(){floatr,c,s;scanf(%f,&r);c=2*PI*r;s=PI*r*r;printf(r=%f,c=%f,s=%f\n,r,c,s);}课堂提问与讨论课堂小结、作业布置课题变量课型新授课授课日期课时2教学目的1、了解变量的概念及其三要素;2、掌握变量的定义方法;3、理解变量定义的作用和存储。教学重点难点教学重点:变量的定义方法;教学难点:不同类型变量的存储。教学方法由于本节内容语法点比较多,所以在教学中结合多个小示例,在练习中掌握各知识点,通过实例操作,体会语法点。教学内容提纲1、变量的含义;2、变量的定义方法;3、变量定义的作用;教学过程:复习回顾上次课的主要内容。§2.2.3变量1、阐述变量的含义及其三要素:①变量名②变量的存储单元③变量(存储单元存放)的值。2、变量的定义形式和举例。§2.2.3变量定义的作用1、变量定义的作用:(1)编译系统将根据定义检测函数中的变量名。(2)编译系统将对每一个变量根据它被定义的类型分配相应的存储单元。(3)编译系统根据变量被定义的类型检查该变量进行运算的合法性。(4)可以给变量赋初始值。2、变量的赋值方式。3、整型数据的存储形式。4、整型数据的溢出原因和判断。/*EX2-2.C*/main(){inta,b,c;unsignedu,v;a=32767+1;b=131071;c=-98304;u=131071;v=-98304;printf(a=%d,b=%d,c=%d\nu=%u,v=%u\n,a,b,c,u,v);}5、实型数据的存储及实型数据存储时的舍入误差。/*EX2-3.C*/main(){floatx,y;x=123456.789E5;y=x+30.0;printf(x=%f,y=%f\n,x,y);}6、字符数据的存储与使用main()/*字符与整数的通用举例*/{charch1,ch2;inti;ch1='a';i=ch1;ch2=97;printf(%dis%c\n,i,i);printf(%cis%d\n,ch1,ch1);printf(%cis%d\n,ch2,ch2);}main()/*大小写字母的转换*/{charc1,c2;c1='a';c2='B';c1=c1-32;/*'a'的ASCII码值为97,减去32得'A'的ASCII码值*/c2=c2+32;/*'B'的ASCII码值为66,加上32得'b'的ASCII码值*/printf(%c,%c,c1,c2);}main()/*字符数据的补码*/{charc;c=0362;/*八进制数,相当于十进制数242*/printf(%c%d\n,c,c);}课堂提问与讨论整型数据溢出例子,浮点数据舍入误差例子,给我们编程序的提示什么?课堂小结、作业布置课题运算符与表达式课型新授课授课日期课时2教学目的1、了解:C语言的丰富运算符,丰富的运算符可以构成灵活的表达式2、掌握算术、赋值、逗号运算符及它们构成的表达式。掌握运算符的优先级、结合性规律。教学重点难点教学重点:1、算术、赋值、自增/减运算符及它们构成的表达式2、运算符的优先级、结合性规律。教学难点:1、运算符的优先级、结合性2、自增/减运算符的运算规律教学方法由于本节内容语法点比较多,所以在教学中结合多个小示例,在练习中掌握各知识点,通过实例操作,体会语法点。教学内容提纲1、列举C语言的13类运算符,提示学习运算符时应注意的问题;2、算术运算符与表达式;3、强制类型转换运算符;4、自增自减运算符及举例;5、赋值运算符与表达式;6、逗号运算符与表达式;7、数据类型的转换。教学过程:§2.3运算符与表达式2.3.1算术运算符与算术表达式1、C语言中基本的算术运算符共有5个,分别为:+(加),-(减),*(乘),/(除),%(取模,或称求余)。2、有时为了达到某种目的,需要将一个表达式的类型转变成所需的类型,这时就要用到强制类型转换运算符。作用形式:(类型)(表达式)将表达式的值转换成相应类型例如:(double)a(int)(x+y)(float)5/33、自增自减运算符:++和--自增自减运算符++和--是C语言中最常用也最难掌握的两个单目运算符,具有右结合性。他们的作用是:只作用于变量,使变量的值自增1或自减1。如++i相当于i=i+1;--j相当于j=j-1,因此++、--实质也有赋值作用。由于不能对常量或表达式赋值,因此象3++,(a+b)--等都是错误的。【例2-8】输出下面程序中i、j的值main(){inti=5,j;j=++i+i++;printf(i=%d,j=%d\n,i,j);i=5;j=(++i)+(++i)+(i++);printf(i=%d,j=%d\n,i,j);printf(%d%d\n,i+j,j++);}§2.3.2赋值运算符与赋值表达式1.赋值运算符及其表达式的定义形式。2.复合赋值运算符C语言允许在赋值运算符“=”之前加上其他运算符以构成复合的赋值运算符。基本算术运算符和位运算符。有:+=,-=,*=,/=,%=,=,=,&=,^=,|=3.赋值类运算符的副作用及限制4.算术表达式的计算§2.3.3逗号运算符与逗号表达式【例2-9】分析下面程序的运行结果main(){inty=3,x=3,z=1;printf(%d%d\n,(++x,y++),z+2);}§2.4数据类型转换2.4.1类型转换概述三种方式:类型自动转换、赋值类型转换和强制类型转换。§2.4.3赋值类型转换赋值运算时,如果赋值运算符两侧的类型(指基本类型)不一致,系统自动将表达式的值转换成变量的类型存到变量的存储单元,转换的结果可能会:(1)当整型数据赋给浮点型变量时,数值上不发生任何变化,但有效位增加。(2)当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃。(3)将字符型数据赋给整型变量时,由于字符型数据在运算时根据其ASCII码值自动转化为整型数据,所以将字符型数据的ASCII码值存储到变量中。(4)将有符号的整型数据赋给长整型变量,系统要进行符号位扩展。将无符号的整型数据赋给长整型变量时,只需0扩展即可。(5)将长整型数据赋给整型变量或将整型数据赋给字符型变量,都有可能溢出。(6)同长度有符号整型数据赋给无符号整型变量时,数据将失去符号位功能。(7)同长度无符号整型数据赋给有符号整型变量时,数据将得到符号位功能。§2.4.4强制类型转换利用强制类型转换运算符将一个表达式的值强制转换成所需类型。即:(类型名)(表达式)§2.5程序举例,分析程序的运行结果。【例2-10】分析下面程序的运行结果main(){intx,y;x=50;y=(x=x-5,x/5);printf(y=%d,y);}【例2-11】写出下面程序的运行结果main(){inti=2,j=3,k,n,m;k=i+j;printf(%d,k);k=k+1;printf(%d,k);n=k*3;printf(%d,n);m