《最基础的C语言教程.pptx》由会员分享,可在线阅读,更多相关《最基础的C语言教程.pptx(202页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023/2/221第一章 C语言概述主要内容:C语言的发展C语言的特点简单C程序介绍算法结构化程序设计C程序的执行过程第1页/共202页2023/2/222C C语言出现的历史背景语言出现的历史背景(1 1)C C语语言言的的发发展展源源于于人人们们希希望望用用高高级级语语言言编编写写操操作作系系统。统。ALGOL60 ALGOL60(高级语言)高级语言)60 60 -CPLCPL(剑剑桥桥大大学学推推出出 接接近近硬硬件件 规规模模大大 难难实实现现)6363 -BCPL BCPL(剑剑桥桥大大学学 简简化化CPLCPL)6767 -B-B 语语言言 (贝贝尔尔实实验验室室用用B B写写了
2、了UNIXUNIX操操作作系系统统)7070 -C-C 语语言言 (用用C C改改写写了了UNIX UNIX 90%90%,即即第第5 5版版)72727373 -标标 准准 C C(K&R K&R The The C C Programming Programming languagelanguage)7878 -ANSI C 83 -ANSI C 83 (ANSI ANSI 美国国家标准化协会)美国国家标准化协会)-87 ANSI C -87 ANSI C -ISO C 90 -ISO C 90 (ISOISO国际标准化组织)国际标准化组织)版版本本:Microsoft Microsoft
3、 C C、Turbo Turbo C C、Borland Borland C C、Quick Quick C C(2 2)C C语语言言既既具具有有高高级级语语言言特特性性,又又具具有有低低级级语语言言特特性性-中级语言。中级语言。1.1C语言的发展 第2页/共202页2023/2/2231.21.2 C C语言的特点语言的特点 语言简洁,表达能力强,易于理解语言简洁,表达能力强,易于理解只有32个关键字,9种控制语句32个关键字:(由系统定义,不能重作其它定义由系统定义,不能重作其它定义)auto break case char constcontinue default do double
4、 elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while第3页/共202页2023/2/2249种控制语句:if()elsefor()while()dowhile()continuebreakswitchgotoreturn第4页/共202页2023/2/225 运算符丰富运算符丰富3434种运算符,运算能力强、效率高。种运算符,运算能力强、效率高。算术运算符:算术运算符:+
5、-*/%+-+-*/%+-关系运算符:关系运算符:=!=!=逻辑运算符:!逻辑运算符:!&|&|位运算符位运算符 :|&|&赋值运算符:赋值运算符:=及其扩展及其扩展条件运算符:条件运算符:?:?:逗号运算符:逗号运算符:,指针运算符:指针运算符:*&*&求字节数求字节数 :sizeofsizeof强制类型转换:强制类型转换:(类型)类型)分量运算符:分量运算符:.-.-下标运算符:下标运算符:其它其它 :()-()-第5页/共202页2023/2/226数据类型丰富数据类型丰富C数据类型基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整 型
6、浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union第6页/共202页2023/2/227 具有结构化的控制语句具有结构化的控制语句 程序书写格式自由程序书写格式自由 能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作 语言生成的代码质量高,程序执行效率高语言生成的代码质量高,程序执行效率高 可移植性好可移植性好第7页/共202页2023/2/228例1.1编写程序,在屏幕上打印字符串“This is a C program.n”。main()pr
7、intf(This is a C program.n);1.3简单C程序介绍第8页/共202页2023/2/229例1.2 /*求两数之和*/main()int a,b,sum;/*定义变量定义变量*/a=123;b=456;sum=a+b;printf(“Sum is%dn”,sum);Sum is 579 第9页/共202页2023/2/2210例1.3 求两数之最大值 main()int a,b,c;scanf(”%d,%d”,&a,&b);c=max(a,b);/*调用自定义函数max*/printf(“max=%dn”,c);int max(int x,int y)/*自定义函数*/
8、int z;if(xy)z=x;else z=y;return(z);第10页/共202页2023/2/2211C程序结构 C C程序程序 由由函数构成构成 必须有,且只能有一个必须有,且只能有一个main(主函数)主函数)总是从总是从mainmain函数开始执行函数开始执行 函数函数 由由函数首部和和函数体组成组成 函数首部指定函数首部指定函数名、函数参数、类型 函数体从函数体从 开始,到开始,到 结束结束 函数内有函数内有语句第11页/共202页2023/2/2212C程序结构(续)语句语句 包括包括说明性语句、可执行语句 以以 ;表示语句结束表示语句结束 注释注释 可以出现在程序的任何位
9、置可以出现在程序的任何位置 用用 /*和和 */括起来,必须成对出现括起来,必须成对出现 书写格式书写格式 C C语言没有行的概念,书写格式自由。语言没有行的概念,书写格式自由。习惯小写字母,缩进格式。习惯小写字母,缩进格式。第12页/共202页2023/2/22131.4 程序的灵魂算法程序包括两方面内容:1.对数据的描述。数据元素及各元素之间的数据元素及各元素之间的关系,即数据结构关系,即数据结构。2.对操作的描述。即操作步骤,也就是算法。即操作步骤,也就是算法。程序=数据结构 +算法程序=数据结构 +算法 +程序设计方法+语言工具环境说明:高级语言的数据结构是以数据类型来体现的。第13页
10、/共202页2023/2/22141.4.1 1.4.1 算法什么是算法为解决某一应用问题而采用的解题步骤算法的描述方式 用自然语言描述算法 用流程图描述算法 用N-S结构图描述算法用计算机语言表示算法(即实现算法)例如:输出两个数中的最大数 第14页/共202页2023/2/2215用自然语言描述算法用自然语言描述算法第一步:输入x和y的值第二步:比较x和y的值,如果x大于y,则输出x的值,否则输出y的值。例如当描述“输出10个数中最大数”的算法时,会冗长、难于理解第15页/共202页2023/2/2216图1.5 用流程图描述算法用流程图描述算法用流程图描述算法NYz=yz=xx y?开始
11、输入x和y结束输出z起止框起止框输入输入/输出框输出框判断框判断框处理框处理框流程线流程线第16页/共202页2023/2/2217用用N-S结构图描述算法结构图描述算法输入x、y的值xy T F z=x z=y输出z的值图1.7 用N-S结构图描述的算法第17页/共202页2023/2/2218第一章第一章 1.1 1.1 引言引言算法的特性算法的特性(1 1)有穷性。(2 2)确定性。(3 3)有效性。(4 4)输入。(5 5)输出。第18页/共202页2023/2/22191.4.21.4.2结构化程序设计程序的三种基本结构顺序结构程序:按照书写顺序依次执行语句选择结构程序:按照条件判断
12、选择执行语句循环结构程序:通过条件控制循环执行语句三种基本结构的共同点:三种基本结构的共同点:三种基本结构的共同点:三种基本结构的共同点:都是只有一个入口和一个出口;都是只有一个入口和一个出口;都是只有一个入口和一个出口;都是只有一个入口和一个出口;结构内的每一个框都有机会被执行;结构内的每一个框都有机会被执行;结构内的每一个框都有机会被执行;结构内的每一个框都有机会被执行;结构内没有死循环。结构内没有死循环。结构内没有死循环。结构内没有死循环。第19页/共202页2023/2/2220结构化程序设计的三种基本结构:1)顺序结构 传统流程图 N-S流程图 ABA AB B开始结束其中:A、B为
13、操作框,可由一条或多条语句实现。第20页/共202页2023/2/22212)选择结构(分支结构)传统流程图 N-S流程图 入口 出口ABP P P A AB BT FT F其中:P为分支判断条件;A、B必有一个且只有一个被执行;A、B之一可是空操作,用 表示。第21页/共202页2023/2/2222 3)循环结构当型循环先判断后循环,有可能一次也不循环。入口 F T PA当P为真 A出口其中:P为循环判断条件;A为要重复执行的操作,称为循环体;第22页/共202页2023/2/2223 直到型循环先循环后判断,至少循环一次。入口 F T PA A直到P为真 出口其中:P为循环判断条件;A为
14、要重复执行的操作,称为循环体;第23页/共202页2023/2/2224算法举例例:计算5!(12345)1 1t t1 1i i当当当当i5i5 ti tit t i+1 i+1i i输出输出输出输出 t t1 1t t1 1i i titit t i+1 i+1i i直到直到直到直到 i5i5输出输出输出输出 t t当型循环 直到型循环 第24页/共202页2023/2/2225结构化程序设计的基本原则:结构化程序设计的基本原则:采用自顶向下、逐步细化的方法进行设计;采用模块化原则和方法进行设计。即将大型任务从上向下划分为多个功能模块,每个模块又可以划分为若干子模块,然后分别进行模块程序的
15、编写;每个模块都是用结构化程序实现,即都只能由三种基本结构组成,并通过计算机语言的结构化语句实现。第25页/共202页2023/2/22261.51.5 C C语言的上机操作步骤语言的上机操作步骤 一一.上机过程:上机过程:编译编译正确正确正确有错误有错误编辑编辑运行运行第26页/共202页2023/2/2227C程序的执行过程程序的执行过程 1源程序文件的建立和编辑 编写源程序,形成.C文件需用编辑工具:tc.exe、记事本2编译 编译源程序,形成目标程序 .Obj文件需用编译工具:tcc.exe3连接 连接OBJ文件和调用的库函数,形成运行程序.exe 文件需用连接工具:tlink.exe
16、4运行.exeexe 文件第27页/共202页2023/2/2228装载装载c程序程序编辑编辑c程序程序运行运行c程序程序(ctrl+F9)正确正确?看结果看结果(alt+F5)运行下一程序运行下一程序?是是是是否否退出退出否否2.上机过上机过程流程图程流程图:第28页/共202页2023/2/2229F3F3(打开源程序)F2F2(保存当前源程序)F9F9(编译当前源程序)CTRL+F9CTRL+F9(运行当前源程序)ALT+F5ALT+F5(查看运行结果)3.编写、编写、运行运行C C程序程序时常用功时常用功能键能键第29页/共202页2023/2/2230三、需要记住的三、需要记住的TC
17、TC中一些常用功能键中一些常用功能键F1:F1:帮助。帮助。F2F2:将当前文件存盘。将当前文件存盘。F3F3:装载原有文件或给新文件命名。装载原有文件或给新文件命名。F4F4:程序运行到光标所在行。程序运行到光标所在行。F5F5:放大或缩小活动窗口切换。放大或缩小活动窗口切换。F6F6:开或关活动窗口切换。开或关活动窗口切换。F7F7:单步运行程序,跟踪进入函数内部运行。单步运行程序,跟踪进入函数内部运行。F8F8:单步运行程序,不跟踪进入函数内部。单步运行程序,不跟踪进入函数内部。第一章第一章 1.3 1.3 C C语言集成开发环境语言集成开发环境第30页/共202页2023/2/2231
18、实验报告实验一实验目的实验内容和步骤1.设计算法,写出程序2.在TurboC下编辑,得到源程序(.c)3.编译,得到目标文件(.obj)4.连接,得到可执行文件(.exe)5.分析结果实验体会第31页/共202页C程序设计数据类型、运算符与表达式第32页/共202页2023/2/22332.1 2.1 数据类型数据类型2.2 2.2 常量与变量常量与变量2.3 2.3 整型数据整型数据2.4 2.4 实型数据实型数据2.5 2.5 字符型数据字符型数据2.6 2.6 变量赋初值变量赋初值2.7 2.7 混合运算混合运算2.8 2.8 运算符与表达式运算符与表达式 数据类型、运算符与表达式数据类
19、型、运算符与表达式 CHAPTER 2第33页/共202页2023/2/2234数据类型、运算符与表达式数据类型、运算符与表达式 的数的数据类型据类型vC语言提供的数据结构是以数据类型形式出现的v数据在内存中存放的情况有数据类型决定v 数据的操作要依靠运算符实现,而数据和运算符共同组成了表达式。第34页/共202页2023/2/2235数据类型、运算符与表达式数据类型、运算符与表达式 的数的数据类型据类型数组类型数据类型构造类型空类型指针类型双精度单精度实型(浮点型)字符型枚举类型基本类型整型结构体类型共用体类型第35页/共202页2023/2/22363.2常量与变量常量与变量 3.2.1常
20、量和符号常量常量和符号常量1.1.常量常量:在运行过程中,其值不能被改变的量称为常量。在运行过程中,其值不能被改变的量称为常量。分类:整型分类:整型实型实型字符字符字符串字符串2.2.符号常量符号常量,用一个标识符代表的常量。,用一个标识符代表的常量。习惯上,符号常量名用大写,变量用小写,以示区别。习惯上,符号常量名用大写,变量用小写,以示区别。u1,0,123为整型常量为整型常量u 4.6,1.23为实型常量为实型常量u a,d 为字符常量为字符常量u#define PRICE 255 A=PRICE*A+6 C=PRICE+C/120PRICE是标识符,符号常量是标识符,符号常量第36页/
21、共202页2023/2/22373.2.2 变变 量量1.1.变量变量:在程序运行过程中,其值可以改变的量称为变量。:在程序运行过程中,其值可以改变的量称为变量。2.2.标识符标识符:用来标识变量名、符号常量名、函数名、类型名、数组名、文件名的:用来标识变量名、符号常量名、函数名、类型名、数组名、文件名的有效字符序列称为标识符。有效字符序列称为标识符。由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。u合法的变量名如:合法的变量名如:average,abd,a,s2,student_name,_initu不合法的
22、变量名:不合法的变量名:M.D.John,1a,#33,ab3.C 3.C 语言要求对变量语言要求对变量“先定义,后使用先定义,后使用”。第37页/共202页2023/2/22383.3 整型数据整型数据 3.3.1 整型常量整型常量由一系列数字组成。也可带有减号,但不使用加号。由一系列数字组成。也可带有减号,但不使用加号。u十进制整数:十进制整数:123,-456,0u八进制整数:以八进制整数:以0 0开头的数据,如:开头的数据,如:-011,0123u十六进制整数:以十六进制整数:以0 x0 x开头的数据,如:开头的数据,如:0 x123 整型常量的分类根据其值的范围而决定其类型,并可以赋
23、值给类型整型常量的分类根据其值的范围而决定其类型,并可以赋值给类型相匹配的整型变量。相匹配的整型变量。第38页/共202页2023/2/22393.3.2 整型变量1.1.整数数据在内存中的存放形式整数数据在内存中的存放形式 数据在内存中是以二进制形式存放的。数据在内存中是以二进制形式存放的。例如:3(0000000000000011)2要区别:3 和 3 方法是:将符号也数码化将符号也数码化即:正的符号 用 0 0 表示 负的符号 用 1 1 表示 数值是以补码补码表示的。正数的补码和其原码的形式相同。负负数数的的补补码码:将该数的绝对值的二进制形式,按位取反再加1。3(1111111111
24、1111101)2第39页/共202页2023/2/22402.整型变量的分类整型变量的分类 整型整型 int int 在内存中以二进制形式存放,每一个整型变量在内存中占在内存中以二进制形式存放,每一个整型变量在内存中占2 2个字节。个字节。短整型短整型 以以short intshort int表示或以表示或以shortshort表示,表示,一般与一般与intint占有的内存相同。占有的内存相同。长整形长整形以以long intlong int表示或以表示或以longlong表示,表示,一般占有在内存中字节为一般占有在内存中字节为intint两倍。两倍。无符号型无符号型只能存放正整数,它的表示
25、是在上述三种类型之前加上只能存放正整数,它的表示是在上述三种类型之前加上unsignedunsigned类型名称类型名称类型符类型符bitbit取值范围取值范围整型整型(短整型短整型)int int short int short int 1616-2-215152 21515-1-1(-32768(-3276832767)32767)无符号整型无符号整型unsigned intunsigned int16160 0 2 21616-1-1(0(065535)65535)长整型长整型long intlong int3232-2-231312 23131-1-1无符号长整型无符号长整型 unsi
26、gned long intunsigned long int32320 0 2 23232-1-1第40页/共202页2023/2/22413.整型变量的定义整型变量的定义对变量的定义一般放在函数的开头部分。对变量的定义一般放在函数的开头部分。例例2.1main()int a,b,c,d;unsigned u;a=12;b=24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);a+u=22,b+u=a+u=22,b+u=1414不同类型的数可以直接运算第41页/共202页2023/2/22424.整型数据的溢出整型数据的溢出main()int a,b
27、;a=32767;b=a+1;printf(“%d,%d”,a,b);运行结果为运行结果为 32767,-327683.3.3 整型常量的类型整型常量的类型 一个整常量,其值在一个整常量,其值在-215-215215-1内可认为是内可认为是 int 型,并可赋值型,并可赋值给给 int 型和型和 long int 型变量;型变量;一个整常量,其值在一个整常量,其值在 231 231-1 范围内则认为它是范围内则认为它是 long int 型,可赋值给一个型,可赋值给一个 long int 型变量;型变量;常量中无常量中无 unsigned 型,但一个非负值的整常量可以赋给型,但一个非负值的整常
28、量可以赋给 unsigned 型整变量;型整变量;第42页/共202页2023/2/22433.4 实型数据3.4.1 实型常量1.十进制小数形式(日常记数形式)1.0 +12.0 -12.0 0.02.指数形式(科学记数形式)E(e)。例如3.0+5等。3.4.2 实型变量1 1类型:类型:单精度:float,分配4 Byte双精度:double,分配 8 Byte2 2存储:存储:指数部分指数部分小数部分小数部分 小数的符号位指数的符号位第43页/共202页2023/2/2244实型数据的类型及规定 类型类型类型符类型符ByteByte绝对值的范绝对值的范围围有效数字有效数字单精度型单精度
29、型 floatfloat4 41010-38 -38 10 1038386 67 7位位双精度型双精度型 doubledouble8 81010-308-308 101030830815151616位位u实型常量不分实型常量不分float和和double,根据范围赋值给相应的变量。,根据范围赋值给相应的变量。u如:如:float a;double b;a=111111.111;b=111111.111a中实际存储的是中实际存储的是111111.1 (7位有效位有效)b中实际存储的是中实际存储的是111111.111 (全部有效全部有效)第44页/共202页2023/2/22453.5 3.5
30、字符型数据字符型数据3.5.1字符常量字符常量1.定义定义用一对单引号括起来的单个字符,称为字符常量。例如,A、等。2.转义字符转义字符语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的字符序列。0000字符串结束标志字符串结束标志字符串结束标志字符串结束标志 n n回车换行回车换行回车换行回车换行 t t跳到下一个输出位置跳到下一个输出位置跳到下一个输出位置跳到下一个输出位置 双引号字符双引号字符双引号字符双引号字符 ddddd ddddddd为为为为1 1到到到到3 3位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符 xhxhh hhhhh
31、为为为为1 1到到到到2 2位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符第45页/共202页2023/2/22463.5.2 字符型变量字符型变量 字符变量的类型关键字为字符变量的类型关键字为char,一般占用一般占用1字节内存单元。字节内存单元。1.变量值的存储变量值的存储 将一个字符常量存储到一个字符变量中,实际上是将该将一个字符常量存储到一个字符变量中,实际上是将该字符的字符的ASCII码值(无符号整数)存储到内存单元中。码值(无符号整数)存储到内存单元中。例如:例如:char ch1,ch2;/*定义两个字符变量:定义两个字符变量:c
32、h1,ch2*/ch1=a;ch2=b;/*给字符变量赋值给字符变量赋值*/a、b的的ASCII码为码为97、98 。2.特性特性 1)字符数据在内存中存储的是字符的字符数据在内存中存储的是字符的ASCII码;码;2)语言允许字符型数据与整型数据之间通用语言允许字符型数据与整型数据之间通用,可以互相可以互相赋值。赋值。3)字符数据也可以整数形式输出。字符数据也可以整数形式输出。第46页/共202页2023/2/2247 例例1 1 字符变量的字符形式输出和整数形式输出。字符变量的字符形式输出和整数形式输出。main()main()char c1,c2;char c1,c2;c1=a;c1=a;
33、c2=b;c2=b;printf(printf(“c1=%c,c2=%cnc1=%c,c2=%cn”,c1,c2);,c1,c2);printf(printf(“c1=%d,c2=%dnc1=%d,c2=%dn”,c1,c2);,c1,c2);程序运行结果:程序运行结果:c1=a,c2=bc1=a,c2=b c1=97,c2=98 c1=97,c2=98第47页/共202页2023/2/2248 例2 大小写字母的转换。main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c c2=%cn”,c1,c2);程序运行结果:A B 第48页/共
34、202页2023/2/2249数据类型、运算符与表达式数据类型、运算符与表达式 字符型数据字符型数据3.5.3 字符串常量字符串常量u用双引号括起来的字符序列。用双引号括起来的字符序列。如:如:“How do you do”,“CHINA”,“a”,“$123.34”等。等。u字符串可以一次输出。字符串可以一次输出。如:如:printf(“How do you do”);uC语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。在内存中作为字符串的结束标志。在内存中,对字符串常量是采用字符数组对字符串常量
35、是采用字符数组表示,即用一个字符型数组来存放一个字符串。表示,即用一个字符型数组来存放一个字符串。u注意:注意:a是字符常量,是字符常量,“a”是字符串常量,二者不同。是字符串常量,二者不同。第49页/共202页2023/2/2250综上所述,字符常量综上所述,字符常量AA与字符串常量与字符串常量 AA是两回事:是两回事:(1 1)定界符不同:字符常量使用单引号,而字符串常量使用双引号;)定界符不同:字符常量使用单引号,而字符串常量使用双引号;(2 2)长度不同:字符常量的长度固定为)长度不同:字符常量的长度固定为1 1,而字符串常量的长度,可以是,而字符串常量的长度,可以是某个整数;某个整数
36、;(3 3)存储要求不同:字符常量存储的是字符的)存储要求不同:字符常量存储的是字符的ASCIIASCII码值,而字符串常量,码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志除了要存储有效的字符外,还要存储一个结束标志00。第50页/共202页2023/2/22513.6 3.6 变量赋初值变量赋初值在变量定义的同时可以为变量赋初值。在变量定义的同时可以为变量赋初值。如:如:int a=3;(相当于相当于 int a;a=3;)float f=3.56;char c=a;int a,b,c=5;表示只给表示只给c赋初值。赋初值。(相当于(相当于int a,b,c;c=5;)第5
37、1页/共202页2023/2/22523.7 各类数值型数据间的混合运算各类数值型数据间的混合运算u不同类型的数据(整型、实型、字符型)可进行混合运算。不同类型的数据(整型、实型、字符型)可进行混合运算。如:如:10+a+1.5 8765.1234*b u必须首先将它们转换成同一类型的数值。必须首先将它们转换成同一类型的数值。u转换原则是由低向高转换,运算结果为最高级别的类型。转换原则是由低向高转换,运算结果为最高级别的类型。double double floatfloatlonglongunsignedunsignedintintchar,shortchar,short表示必须要转换表示由低
38、向高高低第52页/共202页2023/2/2253数据类型、运算符与表达式数据类型、运算符与表达式 混合运算混合运算如:10+10+a a+i*f-+i*f-d/ed/eintdoubledoubledouble+double第53页/共202页2023/2/2254例例2-52-5:已知:已知:float a=2.0;int b=6,c=3;float a=2.0;int b=6,c=3;求解:求解:a*b/c-1.5+a*b/c-1.5+A A+abs(-5)=+abs(-5)=?12.0/34.04.0-1.5-1.52.52.5+65(+65(int)int)67.567.55 572
39、.572.5第二章第二章 2.3 2.3 运算符和表达式运算符和表达式第54页/共202页2023/2/22553.8 算术运算符和算术表达式算术运算符和算术表达式1.基本的算术运算基本的算术运算:、*、%是模运算,即求余运算,要求整数。是模运算,即求余运算,要求整数。如:如:7%4的结果是的结果是3。说明:说明:5/3的结果仍是整数,小数部分被忽略。的结果仍是整数,小数部分被忽略。5.3/3或或5/3.0的结果为的结果为double型。型。C编译系统将实型常量作为双精度来处理。如果参加、编译系统将实型常量作为双精度来处理。如果参加、*、/运算的两个数中有一个数为实数,则结果是运算的两个数中有
40、一个数为实数,则结果是double型。型。2.算术表达式算术表达式:用算术运算符将运算对象按:用算术运算符将运算对象按C的语法规则连接起的式子。的语法规则连接起的式子。例如:例如:a*b/c1.5+a优先级(算术运算)优先级(算术运算):()()*/%+在同一级别中,采取由左至右的结合方向。在同一级别中,采取由左至右的结合方向。如:如:a-b+c 相当于相当于(a-b)+c第55页/共202页2023/2/22563.强制类型转换运算符可将一个表达式转换成所需类型。其一般形式为:强制类型转换运算符可将一个表达式转换成所需类型。其一般形式为:(类(类型名)(表达式)型名)(表达式)例如:例如:(
41、double)a (int)(x+y)(float)(5%3)在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。生变化。第56页/共202页2023/2/2257练习 main()int i;float x;x=3.6;i=(int)x;printf(x=%f,i=%dn,x,i);第57页/共202页2023/2/2258数据类型、运算符与表达式数据类型、运算符与表达式 运算符和表运算符和表达式达式4.自增、自减运算符自增、自减运算符使变量的值加使变量的值加1或减或减1。如:如:i,i 在使用在使用i之前,
42、先使之前,先使i的值加(减)的值加(减)1 i,i 在使用在使用i之后,再使之后,再使i的值加(减)的值加(减)1例如:例如:i的值为的值为3,则,则 j=+i;j的值为的值为4,i的值为的值为4 j=i+;j的值为的值为3,i的值为的值为4又如:又如:printf(“%d”,+i);输出结果为输出结果为4 printf(“%d”,i+);输出结果为输出结果为3单独使用时,单独使用时,i,i 等价等价第58页/共202页2023/2/2259第二章第二章 2.3 2.3 运算符和表达式运算符和表达式结合性:结合性:自右向左自右向左例:例:i=2;i=2;j=-i+;j=-i+;分析:分析:(1
43、 1)+、-、+、-是同级运算符,结合方向:是同级运算符,结合方向:自右向左自右向左自右向左自右向左。(2 2)-i+i+等价于等价于 -(i+i+)(3 3)对于括号内的自增运算,要先使用对于括号内的自增运算,要先使用i i,再使再使i i增加增加1 1。运算结果:运算结果:i i的值为的值为3 3,j j的值为的值为-2-2。第59页/共202页2023/2/2260练习a=1,b=2,c=3,d=4下列式子的值分别是多少?a*b/ca*b%c+1+a*b-c-第60页/共202页2023/2/22613.9 赋值运算符和赋值表达式赋值运算符和赋值表达式1.赋值运算符:赋值运算符:“=”。
44、2.复合赋值运算复合赋值运算:在赋值符号前加上其它运算符号。在赋值符号前加上其它运算符号。+=,-=,*=,/=,%=,=,&=,=,|=例如:例如:a+=3;等价于等价于a=a+3;x*=y+8;等价于等价于x=x*(y+8);x%=3;等价于等价于x=x%3;赋值运算符仅优先于“,”,且具有右结合性例如:a=b=b*c 等价于:a=(b=(b*c)赋值号与数学中的等号含义不同例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a第61页/共202页2023/2/22623.赋值运算中的类型转换 l l =小数部分自动补小数部分自动补0 0l l =自动舍去实型表达式的小数
45、部分(自动舍去实型表达式的小数部分(注意不进行四舍五入注意不进行四舍五入)l l =l l =自动截取表达式值的低字节赋值,舍去高字节自动截取表达式值的低字节赋值,舍去高字节l l =l l =自动给高字节补自动给高字节补0 0 或或补补1 1第62页/共202页2023/2/2263数据类型、运算符与表达式数据类型、运算符与表达式 运算符和表运算符和表达式达式4.赋值表达式:赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。由赋值运算符将一个变量和一个表达式连接起来的式子。一般形式为:一般形式为:u例如:例如:int a=12;求下列运算的结果求下列运算的结果 a aa aa*a
46、 a*a a aa aa*a=12-12*12=-132)a*a=12-12*12=-132)a a-132-132a aa a(-132)=(-132)+(-132)=-264(-132)=(-132)+(-132)=-264a=-264a=-264第63页/共202页2023/2/2264练习int i=1,j=2,k=3,m=4;计算下列式子的值i+=j+kj*=k=m+5第64页/共202页2023/2/2265数据类型、运算符与表达式数据类型、运算符与表达式 运算符和运算符和表达式表达式3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式u逗号运算符又称为逗号运算符又称为“顺序求值
47、运算符顺序求值运算符”,是所有运算符中级别最低的,它,是所有运算符中级别最低的,它将两个表达式连接起来。将两个表达式连接起来。一般形式为:一般形式为:表达式表达式1,表达式,表达式2u求解过程是:先求解表达式求解过程是:先求解表达式1,再求解表达式,再求解表达式2,整个逗号表达式的值是表,整个逗号表达式的值是表达式达式2的值。的值。例如:例如:a=3*5,a*4;a的值为的值为15,表达式的值为,表达式的值为60 (a=3*5,a*4),a+5;a的值为的值为15,表达式的值为表达式的值为20 又如:又如:x=(a=3,6*3);x的值为的值为18 x=a=3,6*a x的值为的值为3,表达式
48、的值为表达式的值为18第65页/共202页第4章 最简单的C程序设计 顺序程序设计第66页/共202页2023/2/22671 C1 C语句概述语句概述2 2 赋值语句赋值语句 3 3 数据的输入输出数据的输入输出4 4 字符数据输入输出字符数据输入输出5 5 格式输入输出格式输入输出7 7 程序举例程序举例 第67页/共202页2023/2/22684.1 C4.1 C语句概述语句概述 用用C语言编写的程序称为语言编写的程序称为C语言源程序语言源程序,简称,简称C程序。程序。C语言一般由一个或若干个函数组成,而这些函数可以保存在一个语言一般由一个或若干个函数组成,而这些函数可以保存在一个或几
49、个源程序中,这些文件都以或几个源程序中,这些文件都以.C作为文件扩展名。作为文件扩展名。例 求园的面积#DEFINE PI=3.1415926#DEFINE PI=3.1415926main()main()float r,s;float r,s;r=20;r=20;s=r*r*PI;s=r*r*PI;printf(printf(“area=%f area=%f”,s);,s);area=1256.637C C程序源程序文件1 1源程序文件i i源程序文件n n预编译命令函数1 1函数n n变量申明部分执行部分(语句)语句是计算机执行的最小单位第68页/共202页2023/2/2269C语句分类
50、语句分类 和其他高级语言一样和其他高级语言一样,C语言的语句也是用来向计算机发出操作命令语言的语句也是用来向计算机发出操作命令的。一条语句经过编译后生成若干条机器指令。在的。一条语句经过编译后生成若干条机器指令。在C语言中只有可执行语言中只有可执行语句语句,没有非执行语句。没有非执行语句。C语句有以下五类语句有以下五类:控制语句,完成一定的控制功能;控制语句,完成一定的控制功能;if()else (条件语句)for()(循环语句)while()(循环语句)do while()(循环语句)continue (结束本次循环语句)break (中止执行switch或循环语句)Switch (多分支选