《C语言程序设计》教案_第1页
《C语言程序设计》教案_第2页
《C语言程序设计》教案_第3页
《C语言程序设计》教案_第4页
《C语言程序设计》教案_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

《C语言程序设计》

教案

课程代码:_______030986____________

总课时数:_________114____________

适用专业:计算机应用技术、计算机网络

系(部)名称:软件工程系

教研室名称:软件技术/

修订时间:20XX年2■月

授课日期:第1周周一5一8周三1-2第2周周一5一8周三1一2

授课类型:演示、讲解、练习、辅导课时:12

教学内容:1、C语言的历史和特色

2、C程序结构

3、C程序的开发过程

教学目标:1、了解C语言的产生过程

2、掌握C程序结构

3、掌握C程序开发过程

4、掌握用TurbocC运行一个C程序

教学重点:1、掌握C程序的基本结构构成

2、学会用TurboC运行一个C程序

教学难点:掌握C程序的开发过程

教学过程:内容讲授一►学生实践一►作业布置「a新课内容预告

教学手段:多媒体教学软件+个别辅导

作业:

第1章C语言概述

c语言是国际上广泛流行的一门高级程序设计语言,具有语言简洁、使用方便灵活、

移植性好、能直接对系统硬件和外围接口进行控制等特点。本章将简要地介绍它的产生

过程和特点、c程序结构及c程序的上机步骤,以便对c语言有一个概括的认识。

1.1c语言的历史和特色

一、历史

1.1960年出现了ALGOL60。

2.1963年和1967年,在ALGOL60的基础上推出了CPL和BCPL语言更接近于硬

件。

3.1970年美国贝尔实验室对BCPL语言做了进一步简化,设计了B语言,并用B

语言编写了第一个UNIX操作系统。

4.在1972年至1973年间,贝尔实验室的D.M.Ritchie在B语言的基础上设计出C

语言。

二、特色

1.简洁紧凑,使用方便灵活

C语言一共只有32个关键字、9种控制语句,程序书写自由,压缩了一切不必要的

成分,语言简练。

2.运算符丰富

C语言有34种运算符和15个等级的运算优先顺序,使表达式类型多样化,可以实

现在其它语言中难以实现的运算。

3.数据类型丰富

C语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、联

合体类型及枚举类型等,能用来实现各种复杂的数据结构的运算。

4.模块化结构

C语言用函数作为程序的模块单位,便于实现程序的模块化,而且便于模块间相互

调用及传递数据。

5.语法限制少和程序设计自由度大

C语言允许程序编写者有较大的自由度,放宽了以往高级语言严格的语法检查,较

好地处理了“限制”与“灵活”这一对矛盾。

6.比较接近硬件

C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可

以直接对硬件进行操作。

7.生成目标代码质量高、程序执行效率高

一般只比汇编程序生成的目标代码效率低10%-20%„

8.可移植性好

基本上不做修改就能用于各种型号的计算机和各种操作系统。

1.2C程序结构

下面列出几个简单的C程序来说明C程序的结构特征。

例1.1输出一行信息。

main()

(

printf("ThisisfirstCprogramme!\n");

)

该程序的作用是输出一行信息:ThisisfirstCprogramme!main表示“主函数";

函数体用大括号{}括起来。本例题中主函数仅包含一个语句,该语句由printf()输出

函数构成。括号内双引号中的字符串按原样输出;’\n'是换行符,即在输出〃Thisis

firstCprogramme!”后回车换行;语句后面有一个分号,表示该语句结束,这个分号

必不可少。

例L2计算两个数之和。

main()/*求两个数之和*/

(

inta,b,sum;/*定义3个整型变量*/

a=123;/*以下3行为C语句*/

b=321;

sum=a+b;

printf("sumis%d\n”,sum);

该程序的作用是求两个整数a和b之和sum,并在屏幕上输出sum。程序中,

/*……*/表示注释部分,对编译和运行不起作用。第3行是变量说明,使用的a、b和

sum为整型(int)变量。第4行是两个赋值语句,使a的值为123,b为321。第5行使

sum的值为a+b,第6行的知是输入输出的“格式说明”,表示“十进制整数类型",printf

函数中括号内最右端的sum是要输出的变量,当然它的值为444。

例1.3比较两个数的大小。

main()/*主函数,功能输入两个整数,判断后输出较大的数*/

(

inta,b,c;/*定义3个整型变量*/

scanfC%d,%d/,,&a,&b);/*输入变量a和b的值*/

c=max(a,b);

,,,,

printf(max=%d\n,c);/*输出c的值*/

)

intmax(intx,inty)

/*定义max()函数,函数值为整型,x,y为形式参数、整形变量*/

{

intz;

/*定义main。函数内部用到的变量z为整数*/

if(x>y)

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.3C程序的开发过程

用C语句编写的程序称为“源程序”。

1.C程序开发的4个基本步骤

一般C程序开发要经历4个基本步骤:编辑一一编译一一连接一一运行

(1)编辑

使用字处理软件或编辑工具将源程序以文本文件形式保存到磁盘,源程序文件名由

用户自己选定,但扩展名必须为

(2)编译

编译的功能就是调用“编译程序”,将已编辑好的源程序翻译成二进制的目标代码。

如果源程序没有语法错误将产生一个与源程序同名,以“.obj”为扩展名的目标程序。

(3)连接

编译后产生的目标程序往往形成多个模块,还要和库函数进行连接才能运行,连接

过程是使用系统提供的“连接程序”运行的。连接后,产生以〃.exe〃为扩展名的可执行

程序。

(4)运行

可执行程序生成后,就可以在操作系统的支持下运行,若执行结果达到预期的目的,

则开发工作到此完成,否则,要进一步地经过以上过程以取得最终的正确结果。

2.使用TurboC开发程序的方法

现在,多数的C程序开发使用一个集成TurboC开发工具来完成。下面简单介绍使

用TurboC开发程序的方法。

(1)TurboC的目录及文件

TurboC应装入磁盘的某一目录下,例如,放在c盘的根目录下一级TC子目录下,

TurboC安装完成后,磁盘上将增加以下目录及文件:

TC子目录(c:\tc):其中包括tc.exe、tcc.exe>make,exe等执行文件。

INCLUDE子目录(c:\tc\include):其中包括stdio.h、string,h^math.h等头文

件。

Lib子目录(c:\tc\lib):其中包括graphlics.lib、math,lib、mathl.lib等库

函数文件。

BGI子目录(c:\tc|bgi):其中包括tc运行时所需的信息。

通过执行tc.exe命令就可以进入TurboC环境,如果用户的当前目录是TurboC所

在的子目录tc,则只需从键盘输入“tc”命令即可。

C:\tc>tc/

(2)TurboC集成环境作简单介绍,它包括以下几个方面的内容:

主菜单窗口

编辑窗口

信息窗口

功能键提示行

3.用TurboC运行第一个C程序

下面介绍使用TurboC编辑和运行一个简单的C程序的操作步骤:

(1)编辑或修改源程序。

在编辑窗口键入一下源程序:

main()

printf("ThisismyfirstCprogram");

然后执行“Fil然save”命令;或按“F2”键存盘。

(2)编译与连接源程序。

执行“compile/makeexefile”命令或直接按下F9键,即可一次完成编译与连接。

(3)运行程序。

按“F10”键返回主菜单,用光标移动键将亮条移到“Run”菜单选项回车或按下

“Ctrl+F9”键,即可运行刚生成的可执行文件。此时TurboC工作窗口消失,屏幕上

显示程序运行结果:

ThisismyfirstCprogram

若发现运行结果不对,可再按“F10”键回工作窗口,重复上述步骤。

(4)运行程序后查看程序的运行结果。

(5)退出TurboC,按“Alt+X”键,系统即退出Turbo环境。

本章小结

本章对C语言进行了总体介绍,对学生的要求是掌握基本概念,学习的过程要紧密

结合本章的知识要点:

1.程序的构成,main()函数和其他函数。

2.头文件、数据说明、函数的开始和结束标志。

3.源程序的书写格式。

4.C语言的风格。

授课日期:第3周周三1一2第4周周一5—8周三1一2

第5周周一5一8周三1一2

授课类型:演示、讲解、练习、辅导课时:14

教学内容:1、常量和变量

2、整型数据

3、实型数据

4、字符型数据

5、变量的初始化

6、运算符和表达式

教学目标:1、掌握常量与变量的书写和定义

2、掌握三种基本数据类型

3、掌握运算符和表达式的使用

4、掌握顺序结构程序设计的方法

教学重点:1、三种基本数据类型的定义和使用

2、各种运算符的使用

教学难点:1、运算符的使用

2、使用顺序结构编程

教学过程:内容讲授一►学生实践一►作业布置~~►新课内容预告

教学手段:多媒体教学软件+个别辅导

作业:1、编程序,用getchar函数读入两个字符给cl、c2,然后分别用

putchar函数和printf函数输出这两个字符。上机运行此程序,

比较putchar和printf函数输出字符的特点。

2、试编写程序,从键盘输入一个大写字母,要求改用小写字母

输出。

第2章顺序结构程序设计

顺序结构是一组按书写顺序执行的语句。本章将主要介绍程序中用到的一些基本要

素(常量、变量、运算符、表达式和输入输出语句等),以及基本的数据类型(整型、

实型和字符型)。

2.1常量和变量

一、常量

1.常量:在程序运行的过程中,其值不能被改变的量。如2、4、-1.6等。

2.分类:普通常量和符号常量。

3.符号常量:用一个标识符代表一个常量,这样的标识符称为符号常量。如用PI

代表3.1415926c

4.注意:符号常量的值在其作用域内不能改变,也不能再被赋值。如在程序中,

对PI重新赋值:PI=2;这样是不允许的。

二、变量

1.变量

C语言规定在程序运行的过程中,其值可以改变的量,称为变量。

2.标识符:用来标识变量名、符号常量名、函数名、数组名、类型名和文件名的

有效字符序列。

3.C语言规定:标识符只能由字母、数字和下划线三种字符组成,且第一个字符必

须为字母或下划线。一般变量名的长度不能超过8个字符。

如下面是合法的标识符,也是合法的变量名:sum,average,day,month,student,

_above,k_l_2_3,basic;下面是不合法的标识符和变量名:M.D.John,$123,#33,

3D64,a>,-abo

在c语言中,要求对所有用到的变量作强制定义,也就是"先定义,后使用”。

2.2整型数据

一、整型常量

C语言整型常数可用以下三种形式表示:

1.十进制整数:数码直接开头的十进制数。

2.八进制整数:以0开头的常量是八进制数。

3.十六进制整数:以Ox开头的数是16进制数。

二、整型变量

1.整型变量的分类

整型变量可分为:基本型、短整型、长整型和无符号型四种,其定义的关键字如下:

(1)基本型,以int表示。范围为-32768〜32767,即-215〜(215-1)。

(2)短整型,以shortint或short表示。范围与基本型相同。

(3)长整型,以longint或long表示。若一个整型常量后面加上一个字母1或L,

则认为是longint型常量。范围为-2147483648〜214783647即-231〜(231-1)

(4)无符号型,在实际应用中变量的值常常是正的,如年龄、工资、成绩等,因

此可以将变量定义为"无符号"类型。

无符号型又分为:

①无符号整型,以unsignedint或unsigned表示。范围:0〜65535,即0〜

(216-1)。

②无符号短整型,以unsignedshort表示。范围:0〜65535即0〜(216-1)»

③无符号长整型,以unsignedlong表示。范围:0〜4294967295即。〜(232-1)0

2.整型变量的定义

变量的定义格式为:数据类型变量表列;

其中若定义多个同类型的变量,则用逗号分开。

例:inta,b;(指定变量a,b为整型)

unsignedshortc,d;(指定变量c,d为无符号短整型)

longe,f;(指定变量e,f为长整型)

3.整型数据的输入

整型变量键盘输入,是通过scanf函数实现的,scanf函数是数据输入函数,格式

为:

scanf(格式控制,地址表列);

例如:scanf("%d%d”,&a,&b);

(1)格式控制是用双引号括起来的字符串,由"%"和格式字符组成,作用是将

输入数据转换为指定的格式输入。

(2)格式字符,对于不同的数据用不同的格式字符。d格式符是用来输入十进制整

数的。因为本节问题中变量a,b是整型变量,所以输入时,用了d格式符。

(3)&a,&b中的"&"是"地址运算符",&a是指a在内存中的地址。上面scanf

函数的作用是:将a、b的值放到a,b在内存的地址单元中去。所以,在该问题中,若

输入:35/

则输出结果为a+b=8

4.整型数据的输出

整型数据的输出用printf函数来实现。如printf("a+b=%d",c);

printf函数的格式为:

printf(格式控制,输出表列);

(1)格式控制和输入函数scanf的格式控制基本一致。

(2)输出表列是需要输出的数据或表达式。

(3)在输出整型数据时,格式字符如下:

①%d,按整型数据的实际长度输出。

②%md,m为输出字段的宽度,如果输出数据的位数小于m则左端补以空格,若大

于m,则按实际位数输出。例如:

printf("%4d,%4d",a,b);

若a=123,d=12345,则输出结果为:V123,12345(注:V表示空格字符,下同)

③%ld,输出长整型数据。如:

longa=135790;

printf("%81dz/,a);

输出结果为:VV135790

一个int型数据可以用%d或%Id格式输出。

④%u,输出unsigned型数据,即无符号类型,如unsignedu;那么u在输出的时

候,应该用u格式控制符,那么输出时应使用语句:

printf("%u",u);

例2.1从键盘输入任意一个整数,输出这个数的平方的值。

main()

{inta;

longs;

scanf("%d",&a);

s=a*a;

printf(,zs=%ld\n",s);}

2.3实型数据

一、实型常量

实数在C语言中,又称浮点数。实数有两种表示形式:

1.十进制数形式。由数字和小数点组成(注意必须有小数点)。

2.指数形式。但注意字母e(或E)之前必须有数字,且e后面指数必须为整数,

如e3、2.Ie3.5,.e3、e都不是合法的指数形式。

二、实型变量

在本节问题中,已知两个数是实数,那么两数之和与积也必定为实数,所以需要设

四个实型变量,分别为a,b,sum,mul。定义语句为:

floata,b,sum,mul;

c实型变量分为:

1.单精度型(float型)

一个float型数据在内存中占4个字节(32位),在TURBOC中,单精度实数的范

围约为一1038〜1038之间并提供7位有效位;小于10-38的数被处理成零值。

2.双精度型(double型)

一个double型数据在内存中占8个字节,双精度实数的数值范围约为一10308〜

10308o并提供15〜16位有效位,具体精确多少位与机器有关;小于10-308的数被处

理成零值。

三、实型数据的输入和输出

1.实型数据的输入

实型数据的输入也用scanf函数实现的,格式符使用的是f字符,以小数的形式输

入数据,也可以使用e字符,以指数的形式输入数据。

如本节问题中的scanf("%f%f",&a,&b);

2.实型数据的输出

实型数据的输出用printf函数实现,格式符使用f字符,以小数的形式输出数据。

输出时应注意:

(1)%f:不指定字段宽度,整数部分会全部输出,并输出6位小数。

(2)%m.n:指定输出数据共占m歹ij,其中有n位小数。如果数值长度小于m,则左

端补空格。

(3)%-m.n:指定输出数据共占口列,其中有n位小数。如果数值长度小于m,则

右端补空格。

(4)若是双精度型变量输出时应用机f格式控制,如doublef;输出时应使用语

句:printf("%lfz/,f);

2.4字符型数据

一、字符常量

1.字符常量

C语言的字符常量是用一对单引号括起来的单个字符。如:‘a‘、’b‘、’x'、’D'、'?

‘、’$'等都是字符常量。

2.转义字符

除了这样的字符常量外,C语言还允许用一种特殊形式的字符常量,就是以一个‘\

'开头的字符序列.例如,前面已经用到,在printf函数中的‘\n',它表示一个"换行"

符。

例2.2字符常量的输出。

printf("abc\n\tde");

)

运行结果:abc

de

二、字符变量

在本节问题中,设了两个字符型变量cl和c2。定义形式如下:

charcl,c2;

它表示cl和c2为字符型变量,各可以放一个字符。可以用下面语句对cl,c2赋

值:

cl='a';;c2='b';

因此在内存中一个字符变量只占一个字节。

三、字符数据的存储形式

字符在内存中存储的不是字符本身,而是它的ASCII码,例如字符'a'的ASCII码

为97,'b'的ASCH码为98。那么字符的存储形式与整数的存储形式是类似的。C语言

使字符型数据和整型数据是通用的。

例2.3main()

(

charal,a2;

al=97;a2=98;

printf("%c%c\n”,al,a2);

printf("%d%d\nz/,al,a2);

}

程序运行时输出如下:

ab

9798

字符型数据和整型数据是通用的,但应该注意字符数据只占一个字节,它只能存放

0-255范围内的整数。

例2.4大小写字母的转换

main()

(

charal,a2;

al='a';a2='b';

al=al―32;a2=a2-32;

printf("%c%c\n",al,a2);

)

运行结果为:

AB

程序的作用是将两个小写字母a和b转换成大写字母A和B。’a'的ASCII码为97,

而'A'为65,'b'为98,'B'为66。从ASCH码表中可以看到每一个小写字母比它相应的

大写字母的ASCH码大32。

四、字符型数据的输入和输出

1.getchar函数和putchar函数

例2.5ttinclude"stdio.h"

main()

charc;

c=getchar();

putchar(c);

在运行时,如果从键盘输入字符'a'

a/(输入'a'后,接回车键)

a(输出变量c的值'a')

注意:getchar()只能接收一个字符。putchar()也只能向终端输出一个字符。

在使用getchar函数和putchar函数时,程序的首部需使用预编译命令"#include"

stdio.h"。

2.scanf函数和printf函数

例2.6main()

(

charcl,c2;

scanf("%c%c",&cl,&c2);

printf("%c%c,z,cl,c2);

}

若输入为ab/

则输出为ab

在使用scanf函数和printf函数输入输出字符型数据时,使用"%c"格式控制,

用来输入输出单个字符。

注意,在用"/c"格式输入字符时,空格将以有效字符输入:

scanf("%c%c%c",&cl,&c2,&c3);

若输入aVbVcZ

则将字符'a'送给cl,字符空格'V'送给c2,因为空格也是一个有效字符,字符'b'

送给c3。枇只需要读入一个字符,用了空格做间隔,所以会出现这样的问题。

五、字符串常量

字符串常量是用双引号括住的字符序列。如:"Howdoyoudo"CHINA","

a"等都是字符串常量。

可以输出一个字符串,如printf("Howdoyoudo.");

注意:不要将字符常量与字符串常量混淆。’a'是字符常量,"a"是字符串常量,

二者不同。

C规定:在每个字符串的结尾加一个“字符串结束标志”以便系统据此判断字符串

是否结束。以‘\0'作为字符串结束标志。'\0'是ASCH码为0的字符,从ASCII码表中

可以看到ASCH码为0的字符是“空操作字符”不引起任何操作。

2.5变量的初始化

变量的初始化,就是在定义变量的同时给变量赋予初值。可以采用说明变量的类型,

然后再赋值的方法,也可以对变量类型说明的同时,给变量赋初值。

1.先定义后赋值

inta,b,c;

a=2;

b=5;

c=10;

2.定义和赋值同时进行

inta=5;

shortb=10;

charc='a';

floatd=7.8;

3.对几个变量同时赋一个初值

intal=10,a2=10,a3=10;

不可以写成:intal=a2=a3=10;

但是也可以写成:intal,a2,a3;

al=a2=a3=10;

初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。相当

于一个赋值语句。例如:

inta=10;相当于:inta;a=10;

又如:

inta,b,c=20;相当于:inta,b,c;c=20;

2.6运算符和表达式

一、算术运算符和表达式

例2.7已知正方形的长和宽,求正方形的周长。

[分析]正方形的周长公式为:1=2*(a+b),已知正方形的长和宽可以计算周长。

main()

inta,b,1;

a=3;

b=4;

1=2*(a+b);

printf("l=%d\n,z,1);

1.基本的算术运算符

+(加法运算符,或正值运算符)

-(减法运算符,或负值运算符)

*(乘法运算符)

/(除法运算符)

%(模运算符,或求余运算符)

注意:(1)两个整数相除结果为整数。但是如果相除的两个数中,至少有一个为实

数,则结果为带小数的商。

(2)外模运算符,要求操作数均为整型数据,如7%4的值为3。

2.算术表达式

用算术运算符和括号将操作数连接起来的,符合C语法规则的式子,称C算术表达

式。

在表达式求值时,按运算符的优先级别高低次序执行。

例如:10+'a'+1.5—8765.12*'b'

在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。

3.强制类型转换

可以用强制类型转换运算符将一个表达式转换成所需类型。例如:

(double)a(将a转换成double类型)

(int)(x+y)(将x+y的值转换成整型)

(float)(5%3)(将5/3的值转换成float型)

一般形式为:

(类型名)(表达式)

注意:(1)类型名应用括号括起来。如(int)(x+y)

(2)已知floatx;对于(int)x,x仍然是float类型,而整个表达式(int)x

为整型。

二、赋值运算符和赋值表达式

1.赋值符号

赋值符号"="就是赋值运算符,将一个数据赋给一个变量。如"a=3"。

2.类型转换

如果赋值运算符两侧的类型不一致,要进行类型转换。

(1)将实型数据赋给整型变量时,舍弃实数的小数部分。如i为整型变量,执行”

i=3.56"的结果是使i的值为3。

(2)将整型数据赋给实型变量时,数值不变,但以浮点数形式存储到变量中。

3.复合的赋值运算符

常用的赋值运算符有以下几种:

+=,—=,*=,/=,%=

例如:

a+=3等价于a=a+3

x*=y+8等价于x=x*(y+8)

x%=3等价于x=x%3

4.赋值表达式

由赋值运算符将一个变量和一个表达式连接起来的式子称为”赋值表达式"。例

a=b=c=5(赋值表达式值为5,a、b、c值均为5)

a=5+(c=6)(表达式值为11,a值为11,c的值为6)

a=(b=4)+(c=6)(表达式值为10,a值为10,b等于4,c等于6)

三、逗号运算符和逗号表达式

逗号运算符将两个表达式连接起来。如:

3+5,6+8

称为逗号表达式。逗号表达式的格式为:

表达式L表达式2

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的

值是表达式2的值。例如逗号表达式a=3*5,a*4,先求解a=3*5,得a的值为15,

然后求解a*4,得60。整个逗号表达式的值为60。

课堂练习综合实例例1输入三角形的三条边长,求三角形面积。(为了简单起见,

设输入的三边长a,b,c能构成三角形)

#include"math,h"

main()

(

floata,b,c,s,area;

scanf("%f,%f,%f",&a,&b,&c);

s=l.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.2f\n〃,a,b,c,s);

printf("area=%7.2f\n",area);

)

运行情况如下:

3,4,6

a=3.00,b=4.00,c=6.00,s=6.50

area=5.33

例2从键盘输入一个大写字母,要求改用小写字母输出。

ttinclude"stdio.h"

main()

(

charcl,c2;

cl=getchar();

printf("%c,%d\n/z,cl,cl);

c2=cl+32;

printf("%c,%d\n",c2,c2);

运行情况如下:

A/

A,65

a,97

本章小结

本章在讲解顺序结构程序设计方法的同时,介绍了三种数据类型。

1.整型数据。主要了解整型数据的定义方法,根据使用整数的范围选用定义整数

变量的类型。掌握整型数据的输入输出方法,主要使用d格式控制符。

2.实型数据。主要掌握实型变量的不同定义方法,单精度数和双精度数的表示范

围,实型数据的输入输出方法,主要使用f格式控制符。

3.字符型数据。是由一对单引号括起来的单个字符,要注意,字符与字符串的区

别。

还讲解了各种运算符和表达式,主要掌握算术运算符,在混合运算中,要按照运算

符的优先级,结合方向运算。

作业:

1.编程序,用getchar函数读入两个字符给cl、c2,然后分别用putchar函数和

printf函数输出这两个字符。上机运行此程序,比较putchar和printf函数输出字符

的特点。

2.试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。

授课日期:第7周周一5一8周三1一2第8周周一5一8周三1一2

第9周周一5一8周三1一2

授课类型:演示、讲解、练习、辅导课时:18

教学内容:1、关系运算符和关系表达式

2、逻辑运算符和逻辑表达式

3、if语句

4、switch语句

教学目标:1、掌握关系运算表达式

2、掌握逻辑运算表达式

3、熟练掌握if语句的使用

4、掌握switch语句

教学重点:1、关系运算符和关系表达式

2、逻辑运算符和逻辑表达式

3、if语句的使用

教学难点:1、掌握switch语句的使用

2、if语句的嵌套使用

教学过程:内容讲授一►学生实践一►作业布置►新课内容预告

教学手段:多媒体教学软件+个别辅导

作业:给学生写评语,若学生成绩在60〜69分,则打印“及格”,70〜

89分打印“良好”,90〜100分打印“优秀”,60分以下打印“不

及格”,请分别用if-else语句和switch语句编程。

第3章选择结构程序设计

选择结构,或称分支结构,是指对所给定的条件进行判断,然后决定选择执行不同

的操作。本章主要介绍如何用c语言实现选择结构。c语言的选择语句有两类,一类是

if语句,另一类是switch语句,本章将分别进行介绍。在介绍选择结构程序设计的同

时,还要介绍关系运算符和关系表达式,逻辑运算符和逻辑表达式等内容。

3.1关系运算符和关系表达式

一、关系运算符及其优先次序

1.关系运算符

C语言提供6种关系运算符:

①<(小于)

②<=(小于或等于)

③>(大于)

④>=(大于或等于)

⑤==(等于)

⑥!=(不等于)

优先级相同(高)

优先级相同(低)

2.关于优先次序:

(1)前4种关系运算符的优先级别相同,后两种也相

同。前4种高于后2种。例如,’>‘优先于'==\而'>'与'〈'优先级相同。

(2)关系运算符与算术运算符、赋值运算符的优先级关系如下:

算术运算符(高)一关系运算符(中)-赋值运算符(低)

例如:a>b+c等效于a>(b+c)

a==b<c等效于a==(b<c)

a=b>=c等效于a=(b>=c)

(3)关系运算符的结合方向是“自左向右”。

注意:“等于”关系的运算符“==”和“不等于”关系的运算符“!=”与数学中

的表示方法不同。例如,欲判断x是否等于0,若写成:x=0则表示把0赋值给变量x,

正确的写法为:x==0o

二、关系表达式

1.关系表达式

用关系运算符将两个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式、

字符表达式等)连接起来的式子,称关系表达式。

例:x>y,a+b〈18,'a'〈'b'都为合法的关系表达式。

2.关系表达式的值

关系表达式的值是一个逻辑值,即“真”或“假工

在C语言中:常用1表示“真”,用0表示“假二

例如,a=5,b=2,则:

关系表达式a>b的值为“真”,表达式的值为E

关系表达式a==b的值为“假”,表达式的值为0。

可以将关系表达式的运算结果(0或1)赋给一个整型变量或字符型变量,如a=4,b=l,

下面的赋值语句是将1赋给变量c:

c=a>bc的值为1

例3.1试求X=5>3>1的值。

[分析]X=5>3>1相当于x=(5>3)>1=1>1=0

[说明]根据关系运算符的优先级别高于赋值运算符。

3.2逻辑运算符和逻辑表达式

一、逻辑运算符及其优先次序

1.逻辑运算符

C语言提供了3种逻辑运算符:

①!逻辑非

②&&逻辑与

③II逻辑或

其中“&&”和“|”为“双目(元)运算符”,要求有两个操作数(即运算量),如

(a<b)&&(x<=y),(a<b)|(x〈=y)。“!”是“一目(元)运算符”,只需一个操作数,如!a

或!(a〈b)o

2.关于逻辑运算符的优先次序:

(1)逻辑运算符的优先次序如下:

!(非)-&&(与)一I(或),即“!”为三者中最高的。

(2)逻辑运算符中的“&&”和“I”低于关系运算符,“!”高于算术运算符。

例如:

(a>=b)&&(x>y)可写成:a>=b&&x>y

(a==b)|(x==y)可写成:a==b|x==y

(3)逻辑运算的结合方向是“自左向右二

二、逻辑表达式

1.逻辑表达式

用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。

例如:a&&b*c,(a+b)|(c<0)均为逻辑表达式。

2.逻辑表达式的值

C语言编译系统在给出逻辑运算时,以数值1代表“真”,以0代表“假”,但在判

断一个量是否为“真”时,以非0代表“真”,即将一个非0的数值认为是“真”,以0

代表“假”。

注意:(1)参与逻辑运算的量不但可以是0和1,或者是0和非0的整数,也可以

是任何类型的数据,如字符型、实型或指针型。

(2)如果在一个表达式中不同位置上出现数值,应区分哪些是作为数值运算或关

系运算的对象,哪些作为逻辑运算的对象。

(3)在逻辑表达式的求解中,并不是所有逻辑运算符都需要执行,有时只需执行

一部分运算符就可以得到逻辑表达式的最后结果。例如:

①x&&y&&z

只有x为真时,才需要判断y的值。只要x为假,就立即得出整个表达式为假。

②xIy|z

只要x为真(非0),就不必判断y和x;当x为假,才判断y;x和y都为假才判

断z。

3.3if语句

if语句是选择结构的一种形式,又称为条件分支语句。它是通过对给定条件的判断,

来决定所要执行的操作。C语言中提供了3种形式的if语句:if语句、if-else语句和

if-else-if语句。

一、问题的提出

[问题]比较两个数的大小,将两个数中较大者赋给m。

[分析]要比较两个数的大小就要用到关系表达式,定义两个变量a,b,如果a>b

则将a的值赋给m,若a<b则将b的值赋给m,这里我们将用到if语句来实现该项功能。

main()

inta,b,s;

a=5;b=10;

if(a>b)m=a;

elsem=b;

printf("m=%d\n”,m);

程序运行结果:

m=10

[说明]在该问题中我们借用了if语句,通过条件来判断应该执行哪条语句,充分

体现出选择结构程序设计的思想。

二、if语句的三种形式

1.if语句

if语句是条件分支语句最基本的形式。

格式:if(表达式)语句

功能:首先计算表达式的值,若表达式的值为“真”(非0),则执行语句,若表达

式的值为“假”(0),不执行语句。其流程图3.1(a)所示。

例如:

if(x>y)printfx);

2.if-else语句

if-else语句是条件分支语句的标准使用形式。

格式:if(表达式)语句1

else语句2

功能:首先计算表达式的值,若表达式的值为“真”(非0),则执行语句1,若表

达式的值为"假”(0),则执行语句2。

例如:

if(x>y)printfx);

elseprintf(〃%d〃,y);

3.if-else-if语句

前面两种if语句一般都用于两个分支的选择结构。对于多个分支选择时,可采用

if-else-if语句。

格式:

if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

1

1

1

elseif(表达式nT)语句nT

else语句n

功能:首先计算表达式1的值,若为“真”(非0),执行语句1,否则进行下一步

判断;若表达式2为真,执行语句2,否则进行下一步判断……最后所有表达式都为假

时,执行语句n。

例如:

if(score>89)grade='A';

elseif(score>79)grade='B';

elseif(score>69)grade—C';

elseif(score>59)grade='D';

elsegrade='E';

关于if语句的说明:

(1)if后面圆括号中的表达式一般是关系表达式或逻辑表达式,用于描述选择结

构的条件,但也可以是任意的数值类型表达式(包括整型、实型、字符型、指针型数据

表达式)。

例如:if(2)printf("OK!");

是合法的,因为表达式的值为2,非0,按“真”处理,执行结果输出“0K!”

(2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句

结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句

中的内嵌语句所需要的。

(3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语

句,此时应用大括号“{}”将几个语句括起来,构成一个复合语句,注意:复合语句

的“{”和“}”之后不能加分号。

例3.2输入两个实数,按代数值由小到大输出这两个数。

main()

(

floata,b,c;

scanf(〃%f,%f〃,&a,&b);

if(a>b)

(

t=a;a=b;b=t;

)

printf(〃%5.2f,%5.2f〃,a,b);

)

程序运行结果:

2.2,-5.7/

-5.70,2.20

二、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()语句1}

else语句2

这时“{}”限定了内嵌if语句的使用范围,因此else与第一个if配对。

例3.3有一函数:

--1(x<0)

y=«0(x=0)

、1(x>0)

编一程序,输入一个x值,输出y值。

main()

(

intx,y;

scanf("%d",&x);

if(x<0)y=-l;

elseif(x==0)y=0;

elsey=l;

printf(//x=%d,y=%d\n”,x,y);

三、条件运算符

条件运算符由两个符号“?”和“:”组成,要求有3个操作对象,称三目(元)

运算符,它是C语言中唯一的三目运算符。条件表达式的格式为:

表达式1?表达式2:表达式3

min=(a<b)?a:b;

说明:(1)通常情况下,表达式1是关系表达式或逻辑表达式,用于描述条件表达

式中的条件,表达式2和表达式3可以是常量、变量或表达式。

例如:(x==y)?'T':'F'

(a>b)?printfa):printfb)

等均为合法的条件表达式。

(2)条件表达式的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,

此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达

式3,表达式3的值就是整个条件表达式的值。

min=(a<b)?a:b;

执行结果就是将a和b二者中较小的赋给mine

(3)条件表达式的优先级别仅高于赋值运算符,而低于前面介绍过的所有运算符。

因此,

min=(a<b)?a:b;

可直接写成:

min=a<b?a:b;

如果有a>b?a:b+l等效于a>b?a:(b+1),而不等效于(a〉b?a:b)+1

(4)条件运算符的结合方向为“自右至左”。例如:x>O?l:x〈O?-l:O等效于

x>O?l:(x<O?-l:O)

(5)表达式1、表达式2和表达式3的类型可以不同,此时条件表达式的值的类

型为它们中较高的类型。

例3.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如

果不是,不转换。然后输出最后得到的字符。

main()

charch;

printf("Pleaseenteracharcter:\n");

scanfC%cv,&ch);

ch=(ch>='A'&&ch〈='Z')?(ch+32):ch;

printfch);

}

程序运行结果:

Pleaseenteracharcter:

A/

a

[说明]条件表达式中的(ch+32),其中32

温馨提示

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

评论

0/150

提交评论