C语言程序设计案例教程-电子教案-孙街亭-7152市公开课获奖课件省名师优质课赛课一等奖课件.ppt
《C语言程序设计案例教程-电子教案-孙街亭-7152市公开课获奖课件省名师优质课赛课一等奖课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计案例教程-电子教案-孙街亭-7152市公开课获奖课件省名师优质课赛课一等奖课件.ppt(401页珍藏版)》请在咨信网上搜索。
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,二十一世纪高职高专新概念规划教材,C语言程序设计案例教程,主 编 孙街亭,中国水利水电出版社,1/401,第1章 C语言概论,2/401,知识点1 C语言发展过程,C语言是国际上广泛流行计算机高级语言,既可用来编写系统软件,也可用来编写应用软件。C语言是在B语言基础上发展起来,但B语言过于简单,功效有限。1972年至1973年间,贝尔试验室在B语言基础上设计出了C语言。最初C语言只是为了描述和实现UNIX操作系统而设计一个工作语言。以后,C语言经过屡次改进,其功效不停完善,其突出优点逐步引发了人们注意。1977年出现了不依赖于详细机器C语言编译文本“可移植C语言编译程序”,使C程序移植到其它机器时所需做工作大大简化,这也推进了UNIX操作系统在各种机器上快速实现。伴随UNIX日益广泛使用,C语言也得到快速推广。C语言和UNIX在发展过程中相辅相成。1978年以后,C语言已先后移植到大、中、小、微型机上。1983年,美国国家标准化协会(ANSI)依据C语言问世以来各种版本对C语言进行了扩充和完善,制订了新标准,称为ANSI C。ANSI C比原来标准C有了很大发展。1987年,ANSI又公布了新标准87 ANSI C。1990年,国际标准化组织ISO 接收87 ANSI C为ISO C 标准(ISO 98991990)。当前流行C编译系统都是以它为基础。在微型机上使用有Microsoft C、Turbo C、Quick C、Borland C等,它们不一样版本又略有差异。所以,读者应了解所用计算机系统配置C编译系统特点和要求(能够参阅相关手册)。,3/401,知识点2 C语言特点,C语言主要特点以下:,(1)语言简练、紧凑,使用方便、灵活。C语言一共只有32个关键字、9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切无须要成份。,(2)运算符丰富。C语言中共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理,从而使C运算类型极其丰富,表示式类型多样化。,(3)数据类型丰富。C语言数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。,(4)含有结构化控制语句(如ifelse语句、while语句、dowhile语句、switch语句、for语句)。用函数作为程序模块单位,便于实现程序模块化。C是良好结构化语言,符合当代编程格调要求。,(5)语法限制不太严格,程序设计自由度大。比如对数组下标越界不做检验,由程序编写者自己确保程序正确性。对变量类型使用比较灵活,比如整型数据与字符型数据在一定范围内能够通用。,(6)C语言能进行位(bit)操作,能实现汇编语言大部分功效,能够直接对硬件进行操作。所以C既含有高级语言功效,又含有低级语言许多功效,可用来编写系统软件。C语言这种双重性,使它既是成功系统描述语言,又是通用程序设计语言。有些人把C语言称为“高级语言中低级语言”或“中级语言”,意思是兼有高级语言和低级语言特点。,4/401,知识点3 C程序基本结构,3.1 C语言中标识符,1,C,语言字符集,(1)26个英文字母(包含大小写):az、AZ。,(2)10个数字字符:09。,(3)27个特殊字符:+、-、*、/、=、:、;、?、|、!、#、%、&、()、_(下划线)、空格、,、。,共89个字符能够在C程序中出现,不能够包含除此之外其它字符。,2,C,语言中标识符,标识符是程序设计人员用来命名程序中一些基本单元或模块符号。C语言要求:标识符由字母、数字字符和下划线组成,并以字母或下划线开头。定义标识符时需要符合以下要求:,(1)不能使用系统保留关键字。,(2)C语言严格区分大小写,同一个字母大小写代表不一样标识符。,(3)为提升程序可读性,标识符名称尽可能使用有意义英文单词,做到“见名知义”。,(4)标识符长度(字符个数)能够少于等于8个字符,有系统也能够少于等于32个字符。,5/401,3.2 C程序组成,一个C程序能够由若干个源程序文件(分别进行编译文件模块)组成,一个源程序文件能够由若干个函数、编译预处理命令,以及全局变量申明部分组成。,(1)函数是程序设计模块化表达。函数用来完成某个特定操作,一个程序能够包含很多函数。这些函数能够是由用户自己设计,也能够是系统提供库函数。但程序中一定要有一个并只允许有一个主函数main()。程序从主函数开始执行,不论main函数在整个程序中位置怎样。main函数能够放在程序最前头,也能够放在程序最终,或者在一些函数之前,在另一些函数之后。其它函数经过主函数或被主函数已经调用函数调用而间接执行。,(2)一个函数由两部分组成:,1)函数头部,即函数第一行。包含函数名、函数类型、函数属性、函数参数(形式参数)名、形式参数类型。一个函数名后面必须跟一对圆括号,函数参数能够没有,如main()。,2)函数体,即函数头部下面大括号内部分。假如一个函数内有多个大括号,则最外层一对 为函数体范围。函数体普通包含申明部分和执行部分。申明部分主要用于定义所用到变量,执行部分则由若干个语句组成。,6/401,即函数一般形式如下:,函数类型 函数名(参数类型 参数1,参数类型 参数2,),声明部分,执行部分,示比如下:,int add(int a,int b),int c;,c=a+b;,(3)C程序书写格式自由,一行内能够写几个语句,一个语句能够分写在多行上。C程序没有行号,每个语句和数据定义最终必须有一个分号。分号是C语句必要组成部分。,(4)C语言本身没有输入输出语句。输入和输出操作是由库函数scanf和printf等函数来完成。C语言对输入输出实施“函数化”。,(5)C程序中为了说明程序功能或某部分含义,能够带注释。注释能帮助读者阅读和了解程序。程序编译时,注释被忽略,它不产生代码行。注释内容写在一对符号“/*”和“*/”之间,这是传统C语言中注释方式,其中内容能够是一行或几行。自符号“/*”开始到“*/”符号结束,其间内容都被认为是注释内容。,7/401,知识点4 编译预处理命令,ANSI C标准要求能够在C源程序中加入一些编译预处理命令,以改进程序设计环境,提升编程效率。这些预处理命令是由ANSI C统一要求,不过它不是C语言本身组成部分,不能直接对它们进行编译。必须在对程序进行通常编译(包含词法和语法分析、代码生成、优化等)之前,先对程序中这些特殊命令进行“预处理”,即依据预处理命令对程序作对应处理。经过预处理后程序不再包含预处理命令,最终再由编译程序对预处理后源程序进行通常编译处理,得到可供执行目标代码。C语言提供预处理功效主要有以下3种:宏定义、文件包含和条件编译。为了与普通C语句相区分,这些命令以符号“#”开头。,8/401,4.1 宏定义,1,不带参数宏定义,用一个指定标识符(即名字)来代表一个字符串,它普通形式为:,#define 标识符 字符串,比如:,#define PI 3.1415926,其作用是指定用标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现全部PI都用“3.1415926”代替。这种方法使用户能以一个简单名字代替一个长字符串,所以把这个标识符(名字)称为“宏名”,在预编译时将宏名替换成字符串过程称为“宏展开”。,9/401,2,带参数宏定义,不是进行简单字符串替换,替换时还要进行参数替换。其定义普通形式为:,#define 宏名(参数表)字符串,字符串中包含在括号中所指定参数,如:,#define s(a,b)a*b,area=s(3,2);,替换时,将3传给a,2传给b,a*b值赋给area。,10/401,4.2 “文件包含”处理,所谓“文件包含”处理是指一个源文件能够将另外一个源文件全部内容包含进来,即将另外文件包含到本文件之中。C语言提供了#include命令用来实现“文件包含”操作。其普通形式为:,#include 文件名,或,#include ,在一个被包含文件中又能够包含另一个被包含文件,即文件包含是能够嵌套。在#include命令中,文件名能够用双引号或尖括号括起来,二者区分是用尖括号形式时,系统到存放C库函数头文件目录中寻找要包含文件,这称为标准形式;用双引号形式时,系统先在用户当前目录中寻找要包含文件,若找不到,再按标准形式查找(即再按尖括号方式查找)。普通来说,假如为调用库函数而用#include命令来包含相关头文件,则用尖括号,以节约查找时间;假如要包含是用户自己编写文件(这种文件普通都在当前目录中),普通用双引号。,11/401,【案例,1-1,】求两数之和。,/*ex1_1.c the sum of a+b*/,#include stdio.h,main(),int a,b,sum;,printf(Enter two int numbers:n);,scanf(%d%d,sum=a+b;,printf(sum=%dn,sum);,程序运行结果以下:,Enter two int numbers:,1122,sum=33,12/401,本程序作用是求两个整数a和b之和sum。本例中程序开头用了以下注释:,/*ex1_1.c the sum of a+b*/,说明:程序用来求a加b和。本例中有文件包含命令:,#include stdio.h,其中stdio.h是一个头文件,也称标准输入输出头文件。程序中因为要用到数据输入函数scanf()和输出函数printf(),而这两个函数说明系统已经存放在文件stdio.h中,所以要包含该头文件。所谓包含就是把头文件代码引入程序中,因为这个工作是在编译程序前完成,所以称为编译预处理命令。/*/表示注释部分,既能够用汉字表示注释,也能够用英语或汉语拼音作注释。注释只是给人看,对编译和运行不起作用。注释能够加在程序中任何位置。在函数体申明部分,定义变量a、b和sum,指定它们为整型(int)变量。程序中scanf函数作用是输入a和b值。“%d”是输入输出“格式字符串”,用来指定输入输出时数据类型和格式,输入时“%d”表示“以十进制整数形式输入数据”。&a和&b中“&”含义是“取地址”,此scanf函数作用是将两个数值分别输入到变量a和b地址所标志单元中,也就是输入给变量a和b。这种形式是与其它语言不一样。接着执行赋值语句,使sum值为a+b。printf函数中双引号内“sum=%d”,在输出时,其中“%d”将由sum值取代,“sum=”原样输出。程序运行时,从键盘输入数据11、22分别给a和b,输出变量sum之值33。,13/401,知识点5 C程序上机步骤,为了使计算机能按照人们意志进行工作,必须依据问题要求编写出对应程序。所谓程序,就是一组计算机能识别和执行指令。每一条指令使计算机执行特定操作。用高级语言编写程序称为“源程序”。从根本上说,计算机只能识别和执行由0和1组成二进制指令,而不能识别和执行用高级语言编写指令。为了使计算机能执行高级语言源程序,必须先用一个称为“编译程序”软件把源程序翻译成二进制形式“目标程序”,然后将该目标程序与系统函数库和其它目标程序连接起来,形成可执行目标程序。比如,上例编辑后得到一个源程序文件ex1_1.c,然后在进行编译时再将源程序文件ex1_1.c输入,经过编译得到目标程序文件ex1_1.obj,再将目标程序文件ex1_1.obj输入内存,与系统提供库函数等连接,得到可执行目标程序文件ex1_1.exe,最终把ex1_1.exe调入内存并使之运行。,下面主要就用Turbo C 运行C程序步骤作一下简单介绍。,14/401,Turbo C是在微机上广泛使用编译程序,它含有方便、直观、易用界面和丰富库函数。它向用户提供一个集成环境,把程序编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。为了能使用Turbo C,必须先将Turbo C编译程序装入磁盘某一目录,比如放在C盘根目录下一级TC子目录下。,(1)调用Turbo C程序。假如用户当前目录是Turbo C编译程序所在子目录(如TC子目录),则只需从键盘键入tc命令即可:,C:TCtc,屏幕上出现Turbo C集成环境,如图1.1所表示。从图中能够看到,在集成环境上部有一行“主菜单”,其中包含8个菜单项:File、Edit、Run、Compile、Project、Option、Debug、break/watch。,用户能够经过以上菜单项来选择使用Turbo C集成环境所提供各项主要功效。以上8个菜单项分别代表:文件操作、编辑、运行、编译、项目文件、选项、调试、中止/观察等功效。用键盘上“”和“”键能够选择菜单栏中所需要菜单项,被选中项以“反相”形式显示(比如主菜单中各项原来以白底黑字显示,被选中时改为以黑底白字显示)。此时若按Enter键,就会出现一个下拉菜单。比如在选中File菜单并按Enter键后,屏幕上File下面出现下拉菜单,如图1.2所表示。它是一个子菜单,提供多项选择。能够用“”键选择所需要项。比如选择New并按Enter键,表示要建立一个新C源程序。假如选择Load并按Enter键,则表示要调入一个已经有源文件,此时屏幕上出现一个对话框,如图1.3所表示,要求你输入一个文件名字。用户能够输入一个文件名,如ex1_1.c,假如已存在此文件,则系统会将此文件调入内存并显示在屏幕上。此时自动转为编辑(Edit)状态。假如原来不存在此文件,则系统会建立一个以指定名字命名新文件。,15/401,图1.1 Turbo C集成开发环境,16/401,图1.2 File下面出现下拉菜单,17/401,图1.3 调入源文件,18/401,(2)编辑源文件。在编辑(Edit)状态下能够依据需要输入或修改源程序。,(3)编译源程序。选择CompileCompile to OBJ命令,则进行编译,得到一个后缀为.obj目标程序。然后再选择CompileLink EXE file命令进行连接操作,能够得到一个后缀为.exe可执行文件。也能够将编译和连接合为一个步骤进行。选择CompileMake EXE file命令或按F9键,即可一次完成编译和连接,在屏幕上会显示编译或连接时有没有错误和有几个错误。此时按任何一个键,“编译信息框”会消失,屏幕上会恢复显示源程序,光标停留在犯错之处。在屏幕下半部分显示出有错误行和错误原因。依据此信息修改源程序。修改完成认为无错后,再按F9键再次进行编译和连接,如此重复进行,直到不显示犯错为止。,(4)执行程序。按F10键,在窗口上部主菜单中某一项处出现“反相”显示(黑色亮块)。,用“”键将亮块移到Run上按Enter键,在其下拉菜单中选择Run项,或者直接按Ctrl+F9键,系统就会执行已编译好目标文件。此时,TC集成环境窗口消失,屏幕上显示出程序运行时输出结果。假如程序需要输入数据,则应在此时从键盘输入所需数据,然后程序会接着执行,输出结果。,假如发觉运行结果不对,要重新修改源程序,能够再按F10键,并用“”键使亮块移到Edit处,按Enter键即进入编辑状态,能够依据需要修改源程序,并重复(2)(4)步,直到得到正确结果为止。,19/401,(5)能够用Alt和X键(同时按这两个键)脱离Turbo C,回到命令提醒符状态。,此时,能够用DOS命令显示源程序和运行程序:,C:TC TYPE ex1_1.c (列出源程序清单),C:TC ex1_1.1 (执行目标程序 tc1.exe),假如想再修改源程序,能够重新执行步骤(1),并输入源程序文件名。,用Visual C+6.0集成开发环境使用鼠标操作,设计功效强大,而且字符串和注释能够用汉字,但该环境对初学者来说有一定难度,读者可依据自己详细情况选取。,20/401,第2章 数据类型、运算符、表示式,21/401,知识点1 C语言数据类型,C语言数据结构是以数据类型形式出现。C语言数据类型能够分为基本类型和结构类型两种。其中基本类型有:整型,字符型,实型(也叫浮点型,又可分为单精度型和双精度型两种),枚举类型,指针类型和空类型;结构类型有:数组类型,结构体类型,共用体类型等。,C语言中数据有常量与变量之分,它们分别属于以上这些类型。由以上这些数据类型还能够组成更复杂数据结构。比如利用指针和结构体类型能够组成表、树、栈等复杂数据结构。在程序中对用到全部数据都必须指定其数据类型。,22/401,1.1 常量和变量,1,常量和符号常量,在程序运行过程中,其值不能被改变量称为常量。常量能够分为不一样类型,如10、0、-10为整型常量,12.34、-12.34为实型常量,D、d为字符型常量。常量普通从其字面形式即可判别,这种常量称为直接常量;也能够用一个标识符代表一个常量,即符号常量。符号常量在使用前需要先用编译预处理命令定义,如:,#define PI 3.1415926,在此定义后,在当前途序中需要使用3.1415926地方都能够用符号常量PI代替。,习惯上,符号常量名用大写,变量名用小写,以示区分。但这不是要求,仅是习惯而已。,23/401,2,变量,在程序运行过程中,其值能够改变量称为变量。一个变量应该有一个名字,在内存中占据一定存放单元。在该存放单元中存放变量值。变量名、符号常量名、函数名、数组名、类型名、文件名有效字符序列称为标识符。简单地说,标识符就是一个名字。如sum、average是正当标识符,也是正当变量名,而123abc、x+y等是不正当标识符和变量名。变量在使用前需要进行定义,即先定义,后使用。变量定义格式以下:,类型 变量名列表;,比如:,int a,b,c;/*定义a、b、c为整型变量*/,24/401,3,整型常量表示方法,整型常量即整常数。C语言中整常数可用以下3种形式表示:,(1)十进制整数。如100、-123、0。,(2)八进制整数。以0开头数是八进制数。如012表示八进制数12,即(12)8,其值等于十进制数10。,(3)十六进制整数。以0 x开头数是十六进制数。如0 x12,代表十六进制数12,即(12)16,其值等于十进制数18。,25/401,4,整型变量定义方法,整型变量基本类型符为int。能够依据数值范围将变量定义为基本整型、短整型或长整型。在int 之前能够依据需要分别加上修饰符:short(短整型)或long(长整型),所以有以下3种整型变量:,(1)基本整型,以int表示。,(2)短整型,以short int或short表示。,(3)长整型,以long int或long表示。,若再加上修饰符,能够使用以下6种整型变量,即:,有符号基本整型:signed int。,无符号基本整型:unsigned int。,有符号短整型:signed short int。,无符号短整型:unsigned short int。,有符号长整型:signed long int。,无符号长整型:unsigned long int。,以上定义变量格式中,方括号及其中内容能够省略。以下是定义整型变量举例:,int a,b;/*指定变量a、b为整型变量,每个整型数据在内存中占据2个字节单元,(TC环境)或4个字节单元(VC环境)*/,unsigned int c,d;/*指定变量c、d为无符号短整型变量,每个短整型数据及无符号短整型,数据在内存中均占据2个字节*/,long e,f;/*指定变量e、f为长整型变量,每个长整型数据在内存中占据4个字节单元*/,a=10;/*给a赋以整数10*/,表2.1列出了整数类型数据取值范围。,26/401,表2.1 整数类型数据取值范围,类型 取值范围,TC环境 VC环境,signed int -3276832767 -21474836482147483647,unsigned int 065535 04294967295,signed short int -3276832767 -3276832767,unsigned short int 065535 065535,long int -21474836482147483647 -21474836482147483647,unsigned long int 04294967295 04294967295,27/401,5,实型常量表示方法,实数又称浮点数。实数有两种表示形式:,(1)十进制小数形式。它由数字和小数点组成(注意必须有小数点)。如1.23、0.123、12.3、0.0都是十进制小数形式。,(2)指数形式。如1.23e2或12.3e1都代表1.23102。但注意字母e(或E)之前必须有数字,且e后面指数必须为整数。,28/401,6,实型变量定义方法,C语言中实型变量惯用有单精度型(float)、双精度型(double)两类。,以下是定义实型变量举例:,float x,y;/*指定变量x、y为单精度实型变量,每 个单精度实型数据在内存中占据4个,字节单元,自左向右前7位数据有效*/,double z;/*指定变量z为双精度实型变量,每个双精度实型数据在内存中占据8个,字节单元,自左向右前16位数据有效*/,x=12.34;/*给x赋以单精度实数12.34*/,z=1234.5678;/*给z赋以双精度实数1234.5678*/,29/401,7,字符常量,C语言中字符常量是用单引号(即撇号)括起来一个字符。如a、A、!、等都是字符常量。注意,a和A是不一样字符常量。,除了以上形式字符常量外,C语言中还允许使用一个特殊形式字符常量,即以一个“”开头字符序列。比如,前面已经碰到过在printf函数中n,它代表一个“换行”符。这是一个“控制字符”,即转义字符,在屏幕上是不能显示,在程序中也无法用一个普通形式字符表示,只能采取特殊形式来表示。惯用转义字符如表2.2所表示。,30/401,表2.2 惯用转义字符及其含义,符号含义,n换行,将当前位置移到下一行开头,t水平制表(横向跳格),b退格,将当前位置移到前一列,r回车,将当前位置移到本行开头,f换页,将当前位置移到下页开头,反斜杠字符(),单撇号(),“双撇号(”),ddd13位八进制数所代表字符,xhh12位十六进制数所代表字符,31/401,8,字符变量,字符型变量用来存放字符常量,一个字符型变量中只能存放一个字符,不能存放一个字符串。字符型变量定义形式以下:,char ch1,ch2,ch3;/*指定变量ch1、ch2、ch3为字符型变量,每个字符型数据在内存中,占据1个字节单元*/,ch1=a;ch2=101;ch3=x41;/*给ch1赋以字符a,给ch2赋以字符A,给ch3赋以字符A*/,32/401,9,字符串常量,字符常量是由一对单引号括起来单个字符。C语言除了允许使用字符常量外,还允许使用字符串常量。字符串常量是一对双引号括起来字符序列。比如hello!、china、A、1.235等都是字符串常量。能够用输出函数输出一个字符串,比如:,printf(how do you do.);,不要将字符常量与字符串常量混同。a是字符常量,a是字符串常量,二者不一样。能够使用一个字符型数组存放一个字符串。在字符串最终,系统会自动添加0作为字符串结束标志。字符串常量china在内存中实际存放形式为china0。,33/401,1.2 数据类型转换,表示式中不一样类型数据运算时能够进行转换,数据类型转换可分自动(隐式)转换和强制转换两种。,1,自动转换,普通两个操作数运算时,要求两个操作数类型相同,若不相同则系统自动将低类型数据转换成高类型数据,然后实现运算得高类型数据结果(在转换过程中数据精度保持不变)。各种数据类型高低次序如图2.1所表示。图中横向向左箭头表示必定转换,如字符数据必定先转换为整数,short型转换为int型,float型数据在运算时一律先转换成双精度型,以提升运算精度(即使是两个float型数据相运算,也都先转化成double型,然后再运算)。纵向箭头表示当运算对象为不一样类型时转换方向。比如int型与double型数据进行运算,先将int型数据直接转换成double型,然后在两个同类型(double型)数据间进行运算,结果为double型。注意箭头方向只表示数据类型级别高低,由低向高转换。不要了解为int型先转化成unsigned int型,再转化成long型,再转化成double型。,34/401,图2.1 数据类型转化,35/401,2,强制转换,强制转换格式以下:,(类型)表示式,或,(类型)(表示式),其作用是把表示式值强制转换成所要求数据类型,如:,double x=1.23;,int a,b;,a=(int)x+2.9;,b=(int)(x+2.9);,以上倒数第二行语句先将x强制转换成整型数据1,即小数部分被舍弃后与实数2.9相加得实数3.9,再将其和整数部分赋值给变量a,a值为3。最终一行语句先将x和2.9相加得4.13,再将其强制转换成整型数据4,即小数部分被舍弃后再赋值给变量a,a值为4。注意数据类型转换后x值依然是1.23。另外在赋值表示式中,当左边变量和右边表示式值类型不一致时,也有一个类型强制转换问题,此时一律将右边表示式值类型强制转换成跟左边变量类型相同,然后赋值。如a=x;,运算时将右边变量x值强制转换成int类型值1后赋值给整型变量a,但x值依然是1.23。注意,当含字节数多类型转换成字节数少数据类型时,可能会引发精度降低或出现错误结果。,36/401,【案例,2-1,】分析下面程序输出结果并上机验证。,#include stdio.h,main(),int a=10,b=12345;,float x=12.3456,y=-789.1234;,char c=A;,long n=1234567;,unsigned u=65535;,printf(%d,%dn,a,b);,printf(%4d,%4dn,a,b);,printf(%f,%fn,x,y);,printf(%-10f,%-10fn,x,y);,printf(%7.2f,%7.2f,%.3f,%.3f,%4f,%4fn,x,y,x,y,x,y);,printf(%e,%10.2en,x,y);,printf(%c,%d,%o,%xn,c,c,c,c);,printf(%ld,%lo,%xn,n,n,n);,printf(%u,%o,%x,%dn,u,u,u,u);,printf(%s,%5.3sn,computer,computer);,37/401,知识点2 C语言运算符和表示式,C语言运算符范围很宽,把除了控制语句和输入输出以外几乎全部基本操作都作为运算符处理,比如将符号“=”作为赋值运算符,方括号作为下标运算符等。C运算符有以下几类:,算术运算符:+、-、*、/、%、+、-。,关系运算符:、=、|、&。,赋值运算符:=及其扩展赋值运算符。,条件运算符:?:。,逗号运算符:,。,指针运算符:*和&。,求字节数运算符:sizeof。,强制类型转换运算符:(类型)。,分量运算符:、-。,下标运算符:。,其它:如函数调用运算符()。,38/401,2.1 算术运算符和算术表示式,1,算术运算符,+:加法运算符或正值运算符,如1+2、+10。,-:减法运算符或负值运算符,如1-2、-10。,*:乘法运算符,如1*2。,/:除法运算符,如5/3。,%:模运算符,或称求余运算符,%两侧均应为整型数据,如5%3值为2。,需要说明是,两个整数相除结果为整数,如5/3结果值为1,舍去小数部分。不过,假如除数或被除数中有一个为负值,则舍入方向是不固定。比如,-5/3在有机器上得到结果-1,有机器则给出结果-2。多数机器采取“向零取整”方法,即5/3=1,-5/3=-1,取整后向零靠拢。假如参加+、-、*、/运算两个数中有一个数为实数,则结果是double型,因为全部实数都按double型进行运算。,39/401,2,算术表示式和运算符优先级与结合性,用算术运算符和括号将运算对象(也称操作数)连接起来、符合C语言语法规则式子称为C算术表示式。运算对象包含常量、变量、函数等。比如,下面是一个正当C算术表示式:a*b/c-1.2+A。,C语言要求了运算符优先级和结合性。在表示式求值时,先按运算符优先级别高低次序执行,比如先乘除后加减。如表示式a-b*c,b左侧为减号,右侧为乘号,而乘号优先于减号,所以,相当于a-(b*c)。假如在一个运算对象两侧运算符优先级别相同,则按要求“结合方向”处理。如a-b+c,先做a-b,再将其结果和c相加得到最终结果。,C要求了各种运算符结合方向(结合性),算术运算符结合方向为“自左至右”,即先左后右。“自左至右结合方向”又称“左结合性”,即运算对象先与左面运算符结合。以后能够看到有些运算符结合方向为“自右至左”,即右结合性(比如赋值运算符)。假如一个运算符两侧数据类型不一样,则会先自动进行类型转换,使二者含有同一个类型,然后再进行运算。,40/401,3,自增、自减运算符,自增、自减运算符作用是使变量值增1或减1,比如:,+i,-i:在使用i之前,先使i值加(减)1。,i+,i-:在使用i之后,使i值加(减)1。,+i和i+作用都相当于i=i+1。但其不一样之处于于:+i是先执行i=i+1后,再使用i值,即先自增后操作;而i+是先使用i值后,再执行i=i+1,即先操作后自增。假如i原值等于2,则执行下面赋值语句(设这两条语句分别执行):,k=+i;/*i值先变成3,再赋给k,k值为3*/,k=i+;/*先将 i值2赋给k,k值为2,然后i变为3*/,又如:,i=3;,printf(%d,+i);,输出4;若改为,printf(%d,i+);,则输出3。,自增(减)运算符惯用在循环语句中,使循环变量自动加(减)1,也可用于指针变量,使指针指向下一个地址。,41/401,2.2 赋值运算符及赋值表示式,1,赋值运算符,赋值符号“=”就是赋值运算符,它作用是将一个数据赋给一个变量。如“a=10”作用是执行一次赋值操作(或称赋值运算),把常量10赋给变量a。也能够将一个表示式值赋给一个变量,如a=3*4-1,该操作执行后a值为11。,2,复合赋值运算符,在赋值运算符“=”之前加上其它运算符,能够组成复合赋值运算符。假如在“=”前加上一个“+”运算符就成了复合运算符“+=”。比如:,a+=10 等价于 a=a+10,b*=c+6 等价于 b=b*(c+6),d%=2 等价于 d=d%2,凡是二元(二目)运算符,都能够与赋值运算符一起组合成复合赋值运算符。C语言要求能够使用10种复合赋值运算符,即+=、-=、*=、/=、%=、=、&=、=、|=。,C语言采取这种复合运算符,一是为了简化程序,使程序精炼,二是为了提升编译效率。,42/401,3,赋值表示式,由赋值运算符将一个变量和一个表示式连接起来式子称为“赋值表示式”,它普通形式为:,如a=10是一个赋值表示式。对赋值表示式求解过程是:将赋值运算符右侧“表示式”值赋给左侧变量。赋值表示式值就是被赋值变量值。上述普通形式赋值表示式中“表示式”又能够是一个赋值表示式。如a=(b=10),括号内b=10是一个赋值表示式,它值等于10。a=(b=10)相当于b=10和a=b两个赋值表示式,所以a值等于10,整个赋值表示式值也等于10。赋值运算符按照“自右至左”次序结合。,43/401,2.3 关系运算符和关系表示式,1,关系运算符,关系运算实际上就是“比较运算”。将两个值进行比较,判断其比较结果是否为真。比如,x10是一个关系表示式,大于号()是一个关系运算符,假如x值为15,则满足给定“x10”条件,所以关系表示式值为“真”(即“条件满足”);假如x值为5,不满足“x10”条件,则称关系表示式值为“假”。C语言中以1代表“真”,以“0”代表“假”。,C语言提供了6种关系运算符:,优先级相同(高)有:(大于)、=(大于或等于)。,优先级相同(低)有:=(等于)和!=(不等于)。,关于优先次序:,(1)前4种关系运算符(、=)优先级别相同,后两种(!=和=)也相同。但前4种优先级高于后两种。比如,“”优先于“=”,而“”与“”优先级相同。比如,3=35结果值为0(假),而不为1(真)。因为是先做3y x+yz-y x=10值为“真”。现假设:x=10,y=20,z=30,则关系表示式xy)!=z值为“真”,表示式结果值为1;关系表示式x+yb)&(xy)、(ab)|(xy)。“!”是单目(元)运算符,只要求有一个运算量,如!(ab)。逻辑运算结果为逻辑量真(1)或假(0),在一个逻辑表示式中假如包含多个逻辑运算符,如!x&y|ab)&(n=cd),当a=1,b=2,c=3,d=4,m和n原值为1时,因为“ab”值为0,所以m=0,而“n=cd”不被执行,所以n值不是0而仍保持原值1。,47/401,2.5 条件运算符,若if语句中,在表示式为“真”或“假”时都只执行其中一个赋值语句给同一个变量赋值,则能够用简单条件运算符来处理。比如,若有以下if语句:,if (ab)max=a;,else max=b;,能够用下面条件运算符来处理:,max=(ab)?a:b;,该语句执行结果就是将a和b二者中大者赋给max。其中(ab)?a:b是一个“条件表示式”。它是这么执行:假如(ab)条件为真,则条件表示式取值a,不然取值b。,条件运算符是C语言中唯一一个三目运算符,其要求有3个操作对象,故称三目(元)运算符。条件表示式普通形式为:,表示式1?表示式2:表示式3,在执行时先求解表示式1,若为非0(真),则求解表示式2,此时表示式2值就作为整个条件表示式值;若表示式1值为0(假),则求解表示式3,表示式3值就是整个条件表示式值。条件运算符优先级别高于赋值运算符,但比关系运算符和算术运算符都低。条件运算符结合方向为“自右至左”。在条件表示式中,表示式1类型能够与表示式2和表示式3类型不一样。,48/401,【案例,2-2,】分析下面程序输出结果并上机验证。,#include stdio.h,void main(),int a,b,c,i,j,k;,int m,n;,double x,y,z;,a=b=c=7;,i=10;m=1;,x=2.5;y=4.7;,b+=a;,c*=a-2;,z=x+a%3*(int)(x+y)%2/4;,j=+i;,k=i+;,m+=k;,n=a=b,printf(a=%d,b=%d,c=%d,m=%d,n=%d,i=%d,j=%d,k=%dn,a,b,c,m,n,i,j,k);,printf(z=%fn,z);,49/401,2.6 位运算符和位运算,位运算是指进行二进制位运算。C语言提供位运算功效,含有很大优越性。,1,“按位与”运算符(&),参加运算两个数据,按二进位进行“与”运算。假如两个对应二进位都为1,则该位相与结果值为1,不然为0,即0&0=0;0&1=0;1&0=0;1&1=1。,比如,7&5按位与运算:,7 00000111,5 00000101,(&)00000101,从以上运算可知,7&5值为5。假如参加“&”运算数是负数(如-7&-5),则以补码形式表示为二进制数,然后按位进行“与”运算。按位与运算主要用途有:清零、取一个数中一些指定位、保留某一个指定位等。需要注意,7&5结果值为1,因为&为逻辑运算符“与”,7和5作为条件其值为真,真值和真值相与,结果为真。,50/401,2,“按位或”运算符(|),两个对应二进位中只要有一个为1,该位相或结果值就为1,即0|0=0;0|1=1;1|0=1;1|1=1。,比如,7|6按位或运算:,7 00000111,6 00000110,(|)00000111,从以上运算可知,7|6值为7。假如参加“|”运算是负数(如-7|-6- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 案例 教程 电子 教案 街亭 7152 公开 获奖 课件 名师 优质课 一等奖
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文
本文标题:C语言程序设计案例教程-电子教案-孙街亭-7152市公开课获奖课件省名师优质课赛课一等奖课件.ppt
链接地址:https://www.zixin.com.cn/doc/6461932.html
链接地址:https://www.zixin.com.cn/doc/6461932.html