版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编程语言基础C语言 主讲教师任务1 C语言的发展任务2 C语言的特点与程序结构任务3 C语言的上机操作项目1 绪 论本项目主要介绍:1. C语言的发展、C语言的特点与程序结构;2. 讲解C语言的上机操作,使读者对C语言有一个初步的了解。学习重点绪论20世纪70年代,C语言问世,并逐渐发展成为国际上广泛流行的、具有发展前途的计算机高级语言。在学习C语言之前,本任务先来介绍C语言的发展历史的相关知识。C语言是计算机系统开发的工具,也可用它来编写系统软件和应用软件。所以,C语言在程序设计中占有绝对“统治”地位。任务1 C语言的发展编程语言是编制计算机程序的工具,计算机问世以来,编程语言的发展经历了三
2、次重大的突破,即从机器语言到汇编语言、从低级语言到高级语言、从面向过程到面向对象。各种编程语言分类,见右表。任务1 C语言的发展C语言是一种结构化语言,它具有层次清晰,便于按模块化方式组织程序,易于调试和维护等优点。语言的表现能力和处理能力极强。本任务就带大家了解C语言的特点与程序结构。任务2 C语言的特点与程序结构C语言是一门功能丰富的程序设计语言,具有表达能力强、使用灵活、应用范围广、目标程序效率高、可移植性好等优点,比汇编语言容易理解并且使用灵活。归纳起来,C语言具有以下特点:C语言程序简单,容易理解,使用方便、灵活。C语言共有9种控制语句和32个关键字(见附录),程序书写形式自由,语言
3、简练。C语言程序具有丰富的运算符。C语言共有34种运算符(见附录)。C把赋值、括号、强制类型转换等作为运算处理。C语言设置了一些特殊的运算符,例如自增自减运算(+,-)符、复合运算符(%=,*=,/=等)、逗号运算符和条件运算符等。任务2 C语言的特点与程序结构活动1 C语言的特点用C语言编写的程序称为C语言程序,也可以称为C源程序或C程序。C语言程序具有“模块化”程序结构,它的一般结构如图1-1所示。一个完整的C源程序是由以下几部分组成:1.C语言程序的构成一个C语言程序可以包含一个main函数和若干个(包括0个)其他函数。每个函数的结构如图所示,因此,函数是C语言程序的基本单位。任务2 C
4、语言的特点与程序结构活动2 C语言程序的一般结构Turbo C 2.0的安装非常简单, 只要将1张软盘放入A驱动器中, 在DOS的“A:” 下键入INSTALL 即可, 此时屏幕上将显示三种选择: (1)只要在安装过程中按对盘号的提示, 顺序插入各个软盘, 就可以顺利地进行安装, 安装完毕将在C盘根目录下建立一个TC 子目录, TC下还建立了两个子目录LIB和INCLUDE, LIB子目录中存放库文件,INCLUDE子目录中存放所有头文件。运行Turbo C2.0时, 只要在TC 子目录下键入TC并回车即可进入Turbo C 2.0 集成开发环境(2)对Turbo C 2.0更新版本。这样的安
5、装将保留原来对选择项、颜色和编辑功能键的设置。(3)为只有两个软盘而无硬盘的系统安装Turbo C 2.0。任务3 C语言的上机操作活动3 Turbo C 的安装启动Turbo C有以下两种操作方法。1.由DOS平台进入Turbo C使用DOS命令:C:CD TCC:TCTC (执行TC.exe)2.由Windows平台进入Turbo C如右图:任务3 C语言的上机操作活动2Turbo C 的启动从上图可以看到,最顶上一行为Turbo C 2.0 主菜单行,中间窗口为编辑窗口,接下来是信息窗口, 最底下一行为功能键提示行。这四个窗口构成了Turbo C 2.0的主屏幕,以后的编程、编译、调试以
6、及运行都将在这个主屏幕中进行。下面详细介绍主菜单的内容。 主菜单行主菜单在Turbo C 2.0主屏幕顶上一行, 它包括8个主菜单:File(文件)、Edit(编辑)、 Run(运行)、 Compile(编译)、 Project(项目)、 Options(选项)、 Debug(调试)、 Break/watch(断点/监视),每一个主菜单及其子菜单分别用来实现各项操作。任务3 C语言的上机操作活动3 Turbo C 2.0的工作环境在Turbo C2.0集成开发环境下编辑、编译、连接和运行C程序的步骤如下:1.启动集成开发环境方法一:在操作系统的命令行工作方式提示符下输入TC,启动TC集成开发环
7、境。例如:C:TCTC方法二:在Windows的“资源管理器”中,找到可执行文件TC.exe后,双击该文件名,启动TC集成开发环境。如果启动成功,将显示Turbo C的主屏幕。任务3 C语言的上机操作活动4 C程序的上机步骤2.退出集成开发环境方法:选择File/Quit命令或者按【ALT+X】组合键,退出Turbo C集成开发环境。3.菜单(命令)操作方法按【F10】键可以激活主菜单,当前的活动菜单项将“反显”。4.编辑、保存源程序(1)创建(编辑)一个源程序选择主菜单项File中的New子菜单之后,即可录入源程序。(2)打开(编辑)一个已经存在的文件(3)保存源程序任务3 C语言的上机操作
8、活动4 C程序的上机步骤5.编译源程序选择Compile/Compiler命令或按热键【F9】,系统开始编译当前编辑的源文件。6.连接形成可执行文件连接通常是对当前的目标文件进行的,连接的方法有:方法一:选择Compile/Link EXE file命令。方法二:按【Ctrl+F9】组合键。7.执行可执行文件方法一:选择Run/Run命令。方法二:按【Ctrl+F9】组合键。任务3 C语言的上机操作活动4 C程序的上机步骤程序的编译和连接没有错误,不等于运行结果一定正确。编译系统能检查出语法错误,但无法检查出逻辑错误。下面介绍两种动调试方法。1.按步执行方法这种方法的特点是:程序一次执行一行。
9、每执行完一行后,就停下来,用户可以检查此时各有关变量和表达式的值,以便发现问题所在。2.设置断点方法对于一个较长的程序,常用的方法是在程序中设置若干个断点,程序执行到断点时暂停,用户可以检查此时有关变量或表达式的值。如果未发现错误,就使程序继续执行到下一个断点,如此一段一段地检查,直到程序无错误时为止。任务3 C语言的上机操作活动5 C程序的调试方法1.请依照任务3所述步骤,建立一个新工程,在编辑区内输入本项目例1.2的内容,调试运行,在出现的控制台窗口中输入 3和 5,然后按下回车键,查看程序运行结果,如图所示。2.请参照本项目的例题,编写一个程序,输入X,Y,Z三个值,输出其中最小者。3.
10、编写一个程序求两个整数之和。上机实战项目1 绪论输入的两个整数之间要有一个或一个以上的空格。小贴士项目1 绪论本项目首先介绍了C语言的发展、C语言的特点与程序结构,然后讲解了C语言的上机操作,使读者对C语言有一个初步的了解。通过本项目的学习,可以对C语言及其编程环境有个感性的认识,特别要熟练掌握Turbo C 2.0的上机步骤,为今后进一步学习和实践打下良好的基础。项目小结1.熟悉Turbo C2.0 编程环境2.熟悉C语言程序的上机操作步骤 难点回顾项目1 绪论谢谢观赏!编程语言基础C语言 主讲教师任务1 C语言的数据类型任务2 常量与变量任务3 整型数据项目2 数据类型和运算任务4 实型数
11、据任务5 字符型数据任务6 基本输入输出函数任务7 运算符和表达式C语言程序的基本操作对象是数据。数据以某种特定类型而存在,如整型、实型、字符型等。数据类型规定了数据的表示形式、取值范围、存储格式和相关的运算方式。数据往往以常量或变量的形式存在,它们又分别属于各种数据类型。学习重点项目2 数据类型和运算在C程序中,各种变量都应预先说明,然后使用。对变量的说明可以包括三个方面:数据类型、存储类型和作用域。所谓数据类型,是按被说明量的性质、表示形式、占据存储空间的多少以及构造特点来划分的。本任务主要介绍常用的4类数据类型。1.基本数据类型基本数据类型又分为整型类型、实型类型(也称浮点数类型)、字符
12、类型和枚举类型四大类。其最主要的特点是,其值不可以再分解为其他类型,也就是说,基本数据类型是自我说明的。活动1 数据类型2.构造数据类型构造数据类型是由基本类型导出的类型,是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造数据类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。在C语言中,构造类型有以下几种: 数组类型结构体类型共用体类型活动1 数据类型3.指针类型指针类型是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一
13、谈。4.空类型函数在被调用时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明。活动1 数据类型在C语言中,对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,取值可变的量称为变量。本任务就来通过实例介绍常量和变量的基本内容。常量一般从其字面形式即可判别。这种常量称为直接常量或字面常量。例如,11,0,-5为整型常量;4.5,-1.48为实型常量;a,A为字符常量。这都是直接常量。一般情况下,用一个标识符代表一个常量,称为符号常量。为了增强程序的易读性和通用性,往往使用符号常量(Symb
14、olic Constant)。符号常量都作为整体量,即在函数前用一条宏定义语句来定义符号常量,其定义的一般形式为:活动1 常量和符号常量一般情况下,用一个标识符代表一个常量,称为符号常量。为了增强程序的易读性和通用性,往往使用符号常量(Symbolic Constant)。符号常量都作为整体量,即在函数前用一条宏定义语句来定义符号常量,其定义的一般形式为:#define 标识符字符串活动1 常量和符号常量【例2.1】求一个数的周长、面积和体积。#define PI 3.1415926main( )float l,s,r,v;printf(input radius: );scanf(%f,&am
15、p;r);l=2.0*PI*r;s=PI*r*r;v=3.0/4*PI*r*r*r;printf(“l=%10.4fns=%10.4fnv=%10.4fn,l,s,v);活动1 常量和符号常量程序运行结果:input radius:4l=25.1328s=50.2655v=150.7966程序中,#define命令行用来定义PI代表常量3.1415926()。此后凡在本书中出现的PI都代表3.1415926,可以和常量一样进行运算。活动1常量和符号常量在程序执行过程中,其值发生改变的量称为变量(Variable)。变量也有一定的数据类型。变量名、变量类型和存储单元是变量的三要素,即每个变量都必
16、须有一个名字,并有指定的类型和对应的存储单元。最简单也是最常用的变量类型是整型(int类型)、实型(float或double型)和字符型(char型)。C语言和其他高级语言一样,用来标识变量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符(identifier)。所以,标识符就是一个名字。活动 变量C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例如:Class,sum,good,liming,12,sun下面是不合法的标识符和变量名:M.D.John,$123,55,4a45活动 变量1.八进制整常数八进制整常数必须以0开头,即以0作为八进制数
17、的前缀。数码取值为07。以下各数是合法的八进制数: 015(十进制为13),0101(十进制为65),0177777(十进制为65535)。以下各数不是合法的八进制数: 256(无前缀0) ,03A2(包含了非八进制数码)。活动 整型常量活动1 整型常量2. 十六进制整常数十六进制整常数的前缀为0X或0 x。其数码取值为09,AF或af。以下各数是合法的十六进制整常数:0X2A(十进制为42),0XA0 (十进制为160),0XFFFF (十进制为65535)。以下各数不是合法的十六进制整常数: 5A (无前缀0X),0X3H (含有非十六进制数码)3.十进制整常数 十进制整常数没有前缀。其数
18、码为09。以下各数是合法的十进制整常数:237 ,-568 ,65535 ,1627以下各数不是合法的十进制整常数:023 (不能有前导0),23D (含有非十进制数码)。活动1 整型常量活动1 整型常量4.整型常数的后缀在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为065535,有符号数为-32768+32767。八进制无符号数的表示范围为00177777。十六进制无符号数的表示范围为0X00XFFFF或0 x00 xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。例如:十进制长
19、整常数:158L (十进制为158),358000L (十进制为-358000);八进制长整常数:012L (十进制为10),077L (十进制为63),0200000L (十进制为65536);十六进制长整常数: 0X15L (十进制为21), 0XA5L (十进制为165),0X10000L (十进制为65536)。整型变量的基本类型为int 。可以根据数值的范围定义变量为基本整型、短整型和长整型。在int 之前可以根据需要分别加上修饰符(modifier): short(短型)或long(长型)。因此有以下几种。活动1 整型常量1.基本整型类型说明符为int,在内存中占2个字节,其取值为
20、基本整常数。2.短整型类型说明符为short int或short,所占字节和取值范围均与基本型相同。3.长整型类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。4.无符号型类型说明符为unsigned。无符号型又可与上述三种类型匹配而构成。活动2 整型变量下表列出了Turbo C中各类整型量所分配的内存字节数及数的表示范围。活动2 整型变量实型常量也称为实数或浮点数。在C语言中,实数只采用十进制1.十进制数形式由数码09和小数点组成。例如:0.0,.25,5.787,0.17,5.0,402.,-368.9230等均为合法的实数。2.指数形式由十进制数、加阶码标志
21、“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n (a为十进制数,n为十进制整数),其值为a10n。例如,0.00256(=2.5610-3)用指数法可以表示为2.56E-3;180000.0(=1.8105)用指数法可以表示为1.8e5。活动1 实型常量一个实型数据一般在内存中占4个字节(32位)。实型变量分为两类:单精度型和双精度型。见表下表。活动 实型变量字符常量是用单撇号括起来的一个字符。例如a,A,x,+,?等都是合法字符常量。在C语言中,字符常量有以下特点: (1)字符常量只能用单撇号括起来,不能用双撇号或其他括号。(2)字符常量只能是单个字符,不能是字
22、符串。(3)字符可以是字符集中任意字符,但数字被定义为字符型之后不能参与数值运算。如5和5是不同的。5是字符常量,不能参与运算。(4)字母的大小写是两个不同的字符常量。例如a和A是不相同的字符常量。活动1 字符常量转义字符是一种特殊的字符常量。转义字符以反斜线“”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称为“转义”字符。例如,在前面各例中printf函数的格式串中用到的“n”就是一个转义字符,其意义是“换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。常用的以“”开头的特殊字符,见下表。活动2 转义字符活动2 转义字符活动3 字符变量 字符变量的
23、取值是字符常量,即单个字符。字符变量的类型说明符是char。其定义方式为:char c1,c2; 定义c1,c2为字符变量定义了c1,c2两个字符变量后,可以用下面语句对c1、c2赋值。例如:c1=a;c2=b; 每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。活动4 字符串常量 字符串常量是由一对双撇号括起来的字符序列。例如:CHINA ,How do you do,$22.15等都是合法的字符串常量。字符串常量和字符常量是不同的量。 a与a的含义不同,a是字符常量,在内存中占1个字节,可表示为:a;a是字符串常量,在内存中占2个字节,可表示为:a0,实际上在内存中表示为:a0小
24、贴士 格式输出函数printf()用来将一个或更多类型相同或不相同的数据,依次以指定的格式输出,printf函数的一般格式为:printf(格式控制串,输出列表)其中,“输出列表”列出本语句所要输出的0到多个数据项,各数据项用逗号隔开,每项是一个表达式,表示要将该表达式的值写出去。输出时,每一项占一个输出域。“格式控制串”是用串括号“”括起来的一个特殊字符串,串中含有各输出项所要求的格式说明,指出每个数据项以什么形式输出,要占多少字符宽度(即域宽)。 活动1 格式输出函数printf()格式输入函数scanf( )用来将一个或多个类型相同或不同的数据,依次按照指定的格式从键盘读入。调用该函数的
25、语句一般格式为:scanf( 格式控制串,地址列表);其中,“格式控制串”的含义同printf函数;“地址列表”是由若干个地址组成的列表,可以是变量的地址,或字符串的首地址。运行时按以下方式输入a,b的值:4 5 (输入a,b的值)4,5 (输出a,b的值)活动2 格式输入函数scanf( )【例2.11】先输入两个整型数,再以十进制整数的格式输出这两个数。main( )int a,b;scanf(%d%d,&a,&b); 读入两个整数,分别赋给变量a和bprintf(%d,%dn,a,b);活动2 格式输入函数scanf( )程序中,“&”是“地址运算符”,&
26、a指在内存中的地址。而scanf函数的作用是:按照a,b在内存的地址将a,b的值存进去。“%d%d”表示按十进制整数形式输入数据。输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键和空格键。活动2 格式输入函数scanf( )putchar()函数功能是将一个字符输出到标准输出设备上,一般使用形式为:putchar(c);其中,参数c是一个字符型表达式活动3 putchar函数(字符输出函数)活动4 getchar函数(字符输出函数) getchar函数的功能是从终端输入一个字符。getchar函数没有参数,其返回值类型为char,其一般使用形式为: ch=getchar(); c
27、h 是已经定义的类型为char的变量名 该语句将getchar()当作一个函数调用表达式,执行该表达式,从键盘读入一个字符,并将该字符作为函数返回值,赋给“=”左边的变量ch。C语言的运算符可分为以下几类:1.算术运算符用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称为模运算,%)、自增(+)和自减(-)等7种。2.关系运算符用于比较运算。包括大于()、小于()、等于(=)、 大于等于(=)、小于等于(=)和不等于(!=)等6种。活动1 运算符的种类3.逻辑运算符用于逻辑运算。包括与(&)、或()和非(!)等3种。4.位操作运算符参与运算的量,按二进制位进行运算
28、。包括位与(&)、位或(|)、位非()、位异或()、左移()和右移()等6种。活动1 运算符的种类5.赋值运算符 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,=,=)三类共十一种。6.条件运算符这是一个三目运算符,用于条件求值。7.逗号运算符用于把若干表达式组合成一个表达式(,)。活动1 运算符的种类8.指针运算符用于取内容(*)和取地址(&)两种运算。9.求字节数运算符用于计算数据类型所占的字节数。10.特殊运算符有括号(),下标,成员(,.)等几种。下面先来介绍最常用的算术运算、关系运算和圆括号运算等初
29、等运算符。活动1 运算符的种类活动2 算术运算符和算术表达式1.基本的算术运算符(1)加法运算符“+”为双目运算符,即应有两个量参与加法运算,如a+b,1+2等,具有左结合性。(2)减法运算符“-”为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-1等,具有左结合性。(3)乘法运算符“*”为双目运算符,具有左结合性,如3*4等。(4)除法运算符“/”为双目运算符,具有左结合性。当参与的运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。活动2 算术运算符和算术表达式2.算术表达式和运算符的优先级及结合性 C语言中,用算术运算符和括号将运算对
30、象连接起来的、符合C语法规则的式子,称为C算术表达式。运算对象包括常量、变量、函数等。3.强制类型转换运算符 强制类型转换是将一个表达式转换成所需的类型。其一般形式为:(类型说明符) (表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如:(float)a把a转换为实型,(int)(x+y) 把x+y的结果转换为整型。活动2 算术运算符和算术表达式4.自增、自减运算符 自增1运算符记为“+”,其功能是使变量的值自增1。自减1运算符记为“-”,其功能是使变量值自减1。自增1、自减1运算符均为单目运算,都具有右结合性。5.赋值运算符和赋值表达式 用赋值运算符“=”将一个变量和一
31、个表达式连接起来的式子称为赋值表达式。其一般形式为: 变量=表达式 6.复合赋值运算符及表达式 在赋值运算符“=”之前加上其他二目运算符可构成复合赋值运算符。C语言规定可以使用10种复合赋值运算符。7.逗号运算符C语言中逗号“,”也是一种运算符,称为逗号运算符,又称为“顺序求值运算符”。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。活动2 算术运算符和算术表达式活动3 关系运算符和关系表达式 比较运算是程序中最常用的运算之一。用于比较两个运算对象大小关系的运算符,称为关系运算符。C语言提供了6种关系运算符: 小于 = 小于或等于 大于 = 大于或等于 = = 等于 ! = 不等于
32、活动3 关系运算符和关系表达式以上6种关系运算符的优先次序:(1) 前面四种关系运算符的优先级相同,后面两种关系运算的优先级相同。前者优先级高于后者。(2) 关系运算符的优先级低于算术运算符。(3) 关系运算符的优先级高于赋值运算符。例如:ab=c 等于(ab)=ca= =bc 等于a= =(bc)a=bc 等于a=(bc)活动4 算逻辑运算符和逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子,称为逻辑表达式。 下表为逻辑运算的“真值表”。用它表示当a和b的值为不同组合时,各种逻辑运算所得到的值。位运算符为C语言提供了六种位运算符:&按位与;| 按位或; 按位异或; 取反;
33、左移; 右移。活动5 位运算数据类型和运算分析下列程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main()int i, j, m, n;i=8; j=10;m=+i; n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);上机实战分别作以下改动之后,先分析再运行:(1)将第五行改为:m=i+; n= + j;(2)程序改为:main() int i , j ;i=8; j=10;printf(“%d,%d”, i+, j+);数据类型和运算上机实战数据类型和运算(3)在(2)的基础上,将printf语句改为:printf(“%d,%d”, +
34、i, + j );(4)再将printf语句改为:printf(“%d,%d,%d,%d”,i,j,i+,j+);上机实战(5)程序改为:main()int i , j , m=0 , n=0 ;i=8; j=10;m+= i +; n -= -j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n); 上机实战数据类型和运算难点回顾数据类型和运算1. 掌握C语言的基本输入输出函数2. 掌握运算符和表达式谢谢观赏!编程语言基础C语言 主讲教师任务1 C语言的发展任务2 选择结构任务3 循环结构项目3 流程控制通过项目1和项目2的学习,读者可能已经认识到,尽管计算机可以完成
35、许多极其复杂的工作,但实质上这些工作都是按照事先编好的程序进行的。程序就是对计算机要执行的一组操作序列的指令描述。学习重点项目3 流程控制任务1 顺序结构下面是一个简单的顺序结构程序的实例,该程序在执行时按程序书写顺序,自上而下执行。程序中的每一条语句都被执行一次,且仅能被执行一次。【例3.1】由终端输入两个整数给变量x和y,然后输出x和y;交换x和y的值后,再输出x和y。活动1 顺序结构程序实例任务1 顺序结构#includemain()int x,y,t;printf (Enter x&y :n);scanf(%d%d ,&x,&y);printf (x=%d y=
36、%dn,x,y);t=x; x=y; y=t;printf (x=%d y=%dn,x,y);活动1 顺序结构程序实例任务1 顺序结构下面是一个简单的顺序结构程序的实例,该程序在执行时按程序书写顺序,自上而下执行。程序中的每一条语句都被执行一次,且仅能被执行一次。【例3.1】由终端输入两个整数给变量x和y,然后输出x和y;交换x和y的值后,再输出x和y。#includemain()int x,y,t;活动1 顺序结构程序实例printf (Enter x&y :n);scanf(%d%d ,&x,&y);printf (x=%d y=%dn,x,y);t=x; x=y;
37、 y=t;printf (x=%d y=%dn,x,y);任务1 顺序结构活动1 顺序结构程序实例任务1 C语言的发展 C语言的顺序结构语句可以分为四大类。1.表达式语句在表达式的后面加一个分号就构成了一个表达式语句,如:“c=a+b;”“i+;”“j=2,i=1;”。事实上,C语言中有使用价值的表达式语。句主要有3种: (1)赋值语句。(2)自加减运算符构成的表达式语句。(3)逗号表达式语句。活动2 顺序结构语句任务2 选择结构if语句被称为选择语句,也称为分支语句或条件语句,它提供了两条路径,而不再局限于顺序结构中的单一流程,此时程序必须从两条路径中选择其一执行。1.if语句的一般格式if
38、(表达式)语句例如:if(x0) printf(%dn,x);其中,if是C语言的关键字,表达式两侧的圆括号不可少,最后是一条语句或用花括号括起来的复合语句。活动1 if语句任务2 选择结构2.if语句的执行流程if语句的执行流程如图所示。3.if语句的功能描述如果“表达式”的值为“真”(非0值),那么就执行“语句”;否则,若表达式的值为假(0值),则跳过“语句”。活动1 if语句任务2 选择结构在程序设计时,仅使用简单分支可能使程序的执行效率变低。例如,要描述“如果x0,则y=x;如果x=0,则y=-x”。使用最基本的if语句应描述为:if(x0) y=x;if(x=0) y=-x;else
39、不是一条独立的语句,它只是if语句的一部分,在程序中else必须与if配对使用。if else语句的执行流程if else语句的执行流程如图所示。活动2 if else语句任务2 选择结构活动3 if else if语句实际应用中常常面临更多种的选择,把if else结构扩展一下,增加else if就能满足这一需要。1.if else if语句的一般格式if(表达式1)语句1else if(表达式2)语句2 else if(表达式3)语句3else语句42.if else if语句的功能描述如果表达式1为真,则执行语句1,否则判断表达式2,表达式2为真则执行语句2,依次类推。若所有条件均不成立
40、,则执行else分支中的else子句。活动3 if else if语句任务2 选择结构任务2 选择结构活动4 else与if匹配问题当有许多if和else时,如何决定哪个if与哪个else配对呢?例如, 下面的这段程序:if(n6)if(n12)printf(UP!UP!n);elseprintf(DOWN!DOWN!);何时打印DOWM!DOWN!呢?是n=6时,还是n=12?换句话说,else应该与第一个if配对,还是第二个?答案是:else与第二个if配对。因此当满足n=12 时打印DOWN!DOWN!。请同学们思考,什么情况下打印UP!UP!。任务2 选择结构1.else与if配对的规
41、则else总是与它上面最近的if配对,除非用花括号表示出其他选择。2.说明在上面的例子中,如果希望else与第一个if匹配,那就得加花括号。活动4 else与if匹配问题例如:if(n6)if(n12)printf(UP!UP!);elseprintf(DOWN!DOWN!n);现在,得到下面的结果:n3815输出:DOWN!DOWN!UP!UP!无输出!任务2 选择结构活动4 else与if匹配问题任务2 选择结构在if语句中又包含一个或多个if语句的情况称为if语句的嵌套。当流程进入某个选择分支后又引出新的选择时,就要用嵌套的if语句。嵌套的if语句一般形式为:if ( )if( ) 语句
42、1else 语句2内嵌ifelseif( ) 语句3else 语句4内嵌if请注意分清楚if与else 之间的匹配关系。活动5 if语句嵌套 任务2 选择结构【例3.5】输入一个人的年龄,根据其年龄判断他是否已经退休?分析:男士60岁退休,女士55岁退休。因此要判断一个人是否已退休,首先得判断性别,然后判断年龄,才能得出正确的结论。活动5 if语句嵌套 #include#define MAN Mmain()char sex;int age;printf(请输入性别(男士用M,女士用F)n);sex=getchar();printf(请输入年龄n);scanf(%d,&age);if(s
43、ex=MAN)活动5 if语句嵌套 任务2 选择结构任务2 选择结构活动5 if语句嵌套 if(age=60) /*是男士*/printf(已退休n);elseprintf(在工作n);elseif(age=55)printf(已退休n);elseprintf(在工作n);任务2 选择结构若if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值,则可以用简单的条件运算符来处理。例如:若有以下if语句:if (ab) max=a;else max=b;则可以用下面的条件运算符来处理:(ab)?a:b活动6 条件运算符 其中,“(ab)?a:b”是一个“条件表达式”。它是这样
44、执行的:如果(ab)条件是真,则条件表达式取值a,否则取值b。条件运算符要求有三个操作对象,称为三目(元)运算符。它是C语言中唯一的一个三目运算符。活动6 条件运算符 任务2 选择结构任务2 选择结构条件表达式不能取代一般的if语句。只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句。例如:如下的if语句就无法用一个条件表达式代替。if(ab) printf(%d,a);else printf(%d,b);但可以用下面语句代替:printf(%d,ab?a:b);活动6 条件运算符 任务2 选择结构switch语句称为开关语句,也称为多重选择语句。当程序面临
45、多重选择时,可用if 语句的嵌套来实现,但一般情况下,用switch语句代替多层if嵌套来实现这种多重选择,可以使程序的可读性得到很大提高,也容易避免if else的多层嵌套造成的书写错误。活动7 switch与break语句实现分支 1.switch语句的一般格式switch (开关表达式)case 常量表达式1:语句表1case 常量表达式2:语句表2任务2 选择结构活动7 switch与break语句实现分支 case 常量表达式n:语句表ndefault:语句表n+1任务2 选择结构2.switch语句的工作过程下面通过一个实例来看一下switch语句的工作过程。【例3.6】考试成绩用
46、等级A、B、C、D来表示,要求根据A、B、C、D的不同,打印出“优”、“良好”、“及格”、“不及格”等不同的评语。活动7 switch与break语句实现分支 #includemain()char ch1;printf(请输入成绩等级(A,B,C,D),用大写字母n);ch1=getchar();switch(ch1)case A:printf(优秀n);任务2 选择结构活动7 switch与break语句实现分支 任务2 选择结构break;case B:printf(良好n);break;case C:printf(及格n);break;case D:printf(不及格n);break;
47、default:printf(输入错误n);printf(End!n);活动7 switch与break语句实现分支 任务2 选择结构在执行该程序时,首先计算表达式的值(本例中变量ch1的值);并根据所得的值在各个case常量表达式中寻找匹配(本例中case A、case B等),找到匹配后B(本例中匹配的是caseB)执行后面相应的语句表,顺序往下执行;如果无相匹配的常量表达式,但存在default标号,则执行该语句标号后面的语句;当不存在default标号时,不执行switch中的任何一个语句。活动7 switch与break语句实现分支 任务3 循环结构几乎所有实用的程序都包含循环。循环
48、结构是结构化程序的三种基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本单元。循环结构一般由循环条件、循环体和循环控制变量组成。为了更好地理解循环结构,下面介绍几个专业术语。1.循环条件循环结构中的测试表达式,称为循环条件。当循环条件为真时,执行循环体,然后再次对循环条件进行判断,进行下一次循环;当循环条件为假时,结束循环。2.循环体在每个循环周期均要执行一次的语句序列,称为循环体。循环体可以是单条语句,也可以是复合语句,甚至可以是空语句。活动1 有关循环的术语任务3 循环结构3.循环控制变量 在循环条件中控制条件是真是假的变量,称为循环控制变量。由于循环控制变量决定着循环体是否执
49、行以及执行的次数,所以它的作用在循环结构中非常重要。要写出一个正确的循环结构,对循环控制变量要做三方面工作:一是控制变量赋初值;二是把控制变量写入正确的循环条件;三是控制变量的更新和调整。只有程序在测试循环条件时才能判断循环是终止还是继续,而不是在其他任何地方只要条件不满足就立刻退出。活动1 有关循环的术语任务3 循环结构【例3.7】判断下列循环什么时候终止。#includemain()int i=1;while(i3) /*6行*/printf(i=%dn,i);i+; /*9行*/printf(现在i=%dn,i);/*10行*/活动1 有关循环的术语任务3 循环结构while语句定义了一
50、个循环结构,用来实现“当型”循环结构。1.while语句的一般格式while(测试表达式)循环体语句2.while语句的执行流程while语句执行流程如图所示。活动2while语句任务3 循环结构3.while语句的工作过程while循环执行时,先判断表达式的值,当表达式的值为“真”时,循环体语句被执行,然后再去判断表达式的值,如果表达式的值仍为“真”,则再次执行循环体语句;如果表达式值为“假”,则退出循环。 【例3.8】输入10个整数,计算这10个数的和。活动2while语句任务3 循环结构#includemain()int i,sum,num;sum=0; /*部分和变量清0*/i=1;
51、/*循环控制变量置初值*/while(i=10)printf(请输入第%d个数:,i); /*第11行*/活动2while语句scanf(“%d”,&num);sum=sum+num;+i; /*第14行*/printf(这10个数的和是%6dn,sum);任务3 循环结构活动2while语句任务3 循环结构do while语句能建立另一种形式的循环,用来实现“直到型”循环结构。1.do while语句的一般格式do循环体语句 活动3 do while 结构while(测试表达式);例如:do i+;s+=i;while(i10);任务3 循环结构活动3 do while 结构任务3
52、循环结构小贴士do是C语言的关键字,必须和while配对使用。dowhile循环由do开始,while结束;特别要注意的是:while后面的“;”不可省略。while后的表达式用于控制循环是否继续。循环体内如果有多条语句,应该用花括号()括起来写成复合语句。2.do while语句的执行流程do while语句执行流程如图所示。任务3 循环结构活动3 do while 结构3.do while语句的工作过程先执行循环体语句,再求表达式的值,若表达式的值为非0,则再次执行循环体语句,如此反复,直到表达式的值为0时结束循环,并转到下一条语句执行【例3.9】计算1+2+100的值。main()int
53、 k,sum;k=1;sum =0;do sum += k;k+;while(k=100);printf(n sum=%d,sum);任务3 循环结构活动3 do while 结构任务3 循环结构活动4 for循环结构在while语句和do while语句中,循环变量的初始化、循环条件的设置和循环变量的改变三个方面的工作是分散的。控制变量初始化在循环开始之前,循环条件在括号中,控制变量更新、调整在循环体中。分散的语句容易分散注意力,并且加重程序修改、维护的负担。实际上这三方面工作在逻辑上是密不可分、缺一不可的。能不能建立一种结构把这种紧密的关系体现出来?for 语句正好符合这一要求。任务3 循
54、环结构活动4 for循环结构1.for语句的一般形式for(表达式1;表达式2;表达式3)循环体语句例如:For(k=0;k10;k+) printf(*);该程序用于在一行上打印10个“*”。其中,for是C语言的关键字,其后的一对圆括号中通常有三个表达式,各表达式之间用分号隔开。这三个表达式可以是任意形式的表达式。紧跟在for后面的是循环体,即这里的printf语句。如果循环体是多条语句,需要将其写成复合语句形式。活动4 for循环结构任务3 循环结构任务3 循环结构活动4 for循环结构2.for语句的执行流程for语句执行流程如图所示。任务3 循环结构活动4 for循环结构3.for语
55、句的工作过程(1) 计算表达式1。(2) 计算表达式2,如果结果为真,转(3),开始一个循环周期;如果结果为假,转(5)。(3) 执行for下面的语句(循环体),执行完后转(4)。(4) 计算表达式3,结束一个循环周期,重新返回(2),开始下一次循环。(5) 结束循环,流程转到for循环后面的一条语句。任务3 循环结构活动4 for循环结构【例3.10】计算1+2+10的值。#includemain()int i,sum;sum=0;for(i=1;i=10;i+)sum=sum+i;printf(结果等于%4dn,sum);printf(退出循环时i等于%dn,i);任务3 循环结构活动4
56、for循环结构程序中,for后面的括号包含了由两个分号隔开的三个表达式:第一个表达式是控制变量赋初值(本例中是i=1),仅在循环开始的时候执行一次;第二个是测试表达式(循环条件,本例中是i=10),在开始一个循环周期之前进行计算,若结果为真则执行循环体,若结果为假则退出循环;第三个控制变量更新、调整(本例中是i+),它是在循环体执行完之后才执行的。记清这点很重要。在本例中因i+发生在sum=sum+i;之后,故相加的序列是1+2+3+10,而非2+3+4+11。 第三个表达式执行后即结束一个循环周期,流程重新返回第二个表达式的计算,开始下一个周期。任务3 循环结构活动4 for循环结构4.fo
57、r语句说明 如果for语句的循环体由多个语句组成,则必须用花括号“ ”括起来,使其形成复合语句。例如,把变量增值表达式移到循环体中,从而在for中省略变量增值表达式。即上式可改写成:for(k=1,sum=0;k=100; )sum = sum+k; k+;for语句中的初始表达式和变量增值表达式既可以是一个简单表达式,也可以是由逗号运算符将多个表达式连接起来。for语句中的循环条件表达式是关系表达式或逻辑表达式,其值取逻辑值,即“真”或“假”。用来控制循环次数。for语句中的任何一个表达式都可以缺省,但分号“;”一定要保留。缺省表达式部分的功能,可以用其他语句去完成。任务3 循环结构活动5
58、循环嵌套一个循环的循环体内包含另外一个循环语句,这样的编程方式称为“循环的嵌套”。循环嵌套时,外层循环执行一个循环周期,内层循环从头到尾执行一遍。三种循环(while循环、doWhile循环和for循环)不仅可以自身嵌套,而且还可以互相嵌套。 【例3.11】打印如图所示的九九乘法表。 活动5 循环嵌套任务3 循环结构任务3 循环结构活动5 循环嵌套为了简化问题,仅考虑打印表中的积,乘数和被乘数两项留给读者完成。算法设计要点:(1)从上往下看,问题简化为打印第1行乘积、第2行乘积、第k行乘积、第9行乘积,可用for循环语句for(k=1; k=9; k+) 打印第k行; 实现。问题转化为如何用C
59、语言实现“打印第k行”?(2)再来观察第k行( k = 1,2,3,9 ):k*1k*2k*3k*4k*ik*9(i=1,2,3,9)从左往右看,是一个通项公式为:ai = k * i 的数列 ai | i=1,2,9,所以,可用循环语句for(i=1;i=9;i+) printf(%5d,k*i);实现。另外,由于第k行是另起一行,所以,必须添加换行操作printf(n)。完整的源程序请读者思考完善。活动5 循环嵌套任务3 循环结构任务3 循环结构活动6 break,continue和goto语句1.break与continue 语句1) 一般格式 break;continue;2) 功能
60、(1)break:强行结束循环,转向执行循环语句的下一条语句。(2)continue: 结束本次循环。对于while和do-while循环,跳过循环体其余语句,转向循环终止条件的判断;而对for循环,跳过循环体其余语句,转向循环变量增值量表达式的计算。3) 说明任务3 循环结构活动6 break,continue和goto语句(1)break语句只能用于循环语句和switch语句中,continue只能用于循环语句中。而且往往是在一个特殊的条件成立时,执行break或continue语句。例如,输出100以内的自然数,可用如下含有break的循环语句实现:for(i=1;i100;i+) printf(%4d,i);if(i=99) break;而输出100以内的偶数,可用如下含有continue的循环语句实现:for(i=1; i100;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建师范大学《歌曲写作》2023-2024学年第一学期期末试卷
- 双减政策下的幼小衔接教学初探
- 2024年肇庆驾驶员客运从业资格证模拟考试题库
- 癌痛的治疗治疗
- 2024年道路客运从业资格证模拟考试题库APP
- 2024年郴州道路旅客运输驾驶员从业资格考试试题及答案
- 2025届山东省青岛市城阳区生物高三上期末统考试题含解析
- 2024年广东考客运资格证试题题库
- 机器学习 课件 第3-5章 贝叶斯分类器、最近邻分类器、线性模型
- 2025届四川省攀枝花市第十二中学生物高二上期末经典模拟试题含解析
- 快速康复外科在泌尿外科患者围手术期护理中的应用进展
- 妇科护理宫颈炎盆腔炎的护理
- 第6课《求助电话》课件
- 防火封堵报价范本
- 口腔新技术护理课件
- 奇正藏药行业分析
- 农牧项目计划书
- 《设计管理体系》课件
- 奥迪售后管理制度
- 区域发展的自然环境基础(教学课件含视频) -高中地理人教版2019选择性必修二
- 舆情处置培训课件
评论
0/150
提交评论