C语言课程教案.doc

上传人:wux****ua 文档编号:9984274 上传时间:2020-04-09 格式:DOC 页数:91 大小:238KB
返回 下载 相关 举报
C语言课程教案.doc_第1页
第1页 / 共91页
C语言课程教案.doc_第2页
第2页 / 共91页
C语言课程教案.doc_第3页
第3页 / 共91页
点击查看更多>>
资源描述
C语言课程教案详解章节题目:第一章 C语言概述 教学时间: 4学时 教学目的:1、了解C语言的产生过程2、掌握C程序结构3、掌握C程序开发过程4、掌握用TURBO C运行一个C程序。内容、重点、难点:内容:1.1 C语言的历史和特色1.2 C程序结构1.3 C程序的开发过程 重点: 1、掌握C程序的基本结构构成2、学会用Turbo C运行一个C程序难点: 掌握C程序的开发过程第1章 C语言概述C语言是国际上广泛流行的一门高级程序设计语言,具有语言简洁、使用方便灵活、移植性好、能直接对系统硬件和外围接口进行控制等特点。本章将简要地介绍它的产生过程和特点、C程序结构及C程序的上机步骤,以便对C语言有一个概括的认识。1.1 C语言的历史和特色1.历史1)1960年出现了ALGOL 60。2)1963年和1967年, 在ALGOL 60的基础上推出了CPL和BCPL 语言更接近于硬件。3)1970年美国贝尔实验室对BCPL语言做了进一步简化,设计了B语言,并用B语言编写了第一个UNIX操作系统。4)在1972年至1973年间,贝尔实验室的D.M.Ritchie在B语言的基础上设计出C语言。2.特色1)简洁紧凑,使用方便灵活C语言一共只有32个关键字、9种控制语句,程序书写自由,压缩了一切不必要的成分,语言简练。2)运算符丰富C语言有34种运算符和15个等级的运算优先顺序,使表达式类型多样化,可以实现在其它语言中难以实现的运算。3)数据类型丰富C语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、联合体类型及枚举类型等,能用来实现各种复杂的数据结构的运算。4)模块化结构C语言用函数作为程序的模块单位,便于实现程序的模块化,而且便于模块间相互调用及传递数据。5)语法限制少和程序设计自由度大C语言允许程序编写者有较大的自由度,放宽了以往高级语言严格的语法检查,较好地处理了“限制”与“灵活”这一对矛盾。6)比较接近硬件C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。7)生成目标代码质量高、程序执行效率高一般只比汇编程序生成的目标代码效率低1020。8)可移植性好基本上不做修改就能用于各种型号的计算机和各种操作系统。1.2 C程序结构下面列出几个简单的C程序来说明C程序的结构特征。例1.1 输出一行信息。main ( )printf (This is first C programme! n);该程序的作用是输出一行信息:This is first C programme!main 表示“主函数”;函数体用大括号括起来。本例题中主函数仅包含一个语句,该语句由printf ()输出函数构成。括号内双引号中的字符串按原样输出;n是换行符,即在输出 This is first C programme! 后回车换行;语句后面有一个分号,表示该语句结束,这个分号必不可少。例1.2 计算两个数之和。main ( ) /*求两个数之和*/int a ,b,sum; /*定义3个整型变量*/a=123; /*以下3行为C语句*/b=321; sum=a+b;printf (sum is %dn,sum);该程序的作用是求两个整数 a 和 b之和 sum ,并在屏幕上输出 sum。程序中,/*/表示注释部分,对编译和运行不起作用。第3行是变量说明,使用的a、b和sum为整型(int)变量。第4行是两个赋值语句,使a的值为123,b为321。第5行使sum的值为a+b,第6行的%d是输入输出的“格式说明”,表示“十进制整数类型”,printf函数中括号内最右端的sum是要输出的变量,当然它的值为444。例1.3 比较两个数的大小。main ( ) /*主函数,功能输入两个整数,判断后输出较大的数*/int a ,b,c; /*定义3个整型变量*/scanf (%d,%d,&a,&b); /*输入变量a和b的值*/c=max(a,b);printf (max= %dn,c); /*输出c的值*/int max (int x,int y) /*定义max()函数,函数值为整型,x,y为形式参数、整形变量*/int z; /*定义main ()函数内部用到的变量z为整数*/if (xy) z=x; /*将x,y中较大的值赋给z*/else z=y;return (z); /*将z值返回。通过max()函数带回调用处*/该程序的作用是从键盘输入两个整数,然后在屏幕上输出它们中较大值的数。程序的第5行是调用max()函数,在调用过程中将实际参数a和b的值,分别传递给max()函数中的形式参数x和y,然后得到一个返回值(z的值),并把这个值赋给变量c。运行情况如下:2,8 max=8从以上几个例题,可以看到C程序的结构特征。1. C程序是由函数构成的。一个C程序至少有一个main ()函数,也可以包含一个main ()函数和若干个其它函数。2. 一个函数有两部分构成。函数说明部分,即函数的第一行,包括函数类型、函数名、形参类型、形参名。函数体,由一对大括号括起来的语句集合。函数体一般包括有声明部分和执行部分。声明部分用于定义所用到的变量。执行部分由若干语句组成。3. 一个C程序总是从main ()函数开始执行,而不管main ()在源程序中的位置,执行完主函数中的所有语句后,程序就结束。4. 每个语句和变量定义的最后必须要有一个分号,分号是C语句的必要组成部分。5. C语言本身没有提供输入和输出语句,输入输出操作是通过库函数scanf ()、printf ()等函数来实现的。6. C语言用/*/对程序进行注释,/和*之间不允许留有空格,/*和*/应当一一对应匹配,注释部分允许出现在程序中的任何位置上。程序中加一些注释,可以增加程序的可读性。1.3 C程序的开发过程用C语句编写的程序称为“源程序”。1. C程序开发的4个基本步骤一般C程序开发要经历4个基本步骤:编辑编译连接运行(1)编辑使用字处理软件或编辑工具将源程序以文本文件形式保存到磁盘,源程序文件名由用户自己选定,但扩展名必须为.c。(2)编译编译的功能就是调用“编译程序”,将已编辑好的源程序翻译成二进制的目标代码。如果源程序没有语法错误将产生一个与源程序同名,以.obj为扩展名的目标程序。(3)连接编译后产生的目标程序往往形成多个模块,还要和库函数进行连接才能运行,连接过程是使用系统提供的“连接程序”运行的。连接后,产生以.exe为扩展名的可执行程序。(4)运行可执行程序生成后,就可以在操作系统的支持下运行,若执行结果达到预期的目的,则开发工作到此完成,否则,要进一步地经过以上过程以取得最终的正确结果。2. 使用Turbo C开发程序的方法现在,多数的C程序开发使用一个集成Turbo C开发工具来完成。下面简单介绍使用Turbo C开发程序的方法。(1)Turbo C的目录及文件Turbo C应装入磁盘的某一目录下,例如,放在c盘的根目录下一级TC子目录下,Turbo C安装完成后,磁盘上将增加以下目录及文件:TC子目录(c:tc):其中包括tc.exe、tcc.exe、make.exe等执行文件。INCLUDE子目录(c:tcinclude):其中包括stdio.h 、string.h、math.h等头文件。Lib子目录(c:tclib):其中包括graphlics.lib 、math.lib 、math1.lib等库函数文件。BGI子目录(c:tc|bgi):其中包括tc运行时所需的信息。通过执行tc.exe命令就可以进入Turbo C环境,如果用户的当前目录是Turbo C 所在的子目录tc,则只需从键盘输入“tc”命令即可。C:tctc (2)Turbo C集成环境作简单介绍,它包括以下几个方面的内容:主菜单窗口编辑窗口信息窗口功能键提示行3. 用Turbo C运行第一个C程序下面介绍使用Turbo C编辑和运行一个简单的C程序的操作步骤:(1)编辑或修改源程序。在编辑窗口键入一下源程序:main ( )printf ( This is my first C program);然后执行“File/save”命令;或按“F2”键存盘。(2)编译与连接源程序。执行“compile/make exe file”命令或直接按下F9键,即可一次完成编译与连接。(3)运行程序。按“F10”键返回主菜单,用光标移动键将亮条移到“Run”菜单选项回车或按下“Ctrl+F9”键,即可运行刚生成的可执行文件。此时Turbo C工作窗口消失,屏幕上显示程序运行结果:This is my first C program若发现运行结果不对,可再按“F10”键回工作窗口,重复上述步骤。(4)运行程序后查看程序的运行结果。(5)退出Turbo C,按“Alt+X”键,系统即退出Turbo环境。本章小结本章对C语言进行了总体介绍,对学生的要求是掌握基本概念,学习的过程要紧密结合本章的知识要点:1. 程序的构成,main ()函数和其他函数。2. 头文件、数据说明、函数的开始和结束标志。3. 源程序的书写格式。4. C语言的风格。作业:章节题目: 第二章 顺序结构程序设计 教学时间: 6学时 教学目的:1、掌握常量与变量的书写和定义2、掌握三种基本数据类型3、掌握运算符和表达式的使用4、掌握顺序结构程序设计的方法内容、重点、难点:内容:2.1 常量和变量2.2 整型数据2.3 实型数据2.4 字符型数据2.5 变量的初始化2.6 运算符和表达式重点: 1、三种基本数据类型的定义和使用2、各种运算符的使用难点: 1、运算符的使用 2、使用顺序结构编程 第2章 顺序结构程序设计顺序结构是一组按书写顺序执行的语句。本章将主要介绍程序中用到的一些基本要素(常量、变量、运算符、表达式和输入输出语句等),以及基本的数据类型(整型、实型和字符型)。2.1 常量和变量2.1.1常量1)常量:在程序运行的过程中,其值不能被改变的量。如2、4、-1.6等。2)分类:普通常量和符号常量3)符号常量:用一个标识符代表一个常量,这样的标识符称为符号常量。如用PI代表3.14159264)注意:符号常量的值在其作用域内不能改变,也不能再被赋值。如在程序中,对PI重新赋值: PI2;这样是不允许的。2.1.2变量1)变量C语言规定在程序运行的过程中,其值可以改变的量,称为变量。2)标识符:用来标识变量名、符号常量名、函数名、数组名、类型名和文件名的有效字符序列。3)C语言规定:标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。一般变量名的长度不能超过8个字符。如下面是合法的标识符,也是合法的变量名:sum,average,day,month,student,_above,k_1_2_3,basic下面是不合法的标识符和变量名: M.D.John,$123,#33,3D64,a,-ab在C语言中,要求对所有用到的变量作强制定义,也就是先定义,后使用。2.2 整型数据2.2.1整型常量C语言整型常数可用以下三种形式表示:1. 十进制整数:数码直接开头的十进制数。2. 八进制整数:以0开头的常量是八进制数。3. 十六进制整数:以0x开头的数是16进制数。2.2.2整型变量1.整型变量的分类整型变量可分为:基本型、短整型、长整型和无符号型四种,其定义的关键字如下:(1)基本型,以int表示。范围为-3276832767,即-215(215-1)。(2)短整型,以short int或short表示。范围与基本型相同。(3)长整型,以long int或long表示。若一个整型常量后面加上一个字母l或L,则认为是long int型常量。范围为-2147483648214783647即-231(231-1)(4)无符号型,在实际应用中变量的值常常是正的,如年龄、工资、成绩等,因此可以将变量定义为无符号类型。无符号型又分为: 无符号整型,以unsigned int或unsigned表示。 范围:065535 即0(216-1)。 无符号短整型,以unsigned short表示。范围:065535即0(216-1)。 无符号长整型,以unsigned long表示。范围:04294967295即0(232-1)。2. 整型变量的定义变量的定义格式为:数据类型 变量表列;其中若定义多个同类型的变量,则用逗号分开。例: int a,b;(指定变量a,b为整型) unsigned short c,d;(指定变量c,d为无符号短整型) long e,f;(指定变量e,f为长整型)3. 整型数据的输入整型变量键盘输入,是通过scanf函数实现的,scanf函数是数据输入函数,格式为: scanf (格式控制,地址表列);例如:scanf (dd,&a,&b);(1)格式控制是用双引号括起来的字符串,由和格式字符组成,作用是将输入数据转换为指定的格式输入。(2)格式字符,对于不同的数据用不同的格式字符。d格式符是用来输入十进制整数的。因为本节问题中变量a,b是整型变量,所以输入时,用了d格式符。(3)&a,&b中的&是地址运算符,&a是指a在内存中的地址。上面scanf函数的作用是:将a、b的值放到a,b在内存的地址单元中去。所以,在该问题中,若输入:3 5则输出结果为 ab84. 整型数据的输出整型数据的输出用printf函数来实现。如printf(abd,c);printf函数的格式为: printf(格式控制,输出表列);(1)格式控制和输入函数scanf的格式控制基本一致。(2)输出表列是需要输出的数据或表达式。(3)在输出整型数据时,格式字符如下: d,按整型数据的实际长度输出。 md,m为输出字段的宽度,如果输出数据的位数小于m则左端补以空格,若大于m,则按实际位数输出。例如 printf (4d,%4d,a,b);若a123,d12345,则输出结果为 V123,12345(注:V表示空格字符,下同) %ld,输出长整型数据。如 long a135790; printf (%8ld,a);输出结果为:VV135790一个int型数据可以用%d或%ld格式输出。 %u,输出unsigned型数据,即无符号类型,如unsigned u;那么u在输出的时候,应该用u格式控制符,那么输出时应使用语句:printf (%u,u);例2.1 从键盘输入任意一个整数,输出这个数的平方的值。 main( ) int a;long s;scanf(%d,&a);sa*a;printf(sldn,s); 2.3 实型数据2.3.1实型常量实数在C语言中,又称浮点数。实数有两种表示形式:1十进制数形式。由数字和小数点组成(注意必须有小数点)。2指数形式。但注意字母e(或E)之前必须有数字,且e后面指数必须为整数,如e3、2.1e3.5、.e3、e都不是合法的指数形式。2.3.2实型变量 在本节问题中,已知两个数是实数,那么两数之和与积也必定为实数,所以需要设四个实型变量,分别为a,b,sum,mul。定义语句为: float a,b,sum,mul; C实型变量分为:1. 单精度型(float型) 一个float型数据在内存中占4个字节(32位),在TURBO C中,单精度实数的范围约为10381038之间并提供7位有效位;小于10-38的数被处理成零值。2. 双精度型(double型) 一个double型数据在内存中占8个字节,双精度实数的数值范围约为1030810308。并提供1516位有效位,具体精确多少位与机器有关;小于10-308的数被处理成零值。2.3.3实型数据的输入和输出1. 实型数据的输入实型数据的输入也用scanf函数实现的,格式符使用的是f字符,以小数的形式输入数据,也可以使用e字符,以指数的形式输入数据。如本节问题中的scanf(%f%f,&a,&b);2. 实型数据的输出实型数据的输出用printf函数实现,格式符使用f字符,以小数的形式输出数据。输出时应注意:(1)%f:不指定字段宽度,整数部分会全部输出,并输出6位小数。(2)%m.n:指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。(3)%m.n:指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则右端补空格。(4)若是双精度型变量输出时应用%lf格式控制,如 double f;输出时应使用语句: printf (%lf,f);2.4 字符型数据2.4.1字符常量1.字符常量C语言的字符常量是用一对单引号括起来的单个字符。如:a、b、x、D、?、$等都是字符常量。2.转义字符除了这样的字符常量外,C语言还允许用一种特殊形式的字符常量,就是以一个开头的字符序列.例如,前面已经用到,在printf函数中的n,它表示一个换行符。例2.2 字符常量的输出。 main ( )printf (ab cntde);运行结果: ab c de2.4.2字符变量在本节问题中,设了两个字符型变量c1和c2。定义形式如下: char c1,c2;它表示 c1和 c2为字符型变量,各可以放一个字符。可以用下面语句对 c1,c2赋值:c1a;;c2b;因此在内存中一个字符变量只占一个字节。2.4.3字符数据的存储形式 字符在内存中存储的不是字符本身,而是它的ASCII码,例如字符a的ASCII码为97,b的ASCII码为98。那么字符的存储形式与整数的存储形式是类似的。C语言使字符型数据和整型数据是通用的。例2.3 main ( ) char a1,a2; a197;a298; printf (%c %cn,a1,a2); printf (%d %dn,a1,a2); 程序运行时输出如下: a b 97 98字符型数据和整型数据是通用的,但应该注意字符数据只占一个字节,它只能存放0255范围内的整数。例2.4 大小写字母的转换。 main ( ) char a1,a2;a1a;a2b;a1a132;a2a232;printf (%c %cn,a1,a2);运行结果为:A 程序的作用是将两个小写字母a和b转换成大写字母和。a的ASCII码为97,而A为65,b为98, B为66。从ASCII码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。 2.4.4字符型数据的输入和输出1getchar函数和putchar函数 例2.5 #include stdio.hmain ( ) char c; cgetchar ( ); putchar (c); 在运行时,如果从键盘输入字符aa (输入a后,按回车键)a (输出变量c的值a)注意:getchar ( )只能接收一个字符。putchar ( )也只能向终端输出一个字符。在使用getchar函数和putchar函数时,程序的首部需使用预编译命令#include stdio.h。2scanf函数和printf函数 例2.6 main ( ) char c1,c2; scanf (%c%c,&c1,&c2); printf (%c%c,c1,c2); 若输入为 ab 则输出为 ab 在使用scanf函数和printf函数输入输出字符型数据时,使用%c格式控制,用来输入输出单个字符。注意,在用%c格式输入字符时,空格将以有效字符输入:scanf (%c%c%c,&c1,&c2,&c3);若输入 aVbVc则将字符a送给c1,字符空格V送给c2,因为空格也是一个有效字符,字符b送给c3。%c只需要读入一个字符,用了空格做间隔,所以会出现这样的问题。2.5字符串常量字符串常量是用双引号括住的字符序列。如: How do you do,CHINA,a等都是字符串常量.可以输出一个字符串,如 printf (How do you do.);注意: 不要将字符常量与字符串常量混淆。a是字符常量,a是字符串常量,二者不同。C规定:在每个字符串的结尾加一个“字符串结束标志”以便系统据此判断字符串是否结束。以0作为字符串结束标志。0是ASCII码为0的字符,从ASCII码表中可以看到ASCII码为0的字符是“空操作字符”不引起任何操作。2.5 变量的初始化变量的初始化,就是在定义变量的同时给变量赋予初值。可以采用说明变量的类型,然后再赋值的方法,也可以对变量类型说明的同时,给变量赋初值。1先定义后赋值 int a,b,c; a2; b5;c10;2定义和赋值同时进行 int a5; short b10; char ca; float d7.8;3对几个变量同时赋一个初值 int a110,a210,a310;不可以写成: int a1a2a310;但是也可以写成: int a1,a2,a3; a1a2a310;初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。相当于一个赋值语句。例如:int a10; 相当于: int a;a10;又如:int a,b,c20; 相当于: int a,b,c;c20;2.6 运算符和表达式2.6.1算术运算符和表达式例2.7 已知正方形的长和宽,求正方形的周长。分析 正方形的周长公式为:l2*(a+b),已知正方形的长和宽可以计算周长。 main ( )int a,b,l; a3; b4; l2*(a+b); printf (l%dn,l);1. 基本的算术运算符 (加法运算符,或正值运算符) (减法运算符,或负值运算符)* (乘法运算符)/ (除法运算符)% (模运算符,或求余运算符)注意:(1)两个整数相除结果为整数。但是如果相除的两个数中,至少有一个为实数,则结果为带小数的商。(2)% 模运算符,要求操作数均为整型数据,如7%4的值为3。2. 算术表达式用算术运算符和括号将操作数连接起来的,符合C语法规则的式子,称C算术表达式。在表达式求值时,按运算符的优先级别高低次序执行。 例如: 10+a+1.58765.12*b在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。 3. 强制类型转换可以用强制类型转换运算符将一个表达式转换成所需类型。例如(double)a (将a转换成double类型)(int)(x+y) (将x+y的值转换成整型)(float)(5%3) (将5%3的值转换成float型)一般形式为: (类型名)(表达式)注意:(1)类型名应用括号括起来。如(int)(x+y) (2)已知float x; 对于(int)x,x仍然是float类型,而整个表达式(int)x为整型。2.6.2赋值运算符和赋值表达式1. 赋值符号赋值符号就是赋值运算符,将一个数据赋给一个变量。如a3。2. 类型转换如果赋值运算符两侧的类型不一致,要进行类型转换。(1)将实型数据赋给整型变量时,舍弃实数的小数部分。如i为整型变量,执行i3.56的结果是使i的值为3。(2)将整型数据赋给实型变量时,数值不变,但以浮点数形式存储到变量中。3. 复合的赋值运算符常用的赋值运算符有以下几种: ,*,/,%例如:a3 等价于 aa3x*y8 等价于 xx*(y8)x3 等价于 xx%34. 赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。例如:abc5 (赋值表达式值为5,a、b、c值均为5)a5+(c6) (表达式值为11,a值为11,c的值为6)a(b4)+(c6) (表达式值为10,a值为10,b等于4,c等于6)三、逗号运算符和逗号表达式逗号运算符将两个表达式连接起来。如 3+5,6+8称为逗号表达式。逗号表达式的格式为表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。例如逗号表达式 a3*5,a*4先求解a3*5,得a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。课堂练习综合实例例1 输入三角形的三条边长,求三角形面积。(为了简单起见,设输入的三边长a,b,c能构成三角形)#include math.hmain ( )float a,b,c,s,area;scanf (%f,%f,%f,&a,&b,&c);s1.0/2*(a+b+c);areasqrt(s*(s-a)*(s-b)*(s-c);printf (a%7.2f, b%7.2f, c%7.2f, s%7.2fn,a,b,c,s);printf (area%7.2fn,area);运行情况如下:3,4,6a 3.00, b 4.00, c 6.00, s 6.50area 5.33例2 从键盘输入一个大写字母,要求改用小写字母输出。 #include stdio.hmain ( )char c1,c2; c1getchar ( ); printf (%c,%dn,c1,c1);c2c1+32; printf (%c,%dn,c2,c2);运行情况如下:AA, 65a,97本章小结本章在讲解顺序结构程序设计方法的同时,介绍了三种数据类型。1. 整型数据。主要了解整型数据的定义方法,根据使用整数的范围选用定义整数变量的类型。掌握整型数据的输入输出方法,主要使用d格式控制符。2. 实型数据。主要掌握实型变量的不同定义方法,单精度数和双精度数的表示范围,实型数据的输入输出方法,主要使用f格式控制符。3. 字符型数据。是由一对单引号括起来的单个字符,要注意,字符与字符串的区别。 还讲解了各种运算符和表达式,主要掌握算术运算符,在混合运算中,要按照运算符的优先级,结合方向运算。作业:实验一 顺序结构程序设计一、实验目的1. 掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。22. 学会使用有关算术运算符,以及包含这些运算符的表达式。3. 掌握数据的输入输出方法,能正确使用各种格式转换符。二、实验学时数4学时三、实验内容和步骤1.启动TC2.0编译系统,进入编辑界面,建立一个新文件。文件名自定。(要求每个学生建立一个自己的文件夹,每个同学的练习和作业的源程序命名形成系列,便于检查、查找和考核)。利用一个小程序验证常量、变量的使用方法与特点,验证数据类型和表达式值的计算规则及其输出格式。参考程序: main( ) char c1,c2; c1=97;c2=98; printf(c,cn,c1,c2);(1)在此基础上加入以下printf语句,并运行。printf(d,dn,c1,c2); (2)将第二行改为以下语句,并运行。 int c1,c2; (3)将第三行改为以下语句,并运行。 c1=300;c2=400;分别写出三次运行结果。2编程并调试运行 (1)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。上机运行此程序,比较putchar和printf函数输出字符的特点。 (2)试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。3写出下面程序的运行结果:1) main() int x=1,y=1,z=1;y=y+x;x=x+y;printf(%dn,x);printf(%dn,y);2) main()char a;int b;a=A;b=97;printf(a:dec=%d oct=% o hex=%x ASCII=%cn,a,a,a,a);printf(b:dec=%d oct=% o hex=%x ASCII=%cn,b,b,b,b);a=M;b=-8;printf(a:dec=%d oct=% o hex=%x ASCII=%cn,a,a,a,a);printf(b:dec=%d oct=% o hex=%x ASCII=%cn,b,b,b,b);4. 运行下面的程序,分析功能并纠正错误。main()int a,b,c,d;scanf(%d%d%d%d;a,b,c,d);printf(a=%d b=%d c=%d e=a+b+c+d=%dn,a,b,c,d,a+b+c+d); 章节题目: 第三章 选择结构程序设计教学时间: 8学时教学目的:1、掌握关系运算表达式2、掌握逻辑运算表达式3、熟练掌握if语句的使用4、掌握switch语句 内容、重点、难点:内容:3.1 关系运算符和关系表达式3.2 逻辑运算符和逻辑表达式3.3 if语句3.4 switch语句重点: 1、关系运算符和关系表达式2、逻辑运算符和逻辑表达式3、if语句的使用 难点: 1、掌握switch语句的使用2、if语句的嵌套使用 注:教案尾页有小结和作业 第三章 选择结构程序设计选择结构,或称分支结构,是指对所给定的条件进行判断,然后决定选择执行不同的操作。本章主要介绍如何用C语言实现选择结构。C语言的选择语句有两类,一类是if语句,另一类是switch语句,本章将分别进行介绍。在介绍选择结构程序设计的同时,还要介绍关系运算符和关系表达式,逻辑运算符和逻辑表达式等内容。3.1 关系运算符和关系表达式3.1.1关系运算符及其优先次序1.关系运算符C语言提供6种关系运算符: (小于) (大于)= (大于或等于)= =(等于)!= (不等于)2.关于优先次序:(1)前4种关系运算符(, , =)的优先级别相同,后两种也相同。前4种高于后2种。例如,优先于= =。而与b+c 等效于a(b+c) a= =bc 等效于a= =(b=c 等效于a=(b=c) (3)关系运算符的结合方向是“自左向右”。注意:“等于”关系的运算符“= =”和“不等于”关系的运算符“ !=”与数学中的表示方法不同。例如,欲判断x是否等于0,若写成:x=0则表示把0赋值给变量x,正确的写法为:x= =0。3.1.2关系表达式1.关系表达式用关系运算符将两个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等)连接起来的式子,称关系表达式。例:xy,a+b18,ab的值为“真”,表达式的值为1。关系表达式a= =b的值为“假”,表达式的值为0。可以将关系表达式的运算结果(0或1)赋给一个整型变量或字符型变量,如a=4,b=1,下面的赋值语句是将1赋给变量c:c=ab c的值为1例3.1 试求x=531的值。分析x=531 相当于 x=(53)1=11=0说明根据关系运算符的优先级别高于赋值运算符。 3.2 逻辑运算符和逻辑表达式3.2.1逻辑运算符及其优先次序1.逻辑运算符C语言提供了3种逻辑运算符:! 逻辑非& 逻辑与 逻辑或其中“&”和“”为“双目(元)运算符”,要求有两个操作数(即运算量),如(ab)&(x=y),(ab)(x=y)。“!”是“一目(元)运算符”,只需一个操作数,如!a或!(a=b)&(xy) 可写成:a=b&xy(a= =b)(x= =y) 可写成:a= =bx= =y(3)逻辑运算的结合方向是“自左向右”。3.2.2逻辑表达式1.逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。例如: a&b*c,(a+b)(cb则将a的值赋给m,若ab) m=a;else m=b;printf (m=%dn,m); 程序运行结果:m=10说明 在该问题中我们借用了if语句,通过条件来判断应该执行哪条语句,充分体现出选择结构程序设计的思想。3.3.2 if语句的三种形式1if语句 if语句是条件分支语句最基本的形式。 格式:if (表达式) 语句功能:首先计算表达式的值,若表达式的值为“真”(非0),则执行语句,若表达式的值为“假”(0),不执行语句。其流程图3.1(a)所示。例如:if (xy) printf (%d,x); 2if-else语句if-else语句是条件分支语句的标准使用形式。格式:if (表达式) 语句1 else 语句2功能:首先计算表达式的值,若表达式的值为“真”(非0),则执行语句1,若表达式的值为“假”(0),则执行语句2。其流程图3.1(b)所示。例如:if (xy) printf (%d,x);else printf (%d,y); 假(0) 真(非0) (a)表达式 语句 真(非0) 假(0) (b) 表达式 语句1 语句2 3if-else-if语句前面两种if语句一般都用于两个分支的选择结构。对于多个分支选择时,可采用if-else-if语句。格式:if (表达式1) 语句1 else if (表达式2) 语句2else if (表达式3) 语句3else if (表达式n-1) 语句n-1else 语句n功能:首先计算表达式1的值,若为“真”(非0),执行语句1,否则进行下一步判断;若表达式2为真,执行语句2,否则进行下一步判断最后所有表达式都为假时,执行语句n。 例如:if (score89) grade=A;else if (score79) grade=B;else if (score69) grade=C;else if (score59) grade=D;else grade=E;关于if语句的说明:(1)if后面圆括号中的表达式一般是关系表达式或逻辑表达式,用于描述选择结构的条件,但也可以是任意的数值类型表达式(包括整型、实型、字符型、指针型数据表达式)。 例如: if (2) printf (OK!);是合法的,因为表达式的值为2,非0,按“真”处理,执行结果输出“OK!”(2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所需要的。(3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用大括号“ ”将几个语句括起来,构成一个复合语句,注意:复合语句的“”和“”之后不能加分号。例3.2 输入两个实数,按代数值由小到大输出这两个数。main ( ) float a,b,c; scanf (%f,%f,&a,&b);if (ab) t=a;a=b;b=t; printf (%5.2f,%5.2f,a,b); 程序运行结果: 2.2,-5.7-5.70,2.204.if语句的嵌套 在if语句中有包含一个或多个if语句称为if语句的嵌套。要处理多重分支选择结构问题,除了用if-else-if语句外,还可以利用if语句的嵌套来实现。说明:(1)if和else的配对规则为:else总是与它上面的最近的未配对的if配对。(2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。(3)在嵌套内的if语句既可以是if语句形式,也可以是if-else语句形式,但最好使内嵌if语句也包含else部分。如果if与else的个数不同,可以用花括号来确定配对关系。例如: if ( ) if ( ) 语句1else 语句2这时“ ”限定了内嵌if语句的使用范围,因此else与第一个if配对。例3.3 有一函数: -1 (x0) 编一程序,输入一个x值,输出y值。 main ( ) int x,y; scanf (%d,&x);if (x0) y=-1; else if (x= =0) y=0; else y=1; printf (x=%d,y=%dn,x,y); 3.3.3条件运算符条件运算符由两个符号“?”和“:”组成,要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的三目运算符。条件表达式的格式为:表达式1?表达式2:表达式3 min=(ab)?printf (%d,a):printf (%d,b)等均为合法的条件表达式。(2)条件表达式的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。min=(ab)?a:b;执行结果就是将a和b二者中较小的赋给min。(3)条件表达式的优先级别仅高于赋值运算符,而低于前面介绍过的所有运算符。因此,min=(ab)?a:b;可直接写成:min=ab?a:b+1等效于ab?a:(b+1),而不等效于(ab?a:b)+1(4) 条件运算符的结合方向为“自右至左”。例如:x0?1:x0?1:(x=A&ch=Z)?(ch+32):ch; printf (%c,ch);程序运行结果:Please enter a charcter:Aa说明 条件表达式中的(ch+32),其中32是小写字母和大写字母ASC码的差值。3.4 switch语句3.4.1问题的提出 要求按照考试成绩的等级(grade)输出百分制分数段:键入A,输出85100;键入B,输出7084;键入C,输出6069;键入D,输出60;键入其他任意字符,输出error。 main ( ) char grade; scanf (%c,&grade); switch(grade)case A:printf (85100n);case B:printf (7084n);case C:printf (6069n);case D:printf (60n); default:printf (errorn);3.4.2 switch语句格式为:switch (表达式)case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句ndefault:语句n+1
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!