收藏 分销(赏)

C语言程序设计全套课件整套幻灯片.ppt

上传人:a199****6536 文档编号:10251511 上传时间:2025-04-30 格式:PPT 页数:462 大小:9.88MB
下载 相关 举报
C语言程序设计全套课件整套幻灯片.ppt_第1页
第1页 / 共462页
C语言程序设计全套课件整套幻灯片.ppt_第2页
第2页 / 共462页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,C语言程序设计,(第三版),20年前的情况:,手机是财富拥有着的象征,播放音乐靠硬件实现,10年前的情况:,从工业发展历程看未来世界:,手机是一种通信工具,智能手机出现,播放音乐靠软件实现,10年后的情况:,你所看到的任何一个物体,都具有,显示功能,,见到的所有人,都能知道他叫什么,在什么单位人何种职务,制造技术、电子技术的进步,信息处理方法和能力的提升,今天的情况:,智能手机走进千家万户,智能手机正在取代数码相机、摄像机,1、大学理工科类专业的的学生为什么要开设程序设计基础这门课程,2、,有很多种程序设计语言,为什么要选择C语言,3、怎样才能学好C语言,与本课程有关的几个观点,4、程序设计及程序设计语言,1、大学理工科类专业的的学生为什么要开设程序设计基础这门课程,(1)是高等学校,通识类课程,教学实施方案的明确要求。,计算机应用基础,程序设计基础和数据库技术及应用。,(2)是时代发展的需要,(3)是专业背景和应用的需要,2、,有很多种程序设计语言,为什么要选择C语言,Visual Basic,Pascal,Visual C+,C,Java,选择C语言作为程序设计基础的,理由,:C语言是当前各种程序设计语言的共同的语言。C语言是各种语言的基础。,3、怎样才能学好C语言,数据类型:char,int,float,double,void,输入输出:scanf,printf,getchar,putchar,getch,getche,语句:if,else,switch,case,default,break,while,for,do,continue,goto,return,运算符:sizeof,(1)读懂别人书写的程序。,(2)模仿别人写好的程序,大胆地编写一些常用的,解决实际问题的程序。,(3)无能有多么好的基础,编写的程序一定要上机调试,程序设计及程序设计语言,程序:,程序是能被机器识别并能执行的一系列的指令代码。,指令代码是用程序设计,语言,来描述的。程序设计语言是,人与计算机对话的工具,。程序设计需要在一定程序设计语言,环境,下进行,。,程序设计语言的发展:,程序设计语言一般分为,机器语言,、,汇编语言,和,高级语言,三大类。,低级语言,低级语言一般包括,机器语言,和,汇编语言,10000000(进行一次加法运算),10010000(进行一次减法运算),机器语言,A+B A 或ADD A,B,A-B A 或SUB A,B,汇编语言,用助记符号描述的指令系统称为,符号语言,或,汇编语言,高级语言,它以人类易于接受的文字来表达解决问题的全过程。用户不必费时费力去记忆难以理解的0、1代码,而是可以,把主要精力集中于解决问题的算法上,。,高级语言分为:,面向过程的程序设计语言,和,面向对象的程序设计语言,main()/告诉编译器C程序由此开始执行,/这一段程序开始,float a,b;/定义两个实型变量长a和宽b,float area;/定义面积变量area,area=a*b;/把计算的面积赋给area,printf(%f,area);/输出面积area的值,return 0;,面向过程的程序设计语言:,面向对象的程序设计语言:,面向对象的程序设计是一种,结构模拟,方法,它把,现实世界看成是由许多对象(object)所组成,,对象之间通过相互,发送和接收消息进行联系,。,消息的发送,对象本身,运动,,形成,对象状态的变化,。从程序结构的角度,每个对象都是一个数据和方法的封装体抽象数据类型,。,1.1.2 C语言的发展过程,C语言的发展过程可粗略地分为三个阶段:,1970年至1973年为诞生阶段,之后至1988年为发展阶段,1988年以后为成熟阶段,1C语言的诞生,C语言是为写UNIX操作系统而诞生的。,1970年美国AT&T公司贝尔实验室Ken Thompson为实现UNIX操作系统而提出一种仅供自己使用的工作语言,由于该工作语言是基于1967年由英国剑桥大学的Martin Richards提出的BCPL语言设计的,因而被作者命名为B语言,B取自BCPL的第一个字母。,B语言被用于在PDP-7计算机上实现了第一个UNIX操作系统。,1972年贝尔实验室的Dennis M.Ritchie又在B语言基础上系统地引入了各种数据类型,从而使B语言的数据结构类型化。,1973年K.Tompson和D.M.Ritchie用C语言重写了UNIX操作系统,推出UNIX v5。,1975年又推出UNIX v6。此时的C语言是附属于UNIX操作系统的。,2C语言的发展,1977年C语言的作者发表了不依赖于具体机器系统的C语言编译文本可移植C语言编译程序,从而推动了UNIX操作系统在各种机器上的实现以及UNIX操作系统的不断发展。,1978年以后相继推出了UNIX v7,UNIX systemV。使人们普遍注意到C语言的突出优点,从而又促进了C语言的迅速推广。,1978年Brian W.Kernighan和D.M.Ritchie以UNIX v7中编译程序为基础写了影响深远的名著The C Programming Language,这本书上介绍的C语言是以后各种C语言版本的基础,被称为传统C语言。,1978年以后,C语言先后移植到各种大型机、中型机、小型机及微型机上。,目前,C语言成为世界上使用最广泛的高级程序设计语言,且不依赖于UNIX操作系统而独立存在,。,3C语言的成熟,1978年以后,C语言的不断发展产生了各种C语言版本,不同的C语言版本对传统C语言都有所扩充和发展。,1983年,美国国家标准协会(ANSI)综合了各版本对C的扩充和发展,制定了新标准,称为ANSI C。,Kernighan和D.M.Ritchie按ANSI C标准重写了他们的经典著作,于1990年正式发表了国际标准化组织(ISO)公布的C语言标准。,1988年以后推出的各种C语言版本与ANSI C是相容的。,1999年发布的C99在基本保留C语言特征的基础上,增加了一系列C+中面向对象的新特征,使C99成为C+的一个子集。C99是C89的扩充,C语言也从过程化的语言发展成为面向对象的语言。,1.2 C语言的特点,语言简洁、紧凑,使用方便、灵活。,一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。,C,语言,PASCAL,语言,含义,BEGIN.END,复合语句,if(e)S,IF(e)THEN S,条件语句,int i;,VARi:INTEGER,定义,i,为整型变量,int a10;,VAR a:ARRAY1.10OF INTEGER,定义a为整型一维数组,int f();,FUNCTION f():INTEGER,定义f为返回整型值的函数,int*p;,VAR p:,INTEGER,定义p为指向整型变量的指针变量,i+=2;,i:=i+2,赋值语句,使,i+2=i,i+,+i,i:=i+1,i,自增值,1,,,i+1=i,1.2 C语言的特点,运算符丰富。,共有34种运算符。,数据结构丰富,具有现代化语言的各种数据结构。,C语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。,能实现各种复杂的数据结构(如链表、树、栈等)的运算,尤其是指针类型数据。,具有结构化的控制语句,if.else语句,while语句,do.while语句,switch语句,for语句,1.2 C语言的特点,语法限制不太严格,程序设计自由度大。,对数组下标越界不做检查,由程序编写者自己保证程序的正确。,整型数据与字符型数据可以通用。,C语言能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。,C语言既具有高级语言的特点,又具有低级语言的许多功能,可用来编写系统软件。,生成目标代码质量高,程序执行效率高。,一般只比汇编程序生成的目标代码效率低10%20%。,程序可移植性好(与汇编语言比)。,基本上不做修改就能用于各种型号的计算机和各种操作系统,。,C程序结构,【例1.1】C程序,输出,。,main(),printf(This is a C program.n);,return 0;,作用有两个:,一个使main()函数终止(从而结束程序),二是指出main()函数的返回值是0,这个值表明函数正常结束。,C程序结构,【例1.2】设计一个程序,,计算,两数之和并输出结果。,main(),int a,b,sum;/这是定义三个整型变量 a,b,sum,a=123;b=456;/给a、b赋初值,sum=a+b;/计算a、b之和赋给sum,printf(sum=%dn,sum);/输出sum的值,return 0;,C程序结构,【例1.3】输入两个整数,计算,两者较大,的数,并输出。,main(),int a,b,c;,int max(int x,int y);,scanf(%d,%d,printf(max=%d,c);,return 0;,int max(int x,int y),int z;,if(xy),z=x;,else,z=y;,return z;,1.3.2 C程序结构,(,1),C程序由函数构成(函数是C程序的基本单位),一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数。函数是C程序的基本单位。,被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编写设计的函数。,C函数库非常丰富,ANSI C提供100多个库函数,Turbo C提供300多个库函数。,1.3.2 C程序结构,(,2)main函数(主函数)是每个程序执行的起始点。,一个C程序总是从main函数开始执行,而不论main函数在程序中的位置。,可以将main函数放在整个程序的最前面,也可以放在整个程序的最后,或者放在其他函数之间。,1.3.2 C程序结构,(,3)一个函数由函数首部和函数体两部分组成。,函数首部:,一个函数的第一行。,返回值类型 函数名(函数参数类型1 函数参数名1,函数参数类型2,函数参数名2),int max(int x,int y),函数体:,函数首部下用一对 括起来的部分。,如果函数体内有多个,最外层是函数体的范围。,函数体一般包括声明、执行两部分。,声明部分:定义本函数所使用的变量。执行部分:由若干条语句组成命令序列(可以在其中调用其他函数)。,1.3.2 C程序结构,(4),C程序书写格式自由。,一行可以写几个语句,一个语句也可以写在多行上。,C程序没有行号,也没有FORTRAN、COBOL那样严格规定书写格式。,每条语句的最后必须有一个分号,“,;,”,表示语句的结束,。,1.3.2 C程序结构,(5),可以使用,“,/*,”,和,“,*/,”,对C程序中的任何部分作注释。,如果一开始编程就对程序进行注释,虽然刚开始麻烦一些,但日后可以节省大量的时间。,一个实际的系统往往是多人合作开发,程序文档、注释是其中重要的交流工具。,行注释,“,/,”,块注释,“,/*,”,和,“,*/,”,1.3.2 C程序结构,(6)C语言本身不提供输入/输出语句,输入/输出的操作是通过调用库函数(scanf,printf)完成。,输入/输出操作涉及具体计算机硬件,把输入/输出操作放在函数中处理,可以简化C语言和C的编译系统,便于C语言在各种计算机上实现。,1.4 源程序的编辑、编译、连接与运行,用高级语言编写的程序称为,“源程序”,,,通常简称为程序。,高级程序设计语言也必须被转换为机器语言程序才能被机器理解和执行,完成这种转换任务的系统软件称为,编译程序,。,相应的转换过程通常称为,编译,。,C语言采用编译方式将源程序转换为二进制的目标代码。,1编辑,将源程序逐个字符输入到计算机内存;,修改源程序;,将修改好的源程序保存在磁盘文件中。编辑的对象是源程序,它是以ASCII代码的形式输入和存储的,不能被计算机执行。,编写好一个C程序到完成运行一般经过以下几个步骤:,2编译,编译就是将已编辑好的源程序(已存储在磁盘文件中)翻译成二进制的目标代码。,编译后得到的二进制代码在UNIX下是后缀为.o的文件,在MS-DOS下是后缀为.obj的文件。,经编译后得到的二进制代码还不能直接执行,因为第一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块连接后才能运行。,编写好一个C程序到完成运行一般经过以下几个步骤:,3连接,将各模块的二进制目标代码与系统标准模块经连接处理后,得到具有绝对地址的可执行文件,它是计算机能直接执行的文件。,在UNIX下它以.out为后缀,在MS-DOS下以.exe为后缀。,编写好一个C程序到完成运行一般经过以下几个步骤:,4执行,执行一个经过编译和连接的可执行的目标文件。只有在操作系统的支持和管理下才能执行它。,编写好一个C程序到完成运行一般经过以下几个步骤:,第二章,C语言数据类型与基本操作,34,本章主要内容,1、,常量和变量,2、标识符与关键字,3、整型数在计算机中的存储方式,4、有符号的数据类型和无符号的数据类型,5、运算符及表达式,6、不同类型数据间的转换,数据,类型,构造类型,指针类型,空类型,char,(,字符类型),enum,(,枚举类型),整型,实型,float,(,单精度),double,(,双精度),short int,(,短整型,),long int,(,长整型),int,(,整型,),数组类型,结构类型,共同类型,基本类型,数值类型,文件类型,C语言的数据类型,数据类型决定:,1.数据占内存字节数,2.数据取值范围,3.其上可进行的操作,36,2.1.1 常量,2.1 常量与变量,在程序运行过程中,其值不改变的量称为常量。,在C语言中,常量有不同的类型:,整型常量(int),短整型(short int),长整型(long int),无符号型(unsigned int),实型常量(float和double),字符常量(char),字符串常量,37,1整型常量,十进制常量,如15,19,123,-345等。,八进制常量,以数字,0,开头,如:05,012,0123,十六进制常量,以数字,0,和字母,x,(或大写字母X)开头,如:0 x10,0Xff,0X8,十进制5,10,83,十进制数16,255,8,38,2实型常量,用小数形式表示,如:345,.345,345.0,3.14159,指数形式表示,1.5e5,2.9e-7,1.5105,2.910-7。,注意:,指数形式的浮点常量E或e前面必须有数字,E或e,后面必须为整数。,39,3字符常量,用一对单撇号括起来的一个字符,如a,A,?,#,单撇号只是字符与其他部分的分隔符/定界符,不是字符常量的一部分。,不能用双引号代替撇号,如a不是字符常量,。,字符型常量:,它是用一对单撇号括起来的一个字符,如a,A,?,#等,转义字符,有些字符和命令无法通过键盘直接输入,因而借用一个符号或者数字来表示,C语言用反斜杠“”来表示转义字符的起始符,转义字符的表示有三个方面:,用反斜杠开头后面跟一个字母代表一个控制字符;,n,t,r,b,回车换行,回车不换行,退格,水平跳格,代表字符,用代表字符。,用“”后跟1到3个八进制数代表ASCII码为该八进制数的字符;用“x”后跟12个十六进制数代表ASCII码为该十六进制数的字符。,101或 x41 表示A,363或 xf3 表示,012或 x1A 表示,100或 x40 表示,【例1】打印人民币符号¥,简称字符,printf(Yb=);,41,例2.2,main(),char ch;,ch=362;,printf(%cn,ch);,printf(chinan101tn);,运行结果:,屏幕显示:,china,A ,42,5字符串常量,hello,“,Programming in C,“,“,A,”,“,a,”,“,把用一对双撇号括起来的零个或多个字符序列称为字符串常量。,字符串以双撇号为定界符,但双撇号并不属于字符串。,要在字符串插入撇号,应借助转义字符。,要处理字符串I say:Goodbye!时,可以把它写为I say:Goodbye!。,字符串常量,字符串中的字符数称为该字符串的长度。,字符串常量在机器内存储时,系统自动在字符串的末尾加一个“字符串结束标志”,它是转义字符,“0”,。,h e l l o,0,例 字符串,hello,在内存中,例 空串,0,104,101,108,108,111,0,注:,字符与字符串的区别,.,a,a 0,例,a,a,44,6符号常量,【例2.3】,符号常量举例,#define PRICE 30,main(),int num,total;,num=10;,total=num*PRICE;,printf(total=%d,total);,运行结果:total=300,定义,:用一个标识符代表一个常量,#define,标识符,代表的常量,使用符号常量的好处是:,(1)含义清楚。,(2)在需要改变一个常量时能做到“一改全改”。,常用大写字母,,与变量名区分开来。,变量,变量是指在程序的运行过程中,其值可以发生变化的量,声明变量的目的:,(1)存放需要加工的初始值,(2)存放加工的中间结果,(3)存放加工的最终结果,需要理解的三个概念,变量名、变量的存储空间、变量的值,int a=3;,1101 afff,地址表示,存储空间,a,变量名,3,变量的值,46,1.变量的声明,变量声明的格式为:,数据类型符 变量名1,变量2,变量名n;,例如:,int x;,int y;,或等效为:,int x,y;,注意:,定义变量的语句必须以“;”号结束,在定义一个语句中也可以同时定义多个变量,变量之间用“,”隔开。,对变量的定义可以在函数体之外,也可以在函数体或复合语句中。,47,2变量的初始化,C语言允许在说明变量的同时对其初始化,,int sum=0;/*说明变量sum的类型为整型,初始值为0*/,float pi=3.1416;,char c=w;,【例2.4】整型变量的定义和引用。,#include stdio.h,main(),int x,y,z,s;/*基本整型变量定义,一次可定义一个或多个变量*/,x=3;y=4;z=5;/*整型变量的引用*/,s=x+y+z;/*整型变量的引用*/,printf(ns=%d,s);,运行结果:,S=12,注意:,(1)不同类型的数据在内存中占据不同长度的存储区,而且采用不同的表示方式。,(2)一种数据类型对应着一个值的范围。,(3)一种数据类型对应着一组允许的操作。,48,2.2,标识符和关键字,-,标识符,一个标识符可由字母、数字和下划线组成 ;,必须用字母或下划线开头;,大小写要区分,;,不能用保留关键字作变量名;,避免混淆的字母;,例如:l,与,I,o,与,0,.,例:判断下列标识符号合法性,sum Sum M.D.John day Date 3days,student_name#33 lotus_1_2_3,char ab _above$123,49,32 个关键字:,(,由系统预定义,具有固定定义,不能另作定义),auto break case char const,continue default do double else,enum extern float for goto,if int long register return,short signed sizeof static struct,switch typedef unsigned union void,volatile while,-关键字,50,2.3 整型数在计算机中的存储方式,计算机系统的内存储器,是由许多称为字节的单元组成的,1个字节由8个二进制位(bit)构成,每位的取值为0/1。,最右端的那1位称为,“,最低位,”,,编号为0;最左端的那1位称为,“,最高位,”,,而且从最低位到最高位顺序,依次编号。,原码、反码和补码的相关知识,计算机中,所有的整数都是以补码的形式进行存储的,正整数,的原码、反码和补码相同,求,负整数,的补码步骤如下:,(1)求负整数的原码,(2)在原码的基础上求反码,(3)在反码的基础上加1,原码,5的八位二进制的原码为0000 0101,-5绝对值的八位二进制表示为0000 0101,正整数的原码是这个数本身。,负整数的原码求解方法:,负整数的绝对值用二进制表示,最高位用于表示符号,1表示负整数,0表示正整数。,求-5的原码:,1,000 0101,-5原码的八位二进制表示:,求5的原码:,反码,反码表示法规定:,正整数的反码和原码相同,负整数数的反码是对该数的原码,除符号位外,各位取反,求5的反码:,5的反码的八位二进制为0000 0101,求-5的反码:,-5的原码的八位二进制表示为,1,000 0101,-5的反码的八位二进制表示为,1,111 1010,补码,补码表示法规定:,正整数的补码和原码相同,负整数的补码是在该数的,反码的基础上,加1,,即最后(即最右边)一位上加1。,求5的补码:,5的补码的八位二进制为0000 0101,求-5的补码:,-5的反码的八位二进制表示为,1,111 1010,-5的补码的八位二进制表示为,1,111 1011,C 语言中所有的整数都是以补码的方式存储的,例:求-50在内存中的存储结果(假定用16位来存储)。,-50绝对值的原码:,0000 0000 0011 0010,-50的原码:,1,000 0000 0011 0010,-50的反码:,1,111 1111 1100 1101,-50的补码:,1,111 1111 1100 1110,例:把内存中以补码形式存储的数据1111 1111 1111 0110转化为十进制整数。,数据的补码表示:,1111 1111 1111 0110,除符号位外,各位取反:,1000 0000 0000 1001,最低位加1:,1000 0000 0000 1010,-10,例:把内存中以补码形式存储的数据1111 1111 1111 0110转化为十进制整数。,数据的补码表示:,1111 1111 1111 0110,除符号位外,各位取反:,1000 0000 0000 1001,最低位加1:,1000 0000 0000 1010,-10,58,2.4 有符号的数据类型和无符号的数据类型,类型,类型标识符,所占字节数,取值范围及精度,字符型,signed char,1,-128,+127,unsigned char,1,0,255,整型,signed int,4,-214 783 648,+214 783 647,signed short int,2,-32 768,+32 767,signed long int,4,-214 783 648,+214 783 647,unsigned int,4,0,4 294 967 295,unsigned short int,2,0,65535,unsigned long int,4,0,4 294 967 295,实型,float,4,-3.4,10,-38,3.4,10,38,,,6,7,位有效数字,double,8,-1.7,10,-308,1.7,10,308,,,15,16,位有效数字,long double,16,-1.2,10,-4932,1.7,10,4932,,,18,19,位有效数字,59,2.5,运算符及表达式,算术,运算符,:,+-*/%+-,关系,运算符,:,=!=,逻辑,运算符,:,!&|,位,运算符,:,|&,赋值,运算符,:,=+=-=,条件,运算符,:,?:,逗号,运算符,:,地址,运算符,:,*&,求字节数,运算符,:,sizeof,强制类型转换:,(type-name),分量,运算符,:,.-,下标,运算符,:,其他 :,()-,60,2.5.1 赋值运算符和赋值表达式,1,赋值运算符与赋值表达式,“=”就是赋值运算符。,赋值表达式:由赋值运算符组成的表达式称为赋值表达式。,它的一般形式:,=,如:x=5;,赋值表达式的求解过程:,将赋值运算符右侧的表达式的值赋给左侧的变量。,赋值的含义是将赋值运算符右边的表达式的值存放到左边变量名标识的存储单元中。,61,说明:,(1)赋值运算符左边必须是变量,右边可以是常量、变量、函数调用或由常量、变量、函数调用组成的表达式。,例如:x=10,y=x+10,y=func()都是合法的赋值表达式,12=a,2*a=3*5+55都不是合法的赋值表达式。,(2)赋值符号,“,=,”,不同于数学的等号,它没有相等的含义,,“,=,”,才表示相等。,例如:C语言中x=x+1是合法的,而数学上不合法。,(3)赋值运算时,当赋值运算符两边的数据类型不同时,将由系统自动进行类型转换。,转换原则是:先将赋值号右边表达式的类型转换为左边变量的类型,然后赋值。,赋值运算符的优先级仅仅高于逗号运算符,具有自右向左的结合性。,应用举例,【例2.8】有语句,int a=2,b=5,x,y;,执行x=y=a+b;,后x,y的值。,a,b,x,y,2,5,7,7,【例2.9】有定义:,int a,b,c;,求执行表达式,a=(b=65)/(c=6);,后a的值。,a,b,c,65,6,10,复合赋值运算符,a =b,+,a=a+b,相当于,a=a-b,a-=b,a*=b,a=a*b,a/=b,a=a/b,a%=b,a=a%b,相当于,相当于,相当于,相当于,y*=a+b;,y=y*(a+b),相当于,【例2.10】有定义:,int a=6,b=8;求执行a*=b+=12后,a的值。,a,6,b,8,b+=12,b=b+12,20,a*=b,a=a*b,120,复合赋值运算符,【例2.11】有定义:“int a=12;”,执行表达式,a+=a-=a*=a后,a的值为()。,A12B144C0 D132,a*=a,a,12,a=a*a,144,a-=a,a=a-a,0,a+=a,a=a+a,0,65,2.5.2 算术运算符和算术表达式,算术运算符包括:,+(加),-(减),*(乘),/(除),%(取余),+(增1运算符或称自增运算符),-(减1运算符或称自减运算符)。,双目运算符的两个操作数类型可以不同,运算前遵循类型的一般算术转换规则自动转换成相同的类型,运算结果的类型与转换后操作数的类型相同。,类型的一般算术转换规则的基本原则是值域较窄的类型向较宽的类型转换。,算术运算符和算术表达式,算术运算符包括:,+,-,*,/,%,+,-,左操作数,右操作数,运算符,13+5,13.0+5,结果为整数18,结果为浮点数18.0,d 97,结果为整数3,1/2,结果为整数0,1.0/2,结果为浮点数0.5,5%10,结果为整数5,10%5,结果为整数0,1/2.0,1.0/2.0,自增、自减运算符,+,自增运算符,其作用是使变量的值自加1,-,自减运算符,其作用是使变量的值自减1,+i,-i,前缀运算:在使用i之前,先使i的值自增(或自减)1,i+,i-,后缀运算:在使用i之后,再使i的值自增(或自减)1,【例】有定义:,int i=8,j;,求执行 j=i+;后i,j的值,i,8,j,8,9,【例】有定义:,int i=8,j;,求执行 j=+i;后i,j的值,i,j,8,9,9,应用举例,【例2.12】假设变量i,j,k的值分别为3,5和3,求执行表达式“m=(+k)*j;”和“n=(i+)*j;”中的m和n的值。,i,j,k,m,n,3,5,3,4,20,15,4,应用举例,习题1、下列算术运算符中,只能用于整型数据的是()。,A-B+C/D%,习题2、,假设有以下变量定义:int k=7,x=12;,则能使值为3的表达式是(),Ax%=(k%=5)Bx%=(x-k%5),Cx%=k+k%5 D(k%=5)(x%=k),D,2,0,C,2,70,2.5.3 长度测试运算符sizeof,长度测试运算符sizeof可用来测试某个类型的变量所占用计算机内存空间的字节长度。,格式为,:sizeof(,类型名,),例:,main(),printf(char:%d bytesn,sizeof(char);,printf(short:%d bytesn,sizeof(short);,printf(int:%d bytesn,sizeof(int);,printf(long:%d bytesn,sizeof(long);,printf(float:%d bytesn,sizeof(float);,printf(double:%d bytesn,sizeof(double);,return 0;,71,2.5.4 关系运算符和关系表达式,1关系运算符,关系运算实际上就是比较运算,即比较两个运算对象值的大小。,符号,优先级,(大于),,=,(大于或等于),高,=,(等于),,!=,(不等于),低,注意:,(1)关系运算符为双目运算符,结合方向为自左至右。,(2)关系运算符的结果为真(1)或假(0),C语言中没有,逻辑值。,(3)算术运算符高于关系运算符。,72,2.关系表达式,由关系运算符、运算对象以及小括号组成的表达式称为关系表达式。,当表达式成立时,返回值为整型值1;当表达式不成立时,返回值为整型值0。,ca+b 等同于c(a+b),a=bc等同于a=(bc),ab!=c等同于(ab)!=c,【例2.14】请注意下列给出的表达式及其返回值。,65的返回值是0。,若a=3,b=5,则a=3+10的返回值是0。,若x=90,则x53;,printf(%dn,x);,0,【例2.16】已知a=3,b=2,c=1,则表达式ab=c的值为()。,1,对于关系表达式要注意如下事项:,一个关系式中含有多个关系表达式时,要注意与数学式的区别。,应避免对实数作相等或不等的判断,因为实数在内中存放时有一定的误差。,逻辑运算符与逻辑表达式,&|!,逻辑运算符:,用逻辑运算符将关系表达式连接起来就构成逻辑表达式。,逻辑表达式:,【例2.17】分析逻辑表达式!(53)&(23),!(,1,),0,逻辑表达式的运算结果:,1(“真”),0(“假”),a&b x|y !z,逻辑表达式,具有唯一真值的变量,2、,逻辑运算符与逻辑表达式,C语言逻辑表达式的特性:,在计算逻辑表达式时,只有在必需执行下一个表达式才能求解时,才求该表达式。,逻辑与(&)运算表达式中,只要前面一个表达式被判定为“假”,系统不再判定其后的表达式,整个表达式的值为0。,a+&b+,逻辑或(|)运算表达式中,只要前面一个表达式被判定为“真”,系统不再判定或求解其后的表达式,整个表达式的值为1。,a=0,b=0,a+|b+,a=1,b=1,【例2.19】定义:,int i=10,s=0;,执行下列语句,s=+s|+i;,后s和i的值是多少?,i,10,s,0,1,75,【例2.18】已知year为整型变量,不能使表达式(year%4=0&year%100!=0)|(year%400=0)的值为“真”的数据是()。,A1990B1992C1996D2000,A,【例2.19】定义:“int i=10,s=0;”,分别执行下列语句,s和i的值是多少?,s=+s|+i;,答案为:s=1,i=10,【例2.20】定义:“int x=0,y=0,z=0;”,分别执行下列语句后,各变量的值是多少?,+x&+y|+z,答案为:x=1,y=1,z=0,应用举例,已知A,B,C,D四人中有一个人是小偷,并且,这四个人中每个人要么说真话,要么说假话。在审讯过程中,这四个人分别回答如下:,A说:B没有偷,是D偷的。,B说:我没有偷,是C偷的。,C说:A没有偷,是B偷的。,D说:我没有偷。,现要求根据这四个人的回答,写出能确定谁是小偷的条件。,int a,b,c,d;,b+d=1,真,b+d=1,假,b+d=1,b+c,b+c,a+b,a+b,b+c=1,b+c=1,a+b+c+d,a+b+c+d,a+b+c+d=1,&,&,&,b+d,0,1,=1,b+d,1,0,=1,=1,=1,=1,=1,=1,=1,77,2.5.6 条件运算符与条件运算表达式,条件运算符“?:”是C语言提供的惟一一个三目运算符。,条件运算表达式的一般格式为:,表达式1?表达式2:表达式3,【例2.20】从键盘读入一个整数赋给x,如果x大于等于0,把x的平方赋给y,否则把x的2倍赋给y。,#include stdio.h,void main(),int x,y;,scanf(%d,y=x=0?x*x:2*x;,printf(y=%dn,y);,【例2.21】已定义“int x=4,b=5,y;”,执行语句:y=+xb?x:b-+x?+b:x后,x、b、y的值分别为_。,答案为x=6,b=4,y=6,【例2.24】分析下列程序的输出结果。,#include stdio.h,void main(),int i,j,k,a=3,b=2;,i=(-a=b+)?-a:+b;,j=a+;,k=+b;,printf(i=%d,j=%d,k=%dn,i,j,k);,i=1,j=1,k=4,【例2.25】请编制程序,任意输入两个整数,输出其中较小者。,main(),int n1,n2,min;,clrscr();,printf(input two number(n1,n2):);,scanf(%d,%d,min=(n1n2)?n2:n1;,printf(min=%d,min);,运行时
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服