c语言的设计与导引课件.ppt

上传人(卖家):三亚风情 文档编号:3514989 上传时间:2022-09-10 格式:PPT 页数:75 大小:268.02KB
下载 相关 举报
c语言的设计与导引课件.ppt_第1页
第1页 / 共75页
c语言的设计与导引课件.ppt_第2页
第2页 / 共75页
c语言的设计与导引课件.ppt_第3页
第3页 / 共75页
c语言的设计与导引课件.ppt_第4页
第4页 / 共75页
c语言的设计与导引课件.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

1、第七讲第七讲 C程序设计导引(程序设计导引(I)北京大学信息科学技术学院北京大学信息科学技术学院关于规矩关于规矩 做任何事情,都需要按照一定的规矩来,即所谓的“不依规不依规矩,不成方圆矩,不成方圆”。p自然语言自然语言:字、词、句子;主谓宾、定状补(语法);讲究搭配(语义);有段落、有结构;形成不同的文章,不同的人都能看懂p程序设计语言程序设计语言:有同样的规范要求,可以编制解决不同问题的程序,不同人能看懂,机器也能够执行程序设计语言程序设计语言n用高级语言书写的程序不可能直接在计算机上执行,需要将它转换成机器语言指令程序。n为什么能够转换?因为它有一定的规矩n在计算机上将高级语言书写的程序转

2、换成机器语言指令程序,有两种基本方法:n编译(Compilation)方式n解释(Interpretation)方式p 任何程序设计语言,都是由语言规语言规范范和一系列开发库开发库组成的。p C语言,是一种编译方式的语言,它同样包括语言规范,以及方便人们进行程序开发的函数库;MS Visual C+更是提供了庞大的APIs和MFC。p 学习任何程序设计语言,都是要从这两方面着手,尤其是要能够熟练地使用开发库。程序设计语言程序设计语言开发库p 程序结构p 基本元素:标识符和关键字p 变量、常量和数据类型p 运算符和表达式p 语句及控制流p C语言标准库函数语言规范语言规范开发库开发库C程序设计语

3、言程序设计语言p C语言程序基本框架语言程序基本框架p 标识符和关键字标识符和关键字p 数据类型、变量、常量数据类型、变量、常量p 运算符和表达式运算符和表达式p 标准库函数:输入与输出标准库函数:输入与输出p 程序示例程序示例主要内容主要内容/*求圆的面积求圆的面积*/#define PI 3.14159 /*预编译:宏定义预编译:宏定义*/#include /*预编译:文件包含预编译:文件包含*/#include float getArea(float r);/*自定义函数:求面积函数自定义函数:求面积函数*/*主函数主函数*/int main(int argc,char*argv)flo

4、at s1,s2;/*定义变量定义变量*/float r1,r2;/*计算第计算第1个圆的面积个圆的面积*/printf(“请输入第一个圆的半径:请输入第一个圆的半径:”);/*调用调用stdio.h中的函数中的函数printf(),将相关内容输出到屏幕中去,将相关内容输出到屏幕中去*/scanf(%f,&r1);/*调用调用stdio.h中的函数中的函数scanf(),从键盘中输入半径,从键盘中输入半径r1的值的值*/s1=3.14159f*r1*r1;/*求面积求面积*/printf(“n第一个半径为第一个半径为%f的圆的面积为:的圆的面积为:%fn”,r1,s1);/*调用函数调用函数p

5、rintf(),将计算的面积输出到平面中去,将计算的面积输出到平面中去*/*计算第计算第2个圆的面积个圆的面积*/r2=104.6f;/*半径为半径为104.6*/s2=getArea(r2);/*调用自定义函数求圆的面积调用自定义函数求圆的面积*/printf(n第二个半径为第二个半径为%f的圆的面积为:的圆的面积为:%fn,r2,s2);/*调用函数调用函数printf(),将计算的面积输出到平面中去,将计算的面积输出到平面中去*/*自定义函数:求半径为自定义函数:求半径为r的圆的面积的圆的面积*/float getArea(float r)float s;s=(float)(PI*pow

6、(r,2);/*利用所定义的宏利用所定义的宏PI替换替换3.14159,调用,调用math.h中的求幂函数中的求幂函数pow()*/return s;C程序基本框架程序基本框架/*主函数*/int main(int argc,char*argv)float s1,s2;/*定义变量*/float r1,r2;/*计算第1个圆的面积*/printf(请输入第一个圆的半径:);/*调用stdio.h中的函数printf(),将相关内容输出到屏幕中去*/scanf(%f,&r1);/*调用stdio.h中的函数scanf(),从键盘中输入半径r1的值*/s1=3.14159f*r1*r1;/*求面积

7、*/printf(n第一个半径为%f的圆的面积为:%fn,r1,s1);/*调用函数printf(),将计算的面积输出到平面中去*/*计算第2个圆的面积*/r2=104.6f;/*半径为104.6*/s2=getArea(r2);/*调用自定义函数求圆的面积*/printf(n第二个半径为%f的圆的面积为:%fn,r2,s2);/*调用函数printf(),将计算的面积输出到平面中去*/return 0;/*求圆的面积*/#define PI 3.14159 /*预编译:宏定义*/#include /*预编译:文件包含*/#include float getArea(float r);/*自定

8、义函数声明:求面积函数*/*主函数*/int main(int argc,char*argv)./*自定义函数定义:求半径为r的圆的面积*/float getArea(float r)float s;s=(float)(PI*pow(r,2);/*利用所定义的宏PI替换3.14159,调用math.h中的求幂函数pow()*/return s;nC语言是一种函数式语言函数式语言,它的一个函数实际上就是一个功能模块C程序的基本组成是函数。n一个C程序是由一个固定名称为main的主函数和若干个其他函数(可没有)组成。n一个C程序必须有一个、也只能有一个主函数。n主函数在程序中的位置可以任意,但程序

9、执行时总是从主函数开始,在主函数内结束。int main()1、C程序基本框架程序基本框架函数函数/主函数主函数nC语言程序是通过函数的调用函数的调用来完成复杂功能。n主函数可以调用其他各种函数(包括标准库函数和用户自己编写的函数),但其他函数不要调用主函数。其他函数相互之间遵循一定的规则是可以相互调用的。1、C程序基本框架程序基本框架函数函数/主函数主函数其他函数其他函数n标准库函数标准库函数:随C语言环境语言环境一起提供的各种标准的通用功能函数,只能调用(先文件包含:先文件包含:#include)。例:#include#include s=(float)(PI*pow(r,2);pow(x

10、,y)求xy (math.h,数学函数)scanf(%f,&r1);scanf(“%f”,)从键盘中输入数据(stdio.h,输入输出函数)printf(n第一个半径为%f的圆的面积为:%fn,r1,s1);printf(“%f”,)往屏幕中输出数据(stdio.h,输入输出函数)1、C程序基本框架程序基本框架函数函数/主函数主函数其他函数其他函数n自编(定义)函数自编(定义)函数:必须先定义(声明),后调用,必须先定义(声明),后调用,例:float getArea(float r);/函数声明 s2=getArea(r2);/函数调用float getArea(float r)/函数实现

11、float s;s=(float)(PI*pow(r,2);/*利用所定义的宏PI替换3.14159,调用 math.h中的求幂函数pow()*/return s;1、C程序基本框架程序基本框架函数函数/主函数主函数1、C程序基本框架程序基本框架函数函数/主函数主函数主函数main()标准库函数自定义函数自定义函数自定义函数函数的调用函数的调用函数的一般形式函数的一般形式返回值类型 函数名(参数列表)语句语句1、C程序基本框架程序基本框架函数函数/主函数主函数float getArea(float r)float s;s=(float)(PI*pow(r,2);/*调用math.h中的求幂函数

12、*/return s;n变量:变量:存放数据的容器(对应于内存空间),有不同的数据类型。n语句:语句:一个由分号(;)结尾的单一命令是一条语句(Statement),一条语句可以完成一条或若干条指令功能。为了完成不同的功能,C语言中有多种不同类型的语句(将在第(将在第8讲中讲述)讲中讲述),如:nfloat s,r;/变量定义语句nr=10;/变量赋值语句ns=3.1416*r*r;/执行乘法运算并赋值的语句n代码段:代码段:用大括号()围起来的多条语句构成一个代码段(Code block);有时代码段同时也包括大括号前的一些修饰性描述,如:nint i;nfor(i=0;i=1;i+)nn1

13、、C程序基本框架程序基本框架变量变量/语句语句/代码段代码段形式:形式:PI 符号常量(宏名,最好用大写,以区别一般变量)3.14159 宏体(可以是一个表达式)n作用:用简单符号代表宏体部份内容(编译时会先自动替换),可用作常量定义或其他作用n意义:直观/多次使用/便于修改n注意:注意:#define 可出现在程序的任一位置(作用范围:作用范围:由此行到程序末尾),宏定义不是C语句,不必在行未加分号,否则会连分号一起置换。1、C程序基本框架程序基本框架预编译处理预编译处理编译预处理编译预处理文件包含文件包含形式:形式:stdio.h “头文件”,标准库前导文件stdafx.h “头文件”,自

14、定义前导文件nC语言是一种“装配式”语言,许多常规的工作如输入、输出、数学函数等,往往事先由人做成各种“程序模块”(.lib),并将其定义存放在各种所谓“头文件”(.h)中。n文件包含的作用,就是根据需要把相应的某个“头文件”定义所涉及的“程序模块”在编译时先整体嵌入所编的程序中。n用户也可以将自己设计的程序模块等做成“程序模块”及“头文件”,供其他程序“包含”(调用)。1、C程序基本框架程序基本框架预编译处理预编译处理使用使用“文件包含文件包含”功能的优点功能的优点n支持程序模块的共享n提高程序设计效率和程序可靠性n减少程序员重复劳动量 C提供了三百多个标准库函数,由若干个头文件头文件(包含

15、函数定义声明、数据类型定义、宏定义等的文件)进行说明(第第8讲中介绍讲中介绍):nstdio.h 标准输入/输出函数nmath.h 数学函数nstdlib.h 常用函数n 一个优秀的程序员不应是事无巨细都要从头做起的“工匠”,而应是一个“策划师”+“组装师”。所以,逐步熟悉并掌握常用函数等现有功能模块,是学习C程序设计的一个重要内容。1、C程序基本框架程序基本框架预编译处理预编译处理/stdio.h/宏定义#define EOF (-1)#define NULL 0/数据类型定义typedef struct fpos_t unsigned int lopart;int hipart;fpos_

16、t;/函数定义_CRTIMP int _cdecl scanf(const char*,.);_CRTIMP int _cdecl printf(const char*,.);_CRTIMP int _cdecl getchar(void);_CRTIMP int _cdecl putchar(int);1、C程序基本框架程序基本框架预编译处理预编译处理stdio.h中的部分内容中的部分内容n注释注释:为了增加程序的可读性而附加的说明性文字,它们在编译时会被忽略。n/单行注释,简单的解释语句含义.n/*单行注释,简单的解释语句含义.*/n/*多行注释,用来说明更多的内容,包括算法等.nn*/n

17、/*C文档注释n *这是一个生成帮助文档的函数n *它的输入参数是一个C源程序n */1、C程序基本框架程序基本框架注释注释n一个C程序是由一个固定名称为main的主函数和若干个自定义函数(可缺省)组成。编译预处理(宏、头文件)自定义函数声明int main()说明部分 /*变量定义等*/执行部分 /*输入/输出/计算*/自定义函数1、C程序基本框架程序基本框架总结总结C语言是一种函数式语言,其程序基本组成是函数。每个C程序必须有一个、也只能有一个主函数main()。不管主函数在程序中的位置如何,程序执行总是从主函数开始,在主函数内结束。C程序的复杂功能是通过函数调用函数调用来完成的。所有变量

18、、函数变量、函数必须先定义后使用先定义后使用,并且有一定的作用范围作用范围。调用标准库函数或其他人编制的现成函数时,必须使用“文件包含”。(这是遵循“先定义后使用”的原则)每条语句必须用分号用分号“;”结束结束。编译预处理命令(宏定义、文件包含)不是语句,行末不能用分号结束。C语言本身没有输入/输出语句,其功能须通过调用相关函数来实现。1、C程序基本框架程序基本框架总结总结n标识符(标识符(Identifier)程序员对程序中的各基本元素加以命名时使用的命名记号命名记号,包括:数据类型名、变量名、常量名、数据类型名、变量名、常量名、函数名、宏名称、函数名、宏名称、2、标识符和关键字、标识符和关

19、键字n标识符的组成规则标识符的组成规则 C语言中,标识符是以字母,下划线字母,下划线(_)开始开始的一个字符序列,后面可以跟字母,下划线,数字字母,下划线,数字。n合法的标识符合法的标识符identifier userName User_Name define sys_ value _Name name1n非法的标识符非法的标识符2mailroom#a%bc !abc2、标识符和关键字、标识符和关键字n关键字关键字(Key words):具有专门的意义和用途,不能当作一般的标识符使用。C语言中的关键字有:int、char、float、double、short、long、unsigned、str

20、uct、union、enum、auto、extern、register、static、typedef、goto、return、sizeof、break、continue、if、else、do、while、for、switch、case、default、void、entry、include、define、undef、ifdef、ifndef、endif、line 在在C+C+中,还会有一些新的关键字。不同语言的关键字不完中,还会有一些新的关键字。不同语言的关键字不完全相同,但基本相似。全相同,但基本相似。2、标识符和关键字、标识符和关键字关键字基本分类关键字基本分类n基本数据和返回值类型:int

21、,void,returnn构造数据类型定义:typedef,struct,union,n控制流:if,else,switch,case,for,break,goto,n编译预处理:include,define,undef,n变量长度:sizeof2、标识符和关键字、标识符和关键字n在C语言中,标识符是区分大小写的。name和Name是不同的标识符。n所有的关键字都是小写字母构成的。n不必死记这些关键字,当理解每个关键词的含义后,自然就记住了所有的关键词。2、标识符和关键字、标识符和关键字3、数据类型、变量和常量、数据类型、变量和常量q 数据类型(Data Type)n 基本数据类型(Prima

22、ry Data Types)n 构造数据类型(Composite Data Types)q 常量(Constant)q 变量(Variable)p 基本数据类型(Primary Data Types)p 构造数据类型(Composite Data Types)3、数据类型、变量和常量、数据类型、变量和常量数据类型数据类型 C语言中支持的基本数据类型包括:3、数据类型、变量和常量、数据类型、变量和常量基本数据类型基本数据类型一个数据类型所占的具体字节数,可以通过sizeofsizeof运算符来确定。数据类型说明数据类型标识符所占位数其他字符类型char8位(1字节)还可以用unsigned来限定

23、char类型和所有整数类型。unsigned限定的数总是正数或零。整数类型int与机器相关,现在通常为32位(4字节)短整数类型shortint的一半长整数类型longint的2倍,但现在与int一样,为32位 单精度浮点类型float32位(4字节)双精度浮点类型double64位(8字节)无类型void函数无返回值3、数据类型、变量和常量、数据类型、变量和常量基本数据类型基本数据类型 字符的存储通常用其二进制编码(如ASCII码/8位、汉字内码/16位)来表示,所以字符数据类型char只占8位,它可以表示一个ASCII字符,对于汉字字符,则需要将2个char数据当作一个整体。对于字符的显示

24、,则需要操作系统的协助才能完成。n printf(“北京大学 Peking University”);n char a=a;/a=97,a的ASCII码n printf(“%c”,a);n一个构造数据类型是由一个或多个基本数据类型组合而成的。nC语言中的构造数据类型包括:n数组n结构n指针n链表nn相关内容,将在后面的讲义后面的讲义中介绍。3、数据类型、变量和常量、数据类型、变量和常量构造数据类型构造数据类型3、数据类型、变量和常量、数据类型、变量和常量 数据是计算机程序处理的主要对象,在程序中数据是以常量常量和变量变量的形式出现。常量和变量的区别仅在于程序执行过程中变量的值是可以改变的,而常

25、量的值不能改变。C中的常量值是用文字串文字串表示的,它区分为不同的类型:p整型(int)常量:123,-123p长整型(long)常量:123l,-123Lp单精度(float)浮点常量:1.23f,-1.23e12fp双精度(double)浮点常量:1.23,-1.23e12p字符(char)常量:用单引号对单引号对括起来的一个字符,如ap字符串常量:用双引号对双引号对括起来的一个字符序列,如 This is a constant string.。在C中,除了直接写出常量的值之外,还可以 通 过预编译命令“#define”把 一 个 标 识 符 定 义 为 常 量,其定义格式为:#defin

26、e PI 3.141593、数据类型、变量和常量、数据类型、变量和常量常量常量n和数学中的变量有所不同,程序中的变量代表内存中某个“存储单元”或某块内存区域(若干个连续的存储单元),可以用来保存数据,通常用一个名字来标识。显然,存储单元或内存区域所存储的数据在程序执行过程中是可能变化的。n在程序中,有三种情况涉及到变量:n变量的定义:变量的定义:根据给定的数据类型,在内存中分配一个连续的内存区域,并用一个标识符来对它命名,这个标识符就是变量名n变量的赋值:变量的赋值:把数值存放到某个变量所指示的内存区域n变量的引用:变量的引用:使用某个变量中存储的数据3、数据类型、变量和常量、数据类型、变量和

27、常量变量变量n变量的定义就是在程序中声明将要使用一块内存区域保存数据。这块区域的大小是由变量所属的数据类型决定的。变量的定义包括变量数据类型、变量的名字、变量的初始化几个部分,其形式为:nDataType varName,varName;nchar a;nint n;nint x,y,z;n变量的名字必须是一个合法的标识符,每个变量的名字作为它的唯一标识。变量名所对应的就是内存区域的地址。变量名所对应的就是内存区域的地址。3、数据类型、变量和常量、数据类型、变量和常量变量定义变量定义3、数据类型、变量和常量、数据类型、变量和常量变量变量xlenmaxnumber内存区域a存储单元/变量变量ch

28、ar a;/字符short x;/短整数int len:/整数long max;/长整数float number;/单精度浮点数变量与内存空间;变量的值与地址变量与内存空间;变量的值与地址a的地址:0000 (0)x的地址:0001(1)len的地址:0011(3)max的地址:0111(7)number的地址:1011(11)n变量定义后,其初值初值是不确定的(内存区域里可能是有内容的)。n在程序执行过程中,变量的值(内存区域中的内容)是可以变化的。n给变量指定一个数值的过程称为变量的赋值赋值,这个过程可以通过赋值语句赋值语句完成:n n=26;n x=19;n也可以在变量定义时对变量进行初

29、始化:nchar a=a;nint n=5;nint x,y=4,z;nfloat score=95.5;3、数据类型、变量和常量、数据类型、变量和常量变量赋值变量赋值n 变量里存储的数据可以用来参与运算,这一过程称为变量的引用。但在引用变量前,一定要先对变量进行赋值,例如:int totalFee=0;/变量赋值 int tuitionFee=5000;/变量赋值 int travelExpense=300;/变量赋值 int livingExpense=1000;/变量赋值 int others=1000;/变量赋值 /变量引用 totalFee =tuitionFee+travelExp

30、ense+livingExpense+others;3、数据类型、变量和常量、数据类型、变量和常量变量引用变量引用p 整型变量定义示例:nshort s=10;nint num1,num2;nint x=123,y;nlong len1,len2=3L;必须在数字后加l或Lnlong y=123L;必须在数字后加l或Lnlong z=123l;必须在数字后加l或L3、数据类型、变量和常量、数据类型、变量和常量整型变量整型变量(short/int/long/longlong)整型变量的数值范围整型变量的数值范围n字符型变量代表8位的字符,通常是ASCII字符。对于一个汉字字符,需要2个字节编码,

31、不能简单地用一个字符变量来表示,需要使用数组。n字符型变量定义示例:nchar c1;无初值nchar c2=0;赋初值为字符0nchar c3=100;用整数赋初值,是字符的ASCII码,此处为d3、数据类型、变量和常量、数据类型、变量和常量字符类型变量字符类型变量(char)n一些特殊字符的常量表示法:n反斜线反斜线(Backslash)n退格(Backspace)bn回车(Carriage return)rn进纸符(Form feed)fn制表符(Form feed)tn换行换行(New line)nn单引号单引号(Single quote)3、数据类型、变量和常量、数据类型、变量和常量

32、字符类型变量字符类型变量(char)字符型数据的运算 一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。注意:一个字符数据既可以以字符形式输出,也可以以整数形式输出。例2.5向字符变量赋以整数。#include void main()char c1,c2;c1=97;c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);在第和第4行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:c1;c2;因为a和b的ASCII

33、码为97和98 运行结果:运行结果:97 9897 98例2.6大小写字母的转换#include void main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“c c”,c1,c2);程序的作用是将两个小写字母a和b转换成大写字母A和B。从代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。语言允许字符数据与整数直接进行算术运算。运行结果:运行结果:3、数据类型、变量和常量、数据类型、变量和常量浮点数浮点数(实型实型)变量变量(float/double)n浮点数变量定义示例:nfloat len;nfloat len1=1

34、27.0f;必须在数字后加f或Fnfloat len2=4.0e38F;错误!32位浮点数不能超过 3.4028234663852886e38(数值常量的科学计数法:1.0 x108,1.0e8 或 1.0E8)ndouble score1;ndouble score2=127.0;赋初值为127浮点数常量的表示形式两种表两种表示形式示形式小数小数指数指数0.1230.1233 3e-3e-3注意注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数 在字母e(或E)之前的小数部分中,小数点左边是零,后面第一位非零的数字.例如例如:123.456可以表示为:123.456e0,12.34

35、56e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e5 其中的0.123456e3是“标准化的指数形式”。标准化的指数形式:浮点型变量分类 浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类形式。浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。实型数据的舍入误差#include void main(

36、)float a,b;a=123456.789e5;b=a+20;printf(“%fn”,b);一个实型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数运行结果:运行结果:123456.789e5123456.789e53、数据类型、变量和常量、数据类型、变量和常量变量的使用变量的使用1 int main()2 int USDollar=0;3 int RMB=0;4 USDollar=20;5 RMB=USDollar*8;6 return 0;7 主存储器USDollar0主存储器U

37、SDollar0RMB0主存储器USDollar20RMB0主存储器USDollar20RMB160运行变量赋值语句运行变量赋值语句对内存数据的改变对内存数据的改变#define PI 3.14159int main(int argc,char*argv )char c;int x,y;float r=1.234f;double len,s;c=A;x=12;y=x+300;len=2*PI*r;s =PI*r*r;.return 0;3、数据类型、变量和常量、数据类型、变量和常量变量的使用变量的使用 表达式(表达式(Expression)是由操作数(常量和变量)和运算符按一定的语法形式组成的

38、符号序列(与我们在高中时学过的表达式相类似),主要用于表示对数据进行的处理。n表达式的计算结果称为表达式的值。n一个常量或一个变量名字是最简单的表达式,其值即该常量或变量的值;n表达式的值还可以用作其他运算的操作数,形成更复杂的表达式。4、运算符与表达式、运算符与表达式 运算符(运算符(Operator)规定了对操作数的处理规则,C语言中的运算符有:n算术运算符:(负号),+,*,/,%(取余数),+,n关系运算符:,=,(在结构数据类型及指针中用到在结构数据类型及指针中用到)n下标运算符 index (在数组中用到在数组中用到)n数据长度运算符 sizeof (以字节为单位以字节为单位)in

39、t a;sizeof(int);sizeof(a);n分隔符 ,(函数参数分隔,变量定义等函数参数分隔,变量定义等)int a,b,c;int max(int a,int b,int c);n强制类型转换运算符 (DataType)int year=(int)ceil(x/2);n函数调用运算符 ()nscanf(“%d”,&a);n 4、运算符与表达式、运算符与表达式4、运算符与表达式、运算符与表达式 根据运算符的不同,表达式也有不同的类型:n算术表达式(算术运算)n关系表达式(主要用于条件判断)n逻辑表达式(主要用于条件判断)n位运算表达式(二进制逻辑运算)n赋值表达式(与存储访问相关)n

40、条件表达式(用于条件判断)在一个复杂的表达式中,往往包含有其他类型的表达式。4、运算符与表达式、运算符与表达式算术表达式算术表达式 使用算术运算符和括号将操作数连接起来的表达式称为算术表达式:p (负号),+(加法),(减法),*(乘法),/(除法),%(取余数,只对整型数据有效),如:-3+a-b*5,(x+y)/z+(3*r/5),a%bp+(自加)、(自减):只适合于变量,不适合于常量或表达式,例如:5+或(a+b)-都是不正确的。这两个运算符可用在变量之前或变量之后,如i+和+i。对变量来说,这二种情况的效果都是一样的,都是使变量i加1。但在表达式中,则它们的含义不同,如:n j=+i

41、;表示先将i的值加1,再赋给j,如果i的值是5,则j的值是6。(先给变量加1,再使用变量)n j=i+;表示先将i的值赋给j,再把i的值加1,如果i的值是5,则j的值是5。(先使用变量,再给变量加1)4、运算符与表达式、运算符与表达式关系表达式关系表达式 使用关系运算符和括号将操作数连接起来的表达式称为关系表达式:p (大于),=(大于等于),y,(x+1)=4,(-3+a-b*5)1)&(x=20)p|(逻辑或):当2个操作数有一个为非0或真时,结果为1(真),否则结果为0(假),如:(x 20)p !(逻辑非):将一个非0或为真的操作数变为0,或将0或为假的操作数变为1,如:!(xy)逻辑

42、运算&和|连接的表达式是自左向右求值的,一旦知道结果的真、假值,求值马上停止:p(a+1c)&(b+11),若(a+1c)为0,则表达式的值为0p(a+1c)|(b+11),若(a+1c)为1,则表达式的值为14、运算符与表达式、运算符与表达式位运算表达式位运算表达式 使用位运算符和括号将操作数连接起来的表达式称为位运算表达式:p&(按位与),|(按位或),(按位异或),!(按位非):二进制位逻辑运算p (右位移),将左侧操作数的二进制数值向右移动若干位(由右侧的操作数给出),移出去的位丢弃,空出的位用符号位(对有符号数)或0(对无符号数)来填补。4、运算符与表达式、运算符与表达式位运算表达式

43、位运算表达式 位运算符的操作数必须是整型数据。在C中,整型数据分有符号整数和无符号整数,是用一定长度的二进制位来表示。以32位整数为例来说明位移动运算:有符号数:有符号数:有符号整数做位移运算时,符号位是不参与移动的。左移时,空出的位用0填补;右移时,空出的位用符号位填补。(机器内数据的补码表示)无符号数无符号数:没有符号位,不管左移或右移,空出的位用0填补。位移运算的实质(在不发生溢出时):位移运算的实质(在不发生溢出时):左移:xn,相当于 x/2n1 1 1 1 1 x x 11 1 1 011 0 10 1 1 0 1 1 0 10 0 0 1 1 x x 1右移右移2位位4、运算符与

44、表达式、运算符与表达式赋值表达式赋值表达式 “”是C语言中基本的赋值运算符,基本的赋值表达式形式为:“变量 表达式”,它将表达式的值赋给变量。如:x=y+1,a=b=c=1 C语言中除了基本的赋值运算符外,还有一系列复合赋值运算符:+=,=,*=,/=,%=,=,y)?x:y运算符的优先次序:运算符的优先次序:一个复杂的表达式值,往往要涉及不同的运算符,在表达式求值时,其计算次序是要符合一定的规则的,即不同运算符的先后次序是不同的。(不用死记,不用死记,复杂表达式中多用复杂表达式中多用“()”运算符运算符)1).,()9)2)+,-,!,-,(DataType),sizeof 10)|3)*,

45、/,%11)&4)+,-12)|5),=,=14)=,+=,-=,*=,/=,7)=,!=%=,=,&=,|=8)&=,4、运算符与表达式、运算符与表达式运算符的优先次序运算符的优先次序4、运算符与表达式、运算符与表达式表达式计算中的数据类型转换表达式计算中的数据类型转换 在表达式中,整型、实型、字符型数据可以混合运算。运算中,不同类型的数据需要先强制转化为同一类型(利用强制类型转换运算符),然后进行运算。但是,在把容量大的类型转换为容量小的类型时必须注意:n 转换过程中可能导致溢出或损失精度n double a=4.0e40;n int b=(int)a;/ba(为什么?)(为什么?)n 浮

46、点数到整数的转换是通过舍弃小数得到,而不是四舍五入n(int)23.7 =23(int)-45.89f =-45p 注意:2个整数相除,得到的结果仍为整数n 3/2的值为1,1/2的值为04、运算符与表达式、运算符与表达式求表达式的值求表达式的值!(-6/5/(3-8%4)*3%2/1)=0)(1=01=1)|(1+2*3/4%5=2)&(1+2=4)4、运算符与表达式、运算符与表达式用表达式表示用表达式表示给定年份变量给定年份变量x,用一个条件表达式表示闰年,即:,用一个条件表达式表示闰年,即:若表达式的值为真,则若表达式的值为真,则x为闰年,否则为闰年,否则x为非闰年。为非闰年。5、标准库

47、函数、标准库函数输入与输出输入与输出p 输入函数:scanf(),从键盘获取数据 int n;scanf(“%d”,&n);/输入整型数据 long k;scanf(“%ld”,&k);/输入长整型数据 float len;scanf(“%f”,&len);/输入单精度浮点数据double width;scanf(“%lf”,&width);/输入双精度浮点数据char sex;scanf(“%c”,&sex);/输入一个字符 “”“”括起来部分是格式说明,指示要从键盘输入数据的类型,逗号括起来部分是格式说明,指示要从键盘输入数据的类型,逗号后面则是存放所输入数据的变量。后面则是存放所输入数据

48、的变量。注意变量符号注意变量符号“&”!5、标准库函数、标准库函数输入与输出输入与输出p 输出函数:printf(),在屏幕上输出数据 int n=10;printf(“%d”,n);/输出整型数据 long k=10L;printf(“%ld”,k);/输出长整型数据 float len=3.14f;printf(“%f”,len);/输出单精度浮点数据double width=3.14;printf(“The width of table is%lf n”,width);/输出双精度浮点数据char sex=M;printf(“%c”,sex);/输出一个字符 “”“”括起来部分是格式说明

49、,指示要往屏幕输出数据的类型。如果需要输出一括起来部分是格式说明,指示要往屏幕输出数据的类型。如果需要输出一些字符常量,则直接添加在些字符常量,则直接添加在“”“”内即可。逗号后面则是存放所要输出数据的变量。内即可。逗号后面则是存放所要输出数据的变量。6、程序示例、程序示例p 输入输出示例:iotest.cp 求面积:area.c总结总结p 程序设计语言的组成p C程序基本框架:预编译处理、函数、语句、注释p C语言基本规范:n 标识符、关键字n 数据类型、变量、常量n 运算符、表达式p 标准库函数:输入与输出上机作业上机作业n编程网格n上机时间做完。上机时交练习和作业权值为1,3天内0.8,7天内0.6,14天内0.3,其他情况为0。n答疑时间:n期中考试时间:初定11月16日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(c语言的设计与导引课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|