《C 语言课程教案详解.pdf》由会员分享,可在线阅读,更多相关《C 语言课程教案详解.pdf(90页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、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 程序
2、的上机步骤,以便对C 语言有一个概括的认识。1.1 C语言的历史和特色1.历史1)1960 年出现了 ALGOL60o2)1963年 和 1967年,在 ALGOL 60的基础上推出了 CPL和 BCPL语言更接近于硬件。3)1970年美国贝尔实验室对BCPL语言做了进一步简化,设计了 B 语言,并用B 语言编写了第一个UNIX操作系统。4)在 1972年 至 1973年间,贝尔实验室的D.M.Ritchie在 B 语言的基础上设计出C 语言。2.特色1)简洁紧凑,使用方便灵活C 语言一共只有3 2 个关键字、9 种控制语句,程序书写自由,压缩了一切不必要的成分,语言简练。2)运算符丰富C 语
3、言有34种运算符和15个等级的运算优先顺序,使表达式类型多样化,可以实现在其它语言中难以实现的运算。3)数据类型丰富C 语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、联合体类型及枚举类型等,能用来实现各种复杂的数据结构的运算。4)模块化结构C 语言用函数作为程序的模块单位,便于实现程序的模块化,而且便于模块间相互调用及传递数据。5)语法限制少和程序设计自由度大C 语言允许程序编写者有较大的自由度,放宽了以往高级语言严格的语法检查,较好地处理了 “限制”与“灵活”这一对矛盾。6)比较接近硬件C 语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬
4、件进行操作。7)生成目标代码质量高、程序执行效率高一般只比汇编程序生成的目标代码效率低10%20%。8)可移植性好基本上不做修改就能用于各种型号的计算机和各种操作系统。1.2 C 程序结构下面列出几个简单的c 程序来说明c 程序的结构特征。例 1输出一行信息。main()printf(This is first C programme!n);该程序的作用是输出 一行信息:This is first C programme!m ain表 示“主函数”;函数体用大括号 括起来。本例题中主函数仅包含一个语句,该语句由printf()输出函数构成。括号内双引号中的字符串按原样输出;n 是换行符,即在输
5、出 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。
6、第 5 行 使 sum 的值为a+b,第 6行的d 是输入输出的“格式说明”,表 示“十进制整数类型,printf函数中括号内最右端的 sum是要输出的变量,当然它的值为444。例 1.3 比较两个数的大小。main()/*主函数,功能输入两个整数,判断后输出较大的数*/inta,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;/*定义ma
7、in()函数内部用到的变量z 为整数*/if(xy)z=x;/*将 x,y中较大的值赋给z*/elsez=y;return(z);/*将 z 值返回。通过max。函数带回调用处*/该程序的作用是从键盘输入两个整数,然后在屏幕上输出它们中较大值的数。程序的第5 行是调用max()函数,在调用过程中将实际参数a 和 b 的值,分别传递给max()函数中的形式参数x 和 y,然后得到一个返回值(z 的值),并把这个值赋给变量c。运行情况如下:2,8 Zmax=8从以上几个例题,可以看到C 程序的结构特征。1.C 程序是由函数构成的。一个C 程序至少有一个main()函数,也可以包含一个main()函
8、数和若干个其它函数。2.一个函数有两部分构成。函数说明部分,即函数的第一行,包括函数类型、函数名、形参类型、形参名。函数体,由一对大括号 括起来的语句集合。函数体一般包括有声明部分和执行部分。声明部分用于定义所用到的变量。执行部分由若干语句组成。3.个C 程序总是从main。函数开始执行,而不管main()在源程序中的位置,执行完主函数中的所有语句后,程序就结束。4.每个语句和变量定义的最后必须要有一个分号,分号是C 语句的必要组成部分。5.C 语言本身没有提供输入和输出语句,输入输出操作是通过库函数scanf。、printf。等函数来实现的。6.C 语言用/*/对程序进行注释,/和*之间不允
9、许留有空格,/*和*/应当一一对应匹配,注释部分允许出现在程序中的任何位置上。程序中加一些注释,可以增加程序的可读性。1.3 C 程序的开发过程用 c 语句编写的程序称为“源程序”。1.C 程序开发的4 个基本步骤一 般 C 程序开发要经历4 个基本步骤:编辑编译连接运行(1)编辑使用字处理软件或编辑工具将源程序以文本文件形式保存到磁盘,源程序文件名由用户自己选定,但扩展名必须为.c。(2)编译编译的功能就是调用“编译程序”,将已编辑好的源程序翻译成二进制的目标代码。如果源程序没有语法错误将产生一个与源程序同名,以.obj为扩展名的目标程序。(3)连接编译后产生的目标程序往往形成多个模块,还要
10、和库函数进行连接才能运行,连接过程是使用系统提供的“连接程序”运行的。连接后,产生以.exe”为扩展名的可执行程序。(4)运行可执行程序生成后,就可以在操作系统的支持下运行,若执行结果达到预期的1=1 的,则开发工作到此完成,否则,要进一步地经过以上过程以取得最终的正确结果。2.使用Turbo C 开发程序的方法现在,多数的C 程序开发使用一个集成Turbo C 开发工具来完成。下面简单介绍使用TurboC 开发程序的方法。(1)Turbo C 的目录及文件Turbo C 应装入磁盘的某一目录下,例如,放在c 盘的根目录下一级TC子目录下,Turbo C安装完成后,磁盘上将增加以下目录及文件:
11、TC 子 目 录(c:tc):其中包括tc.exe、tcc.exe、make.exe等执行文件。INCLUDE 子目录(c:tcinclude):其中包括 stdio.h、string.h,math.h 等头文件。Lib 子 目 录(c:tclib):其中包括 graphlics.lib、ma th.lib、math 1.lib 等库函数文件。BGI子 目 录(c:tc|bgi):其中包括tc 运行时所需的信息。通过执行tc.exe命令就可以进入Turbo C 环境,如果用户的当前目录是Turbo C 所在的子目录 t c,则只需从键盘输入“tc”命令即可。C:tctc/(2)Turbo C
12、集成环境作简单介绍,它包括以下儿个方面的内容:主菜单窗口编辑窗口信息窗口功能键提示行3.用Thrbo 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”菜单选项回车或按下“C
13、trl+F9”键,即可运行刚生成的可执行文件。此时Turbo C 工作窗口消失,屏幕上显示程序运行结果:This is my first C program若发现运行结果不对,可再按“F10”键回工作窗口,重复上述步骤。(4)运行程序后查看程序的运行结果。(5)退出TurboC,按“Alt+X”键,系统即退出Turbo环境。本章小结本章对C 语言进行了总体介绍,对学生的要求是掌握基本概念,学习的过程要紧密结合本章的知识要点:1.程序的构成,main。函数和其他函数。2.头文件、数据说明、函数的开始和结束标志。3.源程序的书写格式。4.C 语言的风格。作业:章节题目:第二章顺序结构程序设计教学时
14、间: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)常
15、量:在程序运行的过程中,其值不能被改变的量。如 2、4、-1.6 等。2)分类:普通常量和符号常量3)符号常量:用一个标识符代表一个常量,这样的标识符称为符号常量。如 用 P I 代表3.14159264)注意:符号常量的值在其作用域内不能改变,也不能再被赋值。如在程序中,对 P I重新赋值:PI=2;这样是不允许的。2.1.2变量I)变量c 语言规定在程序运行的过程中,其值可以改变的量,称为变量。2)标识符:用来标识变量名、符号常量名、函数名、数组名、类型名和文件名的有效字符序列。3)C 语言规定:标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。一般变量名的长度不
16、能超过8 个字符。如下面是合法的标识符,也是合法的变量名:sum,average,day,month,student,_above,k_l_2_3,basic下面是不合法的标识符和变量名:M.D.John,S123,#33,3D64,a,-ab在 C 语言中,要求对所有用到的变量作强制定义,也就是 先定义,后使用”。2.2整型数据2.2.1 整型常量c 语言整型常数可用以下三种形式表示:1.十进制整数:数码直接开头的十进制数。2.八进制整数:以0 开头的常量是八进制数。3.十六进制整数:以 Ox开头的数是16进制数。2.2.2整型变量1 .整型变量的分类整型变量可分为:基本型、短整型、长整型和
17、无符号型四种,其定义的关键字如下:(1)基本型,以 int表示。范围为-32768 32767,即-215(215-1),(2)短整型,以 short int或 short表示。范围与基本型相同。(3)长整型,以 long int或 long表示。若一个整型常量后面加上一个字母1或 L,则认为是long int 型常量。范围为-2147483648 214783647 即-231(231-1)(4)无符号型,在实际应用中变量的值常常是正的,如年龄、工资、成绩等,因此可以将变量定义为 无符号 类型。无符号型又分为:无符号整型,以unsigned int或 unsigned表示。范围:065535
18、 即 0(216-1)。无符号短整型,以 unsigned short表示。范围:0 65535即 0(216-1)。无符号长整型,以 unsigned long表示。范围:0 4294967295即 0(232-1)2.整型变量的定义变量的定义格式为:数据类型变量表列;其中若定义多个同类型的变量,则用逗号分开。例:int a,b;(指定变量a,b为整型)unsigned short c,d;(指定变量c,d为无符号短整型)long e.f;(指定变量e,f为长整型)3.整型数据的输入整型变量键盘输入,是通过scanf函数实现的,scanf函数是数据输入函数,格式为:scanf(格式控制,地址
19、表列);例如:scanf(%d%(l,&a,&b):(1)格式控制是用双引号括起来的字符串,由 和格式字符组成,作用是将输入数据转换为指定的格式输入。(2)格式字符,对于不同的数据用不同的格式字符。d 格式符是用来输入十进制整数的。因为本节问题中变量a,b 是整型变量,所以输入时,用了 d 格式符。(3)&a,&b中 的&是 地址运算符,&a是指a 在内存中的地址。上 面 scanf函数的作用是:将 a、b 的值放到a,b 在内存的地址单元中去。所以,在该问题中,若输入:3 5/则输出结果为 a+b=84.整型数据的输出整型数据的输出用printf函数来实现。如 printf(a+b=%d,c
20、);printf函数的格式为:printf(格式控制,输出表列);(1)格式控制和输入函数scanf的格式控制基本致。(2)输出表列是需要输出的数据或表达式。(3)在输出整型数据时,格式字符如下:d,按整型数据的实际长度输出。%md,m 为输出字段的宽度,如果输出数据的位数小于m 则左端补以空格,若大于m,则按实际位数输出。例如printf(H%4d,%4d,a,b);若 a=123,d=12345,则输出结果为V123,12345(注:V 表示空格字符,下同)%ld,输出长整型数据。如long a=135790;printf(,f%81d,a);输出结果为:VV135790一个int型数据可
21、以用d 或用格式输出。%u,输Hl unsigned型数据,即无符号类型,如 unsigned u:那么u 在输出的时候,应该用 u 格式控制符,那么输出时应使用语句:printf(u%u,u);例 2.1 从键盘输入任意一个整数,输出这个数的平方的值。main()int a;long s;scanf(n%d、&a);s=a*a;printf s=%ldn,s);2.3实型数据2.3.1 实型常量实数在c 语言中,又称浮点数。实数有两种表示形式:1.十进制数形式。由数字和小数点组成(注意必须有小数点)。2.指数形式。但注意字母e(或 E)之前必须有数字,且 e 后面指数必须为整数,如 e3、2
22、.1 e3.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位有效位,具体精确多少
23、位与机器有关;小 于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歹U,其中有n位小数。如果数值
24、长度小于m,则右端补空格。(4)若是双精度型变量输出时应用I f格式控制,如double f;输出时应使用语句:printf(z,%ir,f);2.4字符型数据2.4.1 字符常量1.字符常量C语言的字符常量是用一对单引号括起来的单个字符。如:a、b、x、D、等都是字符常量。2.转义字符除了这样的字符常量外,C语言还允许用一种特殊形式的字符常量,就是以一个 开头的字符序列例如,前面已经用到,在printf函数中的 n,它表示一个 换行 符。例2.2字符常量的输出。main()printf(ab cntde);运行结果:abcde2.4.2 字符变量在本节问题中,设了两个字符型变量c l 和 c
25、2。定义形式如下:char cl,c2;它 表 示 c l 和 c2为字符型变量,各可以放一个字符。可以用下面语句对cl,c2赋值:cl=a;;c2b;因此在内存中一个字符变量只占一个字节。2.4.3 字符数据的存储形式字符在内存中存储的不是字符本身,而是它的ASCII码,例如字符 a 的 ASCII码 为 97,b 的 ASCII码为98。那么字符的存储形式与整数的存储形式是类似的。C 语言使字符型数据和整型数据是通用的。例 2.3 main()char al,a2;al=97:a2=98:printf(%c%cnM,al,a2);printf(%d%dn,al,a2);程序运行时输出如下:
26、a b97 98字符型数据和整型数据是通用的,但应该注意字符数据只占一个字节,它只能存放0 255范围内的整数。例 2.4 大小写字母的转换。main()char al,a2;al=a;a2=b;a l=a l32;a2=a232;printf(%c%cnw,al,a2);运行结果为:A B程序的作用是将两个小写字母a 和 b 转换成大写字母A 和 B。a 的 ASCH码为9 7,而A 为 65,b 为 98,B 为 66。从 ASCH码表中可以看到每一个小写字母比它相应的大写字母的ASCH码大32。2.4.4字符型数据的输入和输出1.getchar 函数和 putchar 函数例 2.5#i
27、nclude stdio.hnmain()(char c;c=getchar();putchar(c);)在运行时,如果从键盘输入字符aa/(输入a 后,按回车键)a(输出变量c 的值a)注意:getchar()只能接收一个字符。putchar()也只能向终端输出一个字符。在使用getchar函数和putchar函数时,程序的首部需使用预编译命令#include stdio.h。2.scanf函数和printf函数例 2.6 main()char cl,c2;scanf(%c%cz,&cl,&c2);printf(z,%c%cw,cl,c2);若 输 入 为 a b/则 输 出 为 ab在使用
28、scanf函数和printf函数输入输出字符型数据时,使用%c格式控制,用来输入输出单个字符。注意,在用c格式输入字符时,空格将以有效字符输入:scanf(%c%c%cz,&cl,&c2,&c3);若输入 aVbVcZ则将字符 a 送给c l,字符空格 V 送给c2,因为空格也是一个有效字符,字符 b 送给c3o%c只需要读入一个字符,用了空格做间隔,所以会出现这样的问题。2.5字符串常量字符串常量是用双引号括住的字符序列。如:How do you do,CHINA a 等都是字符串常量.可以输出一个字符串,如 printf(How do you do.);注意:不要将字符常量与字符串常量混淆
29、。a 是字符常量,a 是字符串常量,二者不同。C 规定:在每个字符串的结尾加一个“字符串结束标志”以便系统据此判断字符串是否结束。以0 作为字符串结束标志。0 是 ASCII码 为 0 的字符,从 ASCII码表中可以看到ASCII码为0 的字符是“空操作字符”不引起任何操作。2.5 变量的初始化变量的初始化,就是在定义变量的同时给变量赋予初值。可以采用说明变量的类型,然后再赋值的方法,也可以对变量类型说明的同时,给变量赋初值。1.先定义后赋值int a,b,c;a=2;b=5;c=10;2.定义和赋值同时进行int a=5;short b=10;char c=a;float d=7.8;3.
30、对几个变量同时赋一个初值intal=10,a2=10,a3=10;不可以写成:int al=a2=a3=10;但是也可以写成:int a l,a2,a3;al=a2=a3=10;初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。相当于一个赋值语句。例如:int a=10;相当于:int a;a=10;又如:int a,b,c=20;相当于:int a,b,c;c=20;2.6 运算符和表达式2.6.1 算术运算符和表达式例 2.7 已知正方形的长和宽,求正方形的周长。分析正方形的周长公式为:1=2*(a+b),已知正方形的长和宽可以计算周长。main()int a,b,l;a
31、=3;b=4:l=2*(a+b);printf(l=%dn,1):1.基本的算术运算符+(加法运算符,或正值运算符)-(减法运算符,或负值运算符)*(乘法运算符)/(除法运算符)%(模运算符,或求余运算符)注意:(1)两个整数相除结果为整数。但是如果相除的两个数中,至少有一个为实数,则结果为带小数的商。(2)%模运算符,要求操作数均为整型数据,如 7%4的值为3。2.算术表达式用算术运算符和括号将操作数连接起来的,符合C 语法规则的式子,称 C 算术表达式。在表达式求值时,按运算符的优先级别高低次序执行。例如:10+a+1.5-8765.12*b在进行运算时,不同类型的数据要先转换成同一类型,
32、然后进行运算。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.赋值符号赋值符号=就是赋值运算符,将一个数据赋给一个变量。如 a=3 。2.类型转换如果赋值运算符两侧的类型不一致,要进行
33、类型转换。(1)将实型数据赋给整型变量时,舍弃实数的小数部分。如 i 为整型变量,执 行 i=3.56的结果是使i 的值为3。(2)将整型数据赋给实型变量时,数值不变,但以浮点数形式存储到变量中。3.复合的赋值运算符常用的赋值运算符有以下几种:+=,=,*=,/=,%=例如:a+=3 等 价 于 a=a+3x*=y+8 等价于 x=x*(y+8)x%=3 等 价 于 x=x%34,赋值表达式由赋值运算符将个变量和个表达式连接起来的式子称为 赋值表达式”。例如:a=b=c=5 (赋值表达式值为5,a、b、c 值均为5)a=5+(c=6)(表达式值为11,a 值 为 11,c 的值为6)a=(b=
34、4)+(c=6)(表达式值为10,a 值 为 10,b 等于4,c 等于6)三、逗号运算符和逗号表达式逗号运算符将两个表达式连接起来。如3+5,6+8称为逗号表达式。逗号表达式的格式为表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式 2 的值。例如逗号表达式a=3*5,a*4先求解a=3*5,得 a 的值为1 5,然后求解a*4,得 60。整个逗号表达式的值为60。课堂练习综合实例例1 输入三角形的三条边长,求三角形面积。(为了简单起见,设输入的三边长a,b,c能构成三角形)#include math.hmain()(float a,b,c,
35、s,area;scanf(%f,%f,%fn,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(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.h,fmain()char cl,c2;cl=getchar();printf(,r%c,%dn,/,cl,
36、cl);c2=cl+32;printf(r,%c,%dnz,c2,c2);运行情况如下:A/A,65a,97本章小结本章在讲解顺序结构程序设计方法的同时,介绍了三种数据类型。1.整型数据。主要了解整型数据的定义方法,根据使用整数的范围选用定义整数变量的类型。掌握整型数据的输入输出方法,主要使用d 格式控制符。2.实型数据。主要掌握实型变量的不同定义方法,单精度数和双精度数的表示范围,实型数据的输入输出方法,主要使用f 格式控制符。3.字符型数据。是由一对单引号括起来的单个字符,要注意,字符与字符串的区别。还讲解了各种运算符和表达式,主要掌握算术运算符,在混合运算中,要按照运算符的优先级,结合方
37、向运算。作业:实验一顺序结构程序设计-、实验目的1.掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。22.学会使用有关算术运算符,以及包含这些运算符的表达式。3.掌握数据的输入输出方法,能正确使用各种格式转换符。二、实验学时数4 学时三、实验内容和步骤1.启 动 TC2.0编译系统,进入编辑界面,建立一个新文件。文件名自定。(要求每个学生建立一个自己的文件夹,每个同学的练习和作业的源程序命名形成系列,便于检查、查找和考核)。利用一个小程序验证常量、变量的使用方法与特点,验证数据类型和表达式值的计算规则及其输出格式。参考
38、程序:main()char cl,c2;cl=97;c2=98;p rin tf(%c,%cn,cl,c2);(1)在此基础上加入以下printf语句,并运行。printf(7%d,%dn”,cl,c2);(2)将第二行改为以下语句,并运行。int cl,c2;(3)将第三行改为以下语句,并运行。cl=300;c2=400;分别写出三次运行结果。2.编程并调试运行(1)编程序,用 getchar函数读入两个字符给c l、c 2,然后分别用putchar函数和printf函数输出这两个字符。上机运行此程序,比较putchar和 printf函数输出字符的特点。(2)试编写程序,从键盘输入一个大写
39、字母,要求改用小写字母输出。3.写出下面程序的运行结果:1)main()(int x=l,y=l,z=l;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 n,a,a,a,a);printf(,f b:dec=%d o
40、ct=%o hex=%x ASCII=%cn,f,b,b,b,b);4.运行下面的程序,分析功能并纠正错误。main()int a,b,c,d;scanf(H%d%d%d%d/z;a,b,c,d);printf(r,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、
41、关系运算符和关系表达式2、逻辑运算符和逻辑表达式3、if语句的使用难点:1、掌握switch语句的使用2、if语句的嵌套使用注:教案尾页有小结和作业第三章选择结构程序设计选择结构,或称分支结构,是指对所给定的条件进行判断,然后决定选择执行不同的操作。本章主要介绍如何用C 语言实现选择结构。C 语言的选择语句有两类,-类是if 语句,另一 类 是 switch语句,本章将分别进行介绍。在介绍选择结构程序设计的同时,还要介绍关系运算符和关系表达式,逻辑运算符和逻辑表达式等内容。3.1 关系运算符和关系表达式3.1.1 关系运算符及其优先次序1.关系运算符C 语言提供6 种关系运算符:=(大于或等于
42、)二二(等于)!=(不等于)2.关于优先次序:(1)前 4 种关系运算符(;=)的优先级别相同,后两种也相同。前 4种高于后2 种。例如,优先于=。而 与 优 先 级 相 同。(2)关系运算符与算术运算符、赋值运算符的优先级关系如下:算术运算符(高)f关系运算符(中)-赋值运算符(低)例如:ab+c 等效于 a(b+c)a=bc 等效于 a=(b=c 等效于 a=(b=c)(3)关系运算符的结合方向是“自左向右注意:“等于”关系的运算符“=”和“不等于”关系的运算符“!=”与数学中的表示方法不同。例如,欲判断x 是否等于0,若写成:x=0则表示把0 赋值给变量x,正确的写法为:x=Oo3.1.
43、2关系表达式1 .关系表达式用关系运算符将两个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等)连接起来的式子,称关系表达式。例:xy,a+b18,a b的值为“真”,表达式的值为1。关系表达式a=b的值为“假”,表达式的值为0。可以将关系表达式的运算结果(0 或 1)赋给一个整型变量或字符型变量,如 a=4,b=l,下面的赋值语句是将1赋给变量c:c=ab c 的值为1例 3.1 试求X=531的值。分析X=531 相当于 X=(53)1=11=0 说明 根据关系运算符的优先级别高于赋值运算符。3.2逻辑运算符和逻辑表达式3.2.1逻辑运算符及其优先次序1.逻辑运算符C
44、语言提供了 3 种逻辑运算符:!逻辑非&逻辑与 I I 逻辑或其 中“&”和“|”为“双 目(元)运 算 符”,要求有两个操作数(即运算量),如(ab)&(x=y),(ab)|(x=y)。!是 一目(元)运算符”,只需一个操作数,如!a 或!(a=b)&(xy)可写成:a=b&xy(a=b)|(x=y)可写成:a=b|x=y(3)逻辑运算的结合方向是“自左向右”。3.2.2逻辑表达式1.逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。例如:a&b*c,(a+b)|(cb则将a 的值赋给m,若 ab)m=a;else m=b:printf(nm=%dnM,m);)程序运行
45、结果:m=10 说明在该问题中我们借用了 i f 语句,通过条件来判断应该执行哪条语句,充分体现出选择结构程序设计的思想。3.3.2 if语句的三种形式1.if语句if语句是条件分支语句最基本的形式。格式:if(表达式)语句功能:首先计算表达式的值,若表达式的值为 真 (非 0),则执行语句,若表达式的值为“假”(0),不执行语句。其流程图3.1(a)所示。例如:if(xy)printf(%d,x);2.iRelse 语句if-else语句是条件分支语句的标准使用形式。格式:if(表达式)语句1e l s e 语句2功能:首先计算表达式的值,若表达式的值为“真”(非 0),则执行语句1,若表达
46、式的值为 假”(0),则执行语句2。其流程图3.1(b)所示。例如:if(xy)printf(%d,x);else printf(%d,y);假真(非0)(a)表达式语句真 俳 0)假(0)(b)表达式语 句 1语句23.if-else-if 语句前面两种i f 语句一般都用于两个分支的选择结构。对于多个分支选择时,可 采 用 if-else-if语句。格式:if(表达式1)语 句 1else if(表达式2)语句2else if(表达式3)语句3IIIelse if(表达式n-1)语句n-1else语句n功能:首先计算表达式1 的值,若 为“真”(非 0),执行语句1,否则进行下一步判断;若
47、表达式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!n);是合法的,因为表达式的值为2,非 0,按“真”处理,执行结果输出“OK!”
48、(2)第二种、第三种格式的if语句中,在每个eke前面有-个分号,整个语句结束处也有一个分号。这是由于分号是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
49、.7/-5.70,2.204.i f 语句的嵌套在 if语句中有包含一个或多个if语句称为if语句的嵌套。要处理多重分支选择结构问题,除了用i&else-if语句外,还可以利用if语句的嵌套来实现。说明:(1)if和 else的配对规则为:else总是与它上面的最近的未配对的if配对、(2)if与 else的个数最好相同,从内层到外层一一对应,以避免出错。(3)在嵌套内的if语句既可以是if语句形式,也可以是ifelse语句形式,但最好使内嵌if语句也包含else部分。如 果 if与 else的个数不同,可以用花括号来确定配对关系。例如:i f()i f()语句 1else语句2这 时“”限定
50、了内嵌if语句的使用范围,因此else与 第 个 if配对。例 3.3 有一函数:-1(x0)编一程序,输入一个 x 值,输出y 值。main()int x,y;scanf(%d,&x);if(x0)y=-l;else if(x=0)y=0;else y=l;printf(nx=%d,y=%dnM,x,y);3.3.3条件运算符条件运算符由两个符号“?”和“:”组成,要求有3 个操作对象,称三目(元)运算符,它是C 语言中唯一的三目运算符。条件表达式的格式为:表达式1?表达式2:表达式3min=(ab)?printf(%d,a):printf(%d,b)等均为合法的条件表达式。(2)条件表达式