收藏 分享(赏)

大学C语言学习教程-超全超经典.ppt

上传人:weiwoduzun 文档编号:4179691 上传时间:2018-12-13 格式:PPT 页数:484 大小:5.71MB
下载 相关 举报
大学C语言学习教程-超全超经典.ppt_第1页
第1页 / 共484页
大学C语言学习教程-超全超经典.ppt_第2页
第2页 / 共484页
大学C语言学习教程-超全超经典.ppt_第3页
第3页 / 共484页
大学C语言学习教程-超全超经典.ppt_第4页
第4页 / 共484页
大学C语言学习教程-超全超经典.ppt_第5页
第5页 / 共484页
点击查看更多>>
资源描述

1、C程序设计实例教程 山东科技大学机电学院,1,第一章 C语言概述,本章的主要内容: C语言的发展 C语言的组成及特点 C 语言的调试方法 程序设计入门,C程序设计实例教程 山东科技大学机电学院,2,本章的学习要求 :了解:C语言的发展掌握:C语言的特点、简单C程序的组成掌握:C程序的上机调试步骤重点:简单C程序的组成、上机调试步骤难点:集成开发环境的学习、程序调试方法,C程序设计实例教程 山东科技大学机电学院,3,1.1 C语言的发展,一、程序设计语言的发展:,CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加10010000 减,用助记符号描述的指令系统 如 ADD A,

2、 B,客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系,程序设计是数据被加工的过程,C程序设计实例教程 山东科技大学机电学院,4,二、C语言发展过程 产生过程 时间:19721973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 标准C: K&R合著The C Programming Language ANSI C: 1983年 87 ANSI C: 1987年 1990年国际标准的ANSI C,C程序设计实例教程 山东科技大学机电学院,5,当前流行的编程语言 Visual

3、Studio 6.0 (Visual C+, Visual Basic, Visual J+, Visual Foxpro) Visual S (2003,2005,2008),C程序设计实例教程 山东科技大学机电学院,6,1.2 C语言的组成及特点,C语言的特点 简洁、紧凑,使用方便、灵活(32个关键字,5种基本语句表达式语句、空语句、复合语句、函数调用语句、控制语句,9种控制语句) 具有丰富的运算符和数据类型,便于实现各类复杂的数据结构 能够直接访问内存的物理地址,进行位操作 具有结构化控制语句,便于实现程序的模块化设计 既可用于系统软件的开发,也适合于应用软件的开发 具有效率高、可移植性

4、强等特点,C程序设计实例教程 山东科技大学机电学院,7,例题 1,一个简单的小程序 : include /*编译预处理包含命令*/ void main() /*主函数*/ printf(“hello,world! “); /*格式输出函数*/ ,C程序设计实例教程 山东科技大学机电学院,8,例题 2,#include /*函数功能:计算两个整数相加之和入口参数:整型数据a和b返回值: 整型数a和b之和 */ int Add(int a, int b) return (a + b); /*主函数*/ main() int x, y, sum = 0;printf(“Input two integ

5、ers:“);scanf(“%d%d“, /*输出x和y相加之和*/ ,C程序设计实例教程 山东科技大学机电学院,9,例题 3,判断一个数是否为素数。 #include “stdio.h“ void main() int i,n;scanf(“%d“, ,C程序设计实例教程 山东科技大学机电学院,10,例4 正弦函数,#include “stdio.h“ #include “math.h“ #define PI 3.1415926 /*宏定义*/void main() double x;scanf(“%lf“, /*调用系统函数*/ ,C程序设计实例教程 山东科技大学机电学院,11,例4 正弦

6、函数,#include “stdio.h“ #include “math.h“ #define PI 3.1415926 /*宏定义*/ double sinx(double x); /*函数声明语句*/ void main() double x;scanf(“%lf“, ,C程序设计实例教程 山东科技大学机电学院,12,例5 汉诺塔,C程序设计实例教程 山东科技大学机电学院,13,例5 汉诺塔,#include “stdio.h“ void move(char s,char t) printf(“%c-%c “,s,t); void Hanoi(int n,char one,char two

7、,char three) if(n=1) move(one,three);else Hanoi(n-1,one,three,two);move(one,three);Hanoi(n-1,two,one,three); ,C程序设计实例教程 山东科技大学机电学院,14,例5 汉诺塔,void main() int h; printf(“input number:n“);scanf(“%d“, ,C程序设计实例教程 山东科技大学机电学院,15,1.3 C程序的调试方法,C程序上机操作过程主要包括以下几个步骤: (1)编辑。选择合适的编辑程序,将C语言源程序通过键盘输入到计算机中,并保存为扩展名为“

8、.c”的源文件。 (2)编译。该过程对编辑好的源文件经过C编译程序进行编译,生产扩展名为.obj的目标文件。 (3)连接。经过编译后生成的目标文件还是不能执行的,还需要通过连接程序将源文件生成的目标文件和其包含的库函数及其他目标文件连接后才能生成扩展名为.exe的可执行程序。 (4)执行。执行过程是将连接生成的可执行文件在操作系统下运行,检查程序运行结果。,C程序设计实例教程 山东科技大学机电学院,16,C程序上机操作流程,C程序设计实例教程 山东科技大学机电学院,17,1.4 程序设计入门,程序设计的过程,简单地说就是数据被加工的过程。人们可以通过程序在计算机中的执行来完成对计算机的各种控制

9、。学习程序设计的目的就是学会控制计算机的能力。 一个程序应包括: (1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 (2)对操作的描述。即操作步骤,也就是算法(algorithm)。,C程序设计实例教程 山东科技大学机电学院,18,使用C语言进行程序设计的主要步骤包括: (1)分析所要处理的具体问题,确定需要的数据结构及解决问题的方法。 (2)通过一定方式将数据结构和算法进行描述。 (3)用C语言将解决问题需要的数据结构、算法进行描述,即编制C程序。 (4)将编制好的C程序通过编译、连接、执行后得出解决问题的结果。,C程序设计实例教程

10、山东科技大学机电学院,19,1.5 Turbo C 2.0集成开发环境,一、TurboC 2.0集成开发环境 主菜单内容有: File Edit Run Compile Project Options Debug Break/watch 除Edit外,其他各项均有子菜单,只要用Alt加上某项中第一个字母,就可进入该项的子菜单中,由于篇幅限制,这里只介绍常用的部分功能菜单。,C程序设计实例教程 山东科技大学机电学院,20,1.6 Visual C+ 6.0 集成环境调试,启动Visual C+ 6.0 创建新工程 创建源文件 源程序的调试与运行 源程序书写 源程序编译 运行程序,C程序设计实例教

11、程 山东科技大学机电学院,21,第二章 数据类型,内容提要: 标识符命名; 基本数据类型; 常量和变量; 常用运算符和表达式; 运算符的优先级与结合性,C程序设计实例教程 山东科技大学机电学院,22,关键字(Keyword) 又称为保留字,C语言中预先规定的具有固定含义的一些单词 int,return等 标识符(Identifier) 系统预定义标识符,main,printf 等 用户自定义标识符,Add, x, y 等 运算符(Operator) 34种,详见附录2,C程序常见符号分类,2.1 标识符和字符集,C程序设计实例教程 山东科技大学机电学院,23,分隔符(Separator) 空格

12、、回车/换行、逗号等 其它符号 大花括号“”和“”通常用于标识函数体或者一个语句块 “/*”和“*/”是程序注释所需的定界符 数据(Data) 变量(Variable) 常量(Constant),C程序设计实例教程 山东科技大学机电学院,24,标识符: 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 长度:最长32个字符,C程序设计实例教程 山东科技大学机电学院,25,命名原则: 见名知意 不宜混淆 如l与1, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3

13、days student_name #33 lotus_1_2_3 char ab _above $123,C程序设计实例教程 山东科技大学机电学院,26,C语言的标识符可分为以下3类。1. 关键字:关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。 (1)类型说明符。用于定义、说明变量、函数或其他数据结构的类型。如前面例题中用到的int,double等。 (2)语句定义符。用于表示一个语句的功能。如例1.3中用到的if else就是条件语句的语句定义符。 (3)预处理命令字。用于表示一个预处理命令,如前面各例中用到的include。,C程序设计实例教程 山东科技大学机电学院,27

14、,C语言共有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,C程序设计实例教程 山东科技大学机电学院,28,2. 特定字 特定字是具有特殊含义的标识符。它们虽然不是关键字,但是在习惯上把它们看成关键字。

15、所以一般用户定义的标识符也不要使用它们。 特定字包括:define undef includeifdef ifndef endif line,C程序设计实例教程 山东科技大学机电学院,29,3. 用户定义字 用户定义字指用户按照语法规则定义的标识符。用户定义字可以用来标识用户自己使用的变量,符号常量、数据类型以及函数等。 注意: (1)不能使用关键字和特定字。 (2)用户定义字为了标识不同的对象,标识符的前8个字符要有区别。 (3)标识符最好有含义。 (4)避免使用容易混淆的字符。如l与1,0与o,z与2等。 (5)大、小写代表不同的意义。 (6)尽量不要与某个库函数同名,C程序设计实例教程

16、山东科技大学机电学院,30,字 符 集 字符集是高级语言的编译系统所能识别的字母、数字和特殊符号。每种高级语言都有自己特定的字符集。 C语言的字符集包括: (1)大、小写英文字母: A ,B, ,Z,a,b,z。 (2)数字: 0,1,2,9。 (3)运算符: + * / % = 。 (6)特殊符号: _ $ #。 (7)空白符:空格符、换行符和制表符。,C程序设计实例教程 山东科技大学机电学院,31,2.2 数据类型,数据为什么要区分类型? 不同类型的数据代表不同的 数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类,C程序设计实例教程 山东科技大学机电学院,32,2.2 数据

17、类型,C程序设计实例教程 山东科技大学机电学院,33,基本数据类型,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:,C程序设计实例教程 山东科技大学机电学院,34,数值常量和符号常量 定义:在程序运行过程中,其值不能被改变的量称为常量。如12、0、3为整型常量,4.6、1.23为实型常量,a、d为字符常量。 也可以用一个标识符代表一个常量,称为符号常量。习惯上,符号常量名用大写,变量名用小写,以示区别。 使用符号常量的好处 : 含义清楚,符号常量名在定义时应考虑“见名知意”。 在需要改变一个常量时能做到“一改全改”。,2.3 常量和变量,C

18、程序设计实例教程 山东科技大学机电学院,35,举例:符号常量的使用#define PRICE 30 #include void main ( )int num,total;num=10;total=num * PRICE;printf(“total=%d“,total); 程序中用#define命令行定义PRICE代表常量30。 该程序的运行结果:total=300,C程序设计实例教程 山东科技大学机电学院,36,变量 定义:变量是由程序命名的一块计算机内存区域,是用来存储一个可以变化的数值。 定义变量的格式为:类型说明符 变量名表 ; 请注意区分变量名和变量值这两个不同的概念 : 变量名实际

19、上是以一个名字对应,代表一个地址。,2.3 常量和变量,C程序设计实例教程 山东科技大学机电学院,37,整型常量 定义:整型常量就是整常数。 分类:在C语言中,使用的整常数有八进制、十六进制和十进制三种。 八进制整常数。八进制整常数必须以0开头,即以0作为八进制数的前缀,数码取值为07。如:015(十进制为13),0101(十进制为65),0177777(十进制为65535)。,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,38,十六进制整常数。十六进制整常数的前缀为0X或0x,其数码取值为09,AF或af。 如:0X2A(十进制为42),0XA0(十进制为160),0XFF

20、FF(十进制为65535) 十进制整常数。十进制整常数没有前缀,其数码为09,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,39,十进制:4956= 410+910 +510+610,二进制:1011=12+02 +12+12,十六进制:81AE=816+116 +1016+1416,八进制:4275=48+28 +78+58,常见数制表示方法:,C程序设计实例教程 山东科技大学机电学院,40,整型变量 内存中的存放形式 :整型常量就是整常数。,2.4 整型数据类型,内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或1,1、字节和位

21、,C程序设计实例教程 山东科技大学机电学院,41,2、数值的表示方法原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1,C程序设计实例教程 山东科技大学机电学院,42,整型变量 分类: 基本型。类型说明符为int,在内存中占2个字节,其取值为基本整常数。 短整量。类型说明符为short int或short。所占字节和取值范围均与基本型相同。 长整型。类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数

22、。 无符号型。类型说明符为unsigned。,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,43,整型变量 说明: 一般形式为:类型说明符 变量名标识符,变量名标识符。 例如: int a,b,c; (a,b,c为整型变量) long x,y; (x,y为长整型变量) unsigned p,q; (p,q为无符号整型变量),2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,44,在书写变量说明时,应注意 : 允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。 最后一个变量名之后必须以“;”号结尾。

23、变量说明必须放在变量使用之前,一般放在函数体的开头部分。,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,45,实例,整型变量的定义和使用。 #include void main() int a,b,c,d; /*指定a、b、c、d为整型变量*/unsigned u; /*指定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=-14 可以看到不同种类的整型数据可以进行算术运算。在本例中是int型数据与unsigned int型数据进行相加相减运算。,C程序

24、设计实例教程 山东科技大学机电学院,46,【例2.3】 整型数据的溢出 #include void main() int a,b;a=32767;b=a+1;printf(“%d,%d“,a,b); 在TurboC 2.0环境下运行结果为:32767,-32768 而在Visual C+ 6.0环境下,由于是32位应用程序,int类型占4个字节,所以输出结果为:32768,32768,C程序设计实例教程 山东科技大学机电学院,47,变量a的最高位为0,后15位全为1。加1后变成第1位为1,后面15位全为0。而它是32768的补码形式,所以输出变量b的值为32768。请注意:一个整型变量只能容纳

25、一3276832767范围内的数,无法表示大于32767的数。,C程序设计实例教程 山东科技大学机电学院,48,在Visual C+下查看整型在内存的表示 #include “stdio.h“ void main() int n,i=31,a32=0;scanf(“%d“, ,C程序设计实例教程 山东科技大学机电学院,49,在Visual C+下查看整型在内存的表示 #include “stdio.h“ void main() int n=65536,i,j=3;char *p;p=(char *) ,C程序设计实例教程 山东科技大学机电学院,50,浮点常量 定义:浮点数就是平常所说的实数 。

26、 分类:有两种形式:十进制数形式和指数形式 。 十进制数形式。由数码0 9和小数点组成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的浮点数。 指数形式。由十进制数、加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n(a为十进制数,n为十进制整数)其值为 a*10n,如:2.1E5(等于2.1*105),3.7E-2(等于3.7*10-2)。,2.5 浮点型数据类型,C程序设计实例教程 山东科技大学机电学院,51,浮点变量 分类:浮点型变量分为单精度(float)型、双精度(double)型和长双精度(long

27、double)型三类 。 定义形式: 单精度(float)型。float a,b; 双精度(double)型。double c,d; 长双精度(long double)型。 long double t;,2.5 浮点型数据类型,C程序设计实例教程 山东科技大学机电学院,52,实例,【例2.4】把一个浮点实型常数9876543219分别赋给一个float型变量和double型变量,以验证单精度变量和双精度变量的区别。 #include void main( ) float a;double b;a=987654.3219;b=987654.3219;printf(a=%fnb=%fn,a,b);

28、 由于float型变量a只能接受7位有效数字,因此,从第八位(即小数点后第二位)起数字已不准确,而double型变量b能全部接受上述l0位数字。,运行结果如下: a=987654.312500 b=987654.321900,C程序设计实例教程 山东科技大学机电学院,53,字符常量 定义:字符常量是用单引号括起来的一个字符。例如a,b,=,+,?都是合法字符常量。 定义形式: 字符常量只能用单引号括起来,不能用双引号或其他括号。 字符常量只能是单个字符,不能是字符串。 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。 转义字符是一种特殊的字符常量。转义字符以反斜线“开头

29、,后跟一个或几个字符。,2.6 字符类型,C程序设计实例教程 山东科技大学机电学院,54,表2-2 转义字符及其含义,C程序设计实例教程 山东科技大学机电学院,55,广义地讲,语言字符集中的任何一个字符均可用转义字符来表示。表2-2中的ddd和xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如101表示字母A ,102表示字母B,134表示反斜线,XOA表示换行等。,C程序设计实例教程 山东科技大学机电学院,56,【例2.5】转义字符的使用 #include void main() int a,b,c; a=5; b=6; c=7; printf(“%dnt%d %

30、dn %d %dtb%dn“,a,b,c,a,b,c); a、b、c为整数 5-a,6-b,7-c 调用printf显示程序运行结果 printf(“%dnt%d %dn %d %dtb%dn“,a,b,c,a,b,c);,C程序设计实例教程 山东科技大学机电学院,57,以下程序输出结果 #include “stdio.h“ void main() printf(“1234567890123456789012345n“);printf(“thellotabcn“); ,C程序设计实例教程 山东科技大学机电学院,58,以下程序输出结果 #include “stdio.h“ void main()

31、 printf(“1234567890123456789012345n“);printf(“thellotbabcn“); t之后的b删除了制表符号,所以abc紧接着前面进行输出,C程序设计实例教程 山东科技大学机电学院,59,字符变量 类型说明符:char 取值:字符常量,即单个字符 举例: 【例2.6】向字符变量赋以整数。 #include void main( ) char a,b;a=120;b=121;printf(“%c,%cn%d,%dn“,a,b,a,b); ,显示结果:a,b 120,121,C程序设计实例教程 山东科技大学机电学院,60,例2.7 大小写字母的转换。 #in

32、clude void main() char a,b;a=x;b=y;a=a-32;b=b-32;printf(“%c,%cn%d,%dn“,a,b,a,b); ,C程序设计实例教程 山东科技大学机电学院,61,字符串常量 定义:是由一对双引号括起的字符序列 ,如:“CHINA” 。 与字符常量区别 : (1)字符常量由单引号括起来,字符串常量由双引号括起来。 (2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。 (3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。 (4)字符常量占一个字节的内存空间。,C程序设计实例教程 山东科技大学机电学院,62,

33、字符和字符串的区别,占用空间不同 #include “stdio.h“ void main() printf(“%d,%dn“,sizeof(a),sizeof(“a“); ,C程序设计实例教程 山东科技大学机电学院,63,2.7 不同数据类型之间的转换,一、自动转换 环境:自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。 3+A+5/2=? 3+A+5.0/2=? 遵循以下规则: (1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 (2)转换按数据长度增加的方向进行,以保证精度不降低。,C程序设计实例教程 山东科技大学机电学院,64,(3)所有的浮点运算都是以双精

34、度进行的。 (4)char型和short型参与运算时,必须先转换成int型。 (5)在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。,不同类型自动转换规则,C程序设计实例教程 山东科技大学机电学院,65,#include “stdio.h“ void main() int a=10;char b=A;float x=3.14;printf(“%lfn“, a+b*2+x*3); ,C程序设计实例教程 山东科技大学机电学院,66,二、强制类型转换 实现:通过类型转换运算来实现的 。 形式为:(类型说明符)(表达式) 注意问题: (1)类型说明符和表达式都必须

35、加括号。 (2)无论是强制转换或是自动转换,都是临时性转换,不改变数据说明时对该变量定义的类型。,C程序设计实例教程 山东科技大学机电学院,67,【例2.9】强制类型转换。 #include void main( ) float f=5.75;printf(“(int)f=%d,f=%fn“,(int)f,f); 运行结果: (int)f=5,f=5.750000,C程序设计实例教程 山东科技大学机电学院,68,第三章 运算符和表达式,掌握:算术、关系、逻辑等常见运算符掌握:各种运算符的优先级掌握:各种表达式的组成及运算过程重点:运算符的优先级及表达式分析计算难点:自增、自减运算符,C程序设计

36、实例教程 山东科技大学机电学院,69,3.1 算术运算符和算术表达式,算术运算符 int a=5,b=20,x,y; x=a+; y=+b; a=? b=? x=? y=?,C程序设计实例教程 山东科技大学机电学院,70,算术表达式 定义:算术表达式是由算术运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函数、数组元素等内容。 形式: 表达式1 算术运算符 表达式2 【例3.1】若a=5,b=3,c=2,x=1.5,则算术表达式a*x*x+b*x+c的结果是多少?,C程序设计实例教程 山东科技大学机电学院,71,注意: (1)当运算符“/”两侧的操作数为整型时,计算结果为整

37、型,如19/2=9。 (2)运算符“%”两侧的操作数必须是基本整型、短整型或长整型数,而不能是浮点型数字。 (3)运算符“+”、“-”只能用于变量,而不能用于常量或表达式,如:i+、-j均是正确的,而+10、(a+b)+则是错误的。,C程序设计实例教程 山东科技大学机电学院,72,3.2 赋值运算符和赋值表达式,赋值运算符,C程序设计实例教程 山东科技大学机电学院,73,赋值表达式 定义:赋值表达式是由赋值运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函数、数组元素等内容。 形式:变量名称 赋值运算符 表达式,C程序设计实例教程 山东科技大学机电学院,74,举例,【例3.

38、4】已知int a=5,b=3,x=10,计算如下表达式的值。 a=a*8 表达式值为40,a=40 b%=2 表达式值为1,b=1 x*=(a+b) 表达式值为410,x=410 a=b=c=5 表达式值为5,a,b,c值为5 a=(b=5) b=5,a=5 a=5+(c=6) 表达式值为11,c=6,a=11 a=(b=4)+(c=6) 表达式值为10,a=10,b=4,c=6 a=(b=10)/(c=2) 表达式值为5,a=5,b=10,c=2,C程序设计实例教程 山东科技大学机电学院,75,注意: (1)对于简单赋值运算符和复合赋值运算符,等号左侧的操作数只能为变量,而不能是常量或表达

39、式,如a=5是正确的,而10=3+2以及a+b=8都是错误的。 (2)赋值运算符具有右结合性,因此a=b=c=10是正确的,等价于a=(b=(c=10)。 (3)当等号“=”两侧的类型不同时,将要进行数值类型的转换,C程序设计实例教程 山东科技大学机电学院,76,赋值语句在赋值表达式的基础上添加“;”就构成了赋值语句。如x=(a=4)+8;计算时先计算右侧括号中的内容,然后与8相加,并将结果赋给变量x。【例3.5】已知华氏温度与摄氏温度之间的转换公式为C=5/9*(F-32),编写程序将输入的华氏温度转换为摄氏温度输出,C程序设计实例教程 山东科技大学机电学院,77,#include “std

40、io.h“ void main() int f;float c;scanf(“%d“, /*输出结果*/ ,C程序设计实例教程 山东科技大学机电学院,78,3.3 关系运算符和关系表达式,关系运算符 C语言提供了6种关系运算符,C程序设计实例教程 山东科技大学机电学院,79,关系表达式 定义:关系表达式是由关系运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函数、数组元素等内容。 一般组成形式: 表达式1 关系运算符 表达式2 注意: 关系表达式的结果是1或0,前者对应于关系成立,后者对应于关系不成立。如: 531 关系不成立,表达式的值为0 (3+7)!=(2+8) 关系

41、不成立,表达式的值为0,C程序设计实例教程 山东科技大学机电学院,80,【例3.6】若有int a=3,b=2,c=1,d,f; 则 ab /表达式值1(ab)=c /表达式值1b+cb /d=1f=abc /f=0 注意: (1)表达式1和表达式2还可以是常量、变量的形式,也可以是赋值表达式、逻辑表达式、关系表达式等表达式嵌套的形式。 (2)关系表达式的值为0或1。,C程序设计实例教程 山东科技大学机电学院,81,3.4 逻辑运算符和逻辑表达式,逻辑运算符,其中逻辑与运算符&和逻辑或运算符|均为双目运算符, 具有左结合性。非运算符!为单目运算符,具有右结合性。,C程序设计实例教程 山东科技大

42、学机电学院,82,逻辑运算的值为“真”和“假”两种,用“1”和“0”来表示。逻辑运算表,例如由于5和3均为非“0”,因此5&3的值为“真”,即为1。,C程序设计实例教程 山东科技大学机电学院,83,逻辑表达式 定义:逻辑表达式是由逻辑运算符和括号将运算对象连接起来的式子。其中运算对象可以是常量、变量、函数的形式,也可以是关系表达式、算术表达式等表达式嵌套的形式,逻辑表达式的结果为1或0。 逻辑表达式的一般形式为 表达式1 逻辑运算符 表达式2,C程序设计实例教程 山东科技大学机电学院,84,【例3.7】判断某年的天数。分析:判断某年的天数,实际是判断该年是闰年还是平年,而闰年的判断条件是:该年

43、能被4整除,但不能被100整除,或者能被400整除。很显然,前面两个条件是并列的关系,用逻辑与运算符连接,而与后者的关系是或的关系,因此可以用逻辑或运算符来连接前后两个表达式。 y%4=0 & y%100!=0) | y%400=0,C程序设计实例教程 山东科技大学机电学院,85,参考程序如下: #include “stdio.h“ void main() int y;scanf(“%d“, ,C程序设计实例教程 山东科技大学机电学院,86,注意: (1)在逻辑运算值时,以“1”代表“真”,“0”代表“假”;但在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”

44、。如3 & 0.5,结果为1。 (2)在逻辑与&和逻辑|运算中,存在一种短路效应,C程序设计实例教程 山东科技大学机电学院,87,【例3.8】以下程序的输出结果是什么? #include “stdio.h“ void main() int i=1,j=2,k=3;float x=200,y=0.85;printf(“%d,%dn“,i=5 ,C程序设计实例教程 山东科技大学机电学院,88,3.5 条件运算符和条件表达式,条件运算符 :C语言提供了1种条件运算符,其中该运算符是三目运算符,具有右结合性。,C程序设计实例教程 山东科技大学机电学院,89,条件表达式 定义:条件表达式是由条件运算符和

45、有关表达式、变量或常量等组成的式子。 条件表达式的一般形式为: 表达式1? 表达式2: 表达式3 其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。如存在两个整型变量a=5,b=10,求二者之间的较大值,可以用条件表达式表示为:ab?a:b。,C程序设计实例教程 山东科技大学机电学院,90,注意: (1)条件运算符中“?”和“”是一对运算符,不能分开单独使用; (2)条件运算符的结合方向是自右至左。因此ab?a:cd?c:d应理解为ab?a:(cd?c:d)。,【例】 if(ab)max=a; elsemax=b; 改写成用条件

46、表达式表示的形式为:max=ab?a:b。,C程序设计实例教程 山东科技大学机电学院,91,3.6 逗号运算符和逗号表达式,逗号运算符 :C语言提供了1种逗号运算符,C程序设计实例教程 山东科技大学机电学院,92,逗号表达式 定义:逗号表达式是由逗号运算符和有关变量、常量、表达式等组成的式子。 逗号表达式的一般形式为: 表达式1,表达式2, 表达式3 求解的顺序: 是自左向右进行,先求解表达式1的值,然后求解表达式2的值,依次类推,整个逗号表达式的值是最后一个表达式的值。,C程序设计实例教程 山东科技大学机电学院,93,【例3.9】 计算如下逗号表达式的值。 a=3*5,a*4 /a=15,表

47、达式值60 a=3*5,a*4,a+5 /a=15,表达式值20 x=(a=3,6*3) /赋值表达式,表达式值18,x=18 x=a=3,6*a /逗号表达式,表达式值18,x=3,C程序设计实例教程 山东科技大学机电学院,94,注意: (1)并不是所有出现逗号的地方都是逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。 (2)逗号表达式中各个表达式也可以是逗号表达式的形式,即(表达式1,表达式2),表达式3,构成表达式嵌套的形式。 (3)通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。,C程序设计实例教程 山东科技大学机电学院,95,设有定义:int x=2;以下表达式中,值不为6的是_D_。A)x*=x+1 B)x+,2*xC)x*=(1+x) D)2*x, x+=2 为表示关系xy z,应使用的C语言表达式是_A_。 A) (x=y) A) 30 B) 24 C) 60 D) 48,C程序设计实例教程 山东科技大学机电学院,96,

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

当前位置:首页 > 高等教育 > 语言学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报