C语言程序设计 李祥 E-mail:tom_lx@126.com QQ:100756.

Slides:



Advertisements
Similar presentations
第四章:长期股权投资 长期股权投资效果 1、控制:50%以上 有权决定对方财务和经营.
Advertisements

8月1日后全国营改增我们怎么办? 营改增新政策深度解析 得法网财税讲师 樊剑英.
2011级高考地理复习(第一轮) 第三篇 中国地理 第一章 中国地理概况 第五节 河流和湖泊.
第三章 数据的使用.
圆的一般方程 (x-a)2 +(y-b)2=r2 x2+y2+Dx+Ey+F=0 Ax2+Bxy+Cy2+Dx+Ey+ F=0.
6.9二元一次方程组的解法(2) 加减消元法 上虹中学 陶家骏.
第2章 数据类型与表达式 2.1 C++的数据类型 2.2 常量 2.3 变量 2.4 C++的运算符 2.5 算术运算符与算术表达式
C/C++语言程序设计 第二章 数据类型和表达式 龚尚福,贾澎涛主编 《C/C++语言程序设计》 西安电子科技大学出版社.
没有规矩,不成方圆。.
清仓处理 跳楼价 满200返160 5折酬宾.
1.1.2 四 种 命 题.
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
第3章 运算符和表达式 3.2 表达式与表达式的 3.1 运算符与运算符的 计算 分类 表达式 --1.算术运算符
C++程序设计 第二章 数据类型与表达式.
第1节 光的干涉 (第2课时).
1.某生物个体经减数分裂产生4种类型的配子,即Ab∶aB∶AB∶ab=4∶4∶1∶1,这个生物如自交,其后代中出现显性纯合体的几率是
C语言实验 第一课 标题:学号+姓名.
第三章 C语言基础 学习目标: 熟练掌握:C语言的基本数据类型、运算符及表达式 掌握:常见的输入、输出函数使用方法;
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
基础篇 基础知识 —C语言程序设计 学习目标 掌握C语言中三种常见的基本类型及其使用方法 掌握常见的算术运算符和表达式的使用
走进编程 程序的顺序结构(二).
第2章 数据类型与表达式 2.1 C++的数据类型 2.2 常量 2.3 变量 2.4 C++的运算符 2.5 算术运算符与算术表达式
C语言程序设计 第三章 数据类型、运算符与表达式
第2章 数据类型与数据运算.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
程序设计基础 第 二 章 谌 卫 军 清华大学软件学院 2008年秋季.
C语言程序设计基础 刘新国.
第二章 Java语言基础.
第2章 数据类型、运算符和表达式.
第二章 数据类型、运算符与表达式.
第三章 数据类型、运算符与表达式.
第三章 数据类型、运算符与表达式.
二元一次聯立方程式 代入消去法 加減消去法 自我評量.
目录 2.1数据类型 2.2常量 2.3变量 2.4库函数 2.5运算符及表达式 1.
第2章 数据类型及表达式 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
C程序设计.
第 二 章 数据类型、运算符与表达式.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
数据类型与运算规则.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
课前注意 课前注意 大家好!欢迎加入0118班! 请注意以下几点: 1.服务:卡顿、听不清声音、看不见ppt—管家( ) 2.课堂秩序:公共课堂,勿谈与课堂无关或消极的话题。 3.答疑:上课听讲,课后答疑,微信留言。 4.联系方式:提示老师手机/微信: QQ:
C语言程序设计 李祥 QQ:
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
第九节 赋值运算符和赋值表达式.
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
THE C PROGRAMMING LANGUAGE
第二章 类型、对象、运算符和表达式.
第2章 数据类型、运算符与表达式 2.1 程序设计概述
苏教版五年级数学上册 用含有字母的式子表示 简单的数量关系 周冬妮 1.
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C程序设计 实验二 数据类型、运算符和表达式 第6讲
2.2矩阵的代数运算.
第二章 Java基本语法 讲师:复凡.
程序设计基础A(C语言) 第一章 C语言概述 主讲教师: 许 康
第十二章 位运算.
Chap 6 数据类型和表达式 6.1 数据的存储和基本数据类型 6.2 常量和变量 6.3 数据的输入和输出 6.4 类型转换
第3章 数据类型、运算符与表达式 3.1 程序设计概述
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
基本知识 数据类型、变量、常量、运算符.
目录 12.1 位运算符 12.2 位域(位段) 1.
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
鸡兔同笼(续) ——选择结构.
第二章 数据类型与表达式 丘志杰 电子科技大学 计算机学院 软件学院.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第9章 位 运 算.
Presentation transcript:

C语言程序设计 李祥 E-mail:tom_lx@126.com QQ:100756

第三章 运算符与表达式 目录 1 2 3 4 5 除法模块实现分析 算术运算符与算术表达式 赋值运算符与赋值表达式 自动类型转换与强制类型转换运算 5 项目完善(乘法模块的开发)

知识点要求: 技能要求: 教学要求 1 2 3 1 2 基本算术运算符、自加自减运算 赋值运算符与赋值表达式 强制类型转换 编程实现简单的算术运算 2 赋值运算符的使用

3.1 除法模块实现分析 任务描述: 任务要求: 编写divide函数,实现两个整数的除法运算。 (1)计算两个整数相除的商。 (2)要求商保留小数点后面一位小数。

3.1 除法模块实现分析 任务分析 除法模块的实现思路与加法模块类似,不同的是实现除法法模块时,我们还需要考虑以下几个问题: (1)在C语言中也用“÷”号表示除法吗? (2)在C语言中12÷5结果为2.4吗? (3)输出时如何保留一位小数?

3.1 除法模块实现分析 void divide() {int x,y;float z; x=3; y=2; z=x/y; 任务实现 编写divide函数 void divide() {int x,y;float z; x=3; y=2; z=x/y; printf("x/y=%.1f\n",z); return; } 在主函数中调用divide函数

3.1 除法模块实现分析 涉及知识点 常量-- 3,2 (已学) 变量-- x,y,z (已学) 数据类型-- int,float (已学) 常量-- 3,2 (已学) 变量-- x,y,z (已学) 数据类型-- int,float (已学) 赋值运算符-- = 除法运算符-- / 输出1位小数— %.1f(下章学)

3.2 算术运算符与算术表达式 3.2.1 基本算术运算符与表达式 基本算术运算符: + :正号运算符(单目运算符) 3.2 算术运算符与算术表达式 3.2.1 基本算术运算符与表达式 基本算术运算符: + :正号运算符(单目运算符) - :负号运算符(单目运算符) * :乘法运算符 / :除法运算符 % :求余运算符 + :加法运算符 - :减法运算符

3.2 算术运算符与算术表达式 说明 两个整数相除的结果为整数 如5/3的结果值为1,舍去小数部分 3.2 算术运算符与算术表达式 说明 两个整数相除的结果为整数 如5/3的结果值为1,舍去小数部分 如果除数或被除数中有一个为负值,舍入方向不固定。例如,-5/3,有的系统中得到的结果为-1,在有的系统中则得到结果为-2 VC++采取“向零取整”的方法 如5/3=1,-5/3=-1,取整后向零靠拢 % 运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。如8%3,结果为2

思考题: void main() {int a,b; float c; a=12; b=5; c=a/b; printf ("c=%f\n",c); return; } 输出结果? C=2.000000

3.2 算术运算符与算术表达式 算术表达式与运算符的优先级与结合性: 在表达式求值时,先按运算符的优先级别高低次序执行。 3.2 算术运算符与算术表达式 算术表达式与运算符的优先级与结合性: 在表达式求值时,先按运算符的优先级别高低次序执行。 算术运算符的结合方向为“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性。详见附录Ⅱ。

3.2 算术运算符与算术表达式 3.2.2 自增、自减运算符 前置的加与减: 3.2 算术运算符与算术表达式 3.2.2 自增、自减运算符 前置的加与减: ++i, -- i (在使用i之前,先使i的值加(减)1,++i称为前置的加,--i称为前置的减)。 例:i的原值等于3 j=++i; (i的值先变成4,再赋给j,j的值为4)

3.2 算术运算符与算术表达式 3.2.2 自增、自减运算符 后置的加与减: 3.2 算术运算符与算术表达式 3.2.2 自增、自减运算符 后置的加与减: i++,i -- (在使用i之后,使i的值加(减)1,i++称为后置的加,i--称为后置的减)。 例: i的原值等于3 j=i++; (先将i的值3赋给j,j的值为3,然后i变为4)

3.2 算术运算符与算术表达式 3.2.2 自增、自减运算符 自增运算符(++),自减运算符(--),只能用于变量,而不能用于常量或表达式。 3.2 算术运算符与算术表达式 3.2.2 自增、自减运算符 自增运算符(++),自减运算符(--),只能用于变量,而不能用于常量或表达式。 ++和--的结合方向是“自右至左”,见附录Ⅱ。

思考题 以下程序的运行结果是? #include<stdio.h> void main() {int i,j,m,n,x=0,y=0; i=10;j=20; m=++i;n=j++; x+=i--;y-=--j; printf("i=%d,j=%d\n",i,j); printf("m=%d,n=%d,x=%d,y=%d\n",m,n,x,y); return; }

3.3 赋值运算符与赋值表达式 3.3.1 赋值运算符与赋值表达式 赋值运算符 3.3 赋值运算符与赋值表达式 3.3.1 赋值运算符与赋值表达式 赋值运算符 赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如“a=3”的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。

3.3 赋值运算符与赋值表达式 3.3.1 赋值运算符与赋值表达式 赋值表达式 3.3 赋值运算符与赋值表达式 3.3.1 赋值运算符与赋值表达式 赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。 它的一般形式为: 〈变量〉 〈赋值运算符〉 〈表达式〉

3.3 赋值运算符与赋值表达式 3.3.1 赋值运算符与赋值表达式 3.3 赋值运算符与赋值表达式 3.3.1 赋值运算符与赋值表达式 对赋值表达式求解的过程是:将赋值运算符右侧的“表达式”的值赋给左侧的变量。 a=b=c=5 //赋值表达式值?a、b、c值? a=5+(c=6) //表达式值为11?a、c的值? a=(b=4)+(c=6) //表达式值为10? a,b,c的值?

3.3 赋值运算符与赋值表达式 3.3.2 复合的赋值运算符 在应用中经常碰到“a=a+3”等情况,在C中允许将它变为“逆波兰”式,即“a+=3”,以提高运行效率。 例如,可以有: a+=3 等价于 a=a+3 x*=y+8 等价于 x=x *(y+8) x%=3 等价于 x=x%3 x%=y+3 等价于 x=x%(y+3)

3.3 赋值运算符与赋值表达式 3.3.2 复合的赋值运算符 凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。 运算符 3.3 赋值运算符与赋值表达式 3.3.2 复合的赋值运算符 凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。 运算符 表达式示例 运算关系 += a+=3 a=a+3 -= a-=b a=a-b *= a*=2 a=a*2 /= a/=b a=a/b %= a%=3 a=a%3

3.3 赋值运算符与赋值表达式 3.3.2 复合的赋值运算符 【例3.1】复合的赋值运算符使用。 已知:int m=5,y=2; 3.3 赋值运算符与赋值表达式 3.3.2 复合的赋值运算符 【例3.1】复合的赋值运算符使用。 已知:int m=5,y=2; 求:y+=y-=m*=y 后,y的值是多少?

3.3 赋值运算符与赋值表达式 求:y+=y-=m*=y 后,y的值是多少? 求解过程为: y=y+( y-=m*=y) 3.3 赋值运算符与赋值表达式 求:y+=y-=m*=y 后,y的值是多少? 求解过程为: y=y+( y-=m*=y) y=y+( y=(y-(m*=y))) y=y+( y=(y-(m=m*y))) y=y+( y=(y-(m=5*2))) y=y+( y=(y-10)) y=y+( y=-8) y=-16

思考题 写出下面程序的预期结果,体会复合赋值运算符的功能。 #include<stdio.h> void main() {int a=2,b=4,c=3,d=5,e=8; b+=a; c*=a; d/=a; e%=a; printf("b=%d\nc=%d\nd=%d\ne=%d\n",b,c,d,e); return; }

3.4 自动类型转换与强制类型转换 3.4.1 表达式中的自动类型转换 当表达式中的操作数类型不相同时,则在运算之前,C编译器先将所有操作数都转换成同一类型,即转换成占内存字节数最大的操作数的类型,这称为类型提升。 类型提升的规则如下图:

3.4 自动类型转换与强制类型转换 图中横向向左的箭头表示必定的转换。 纵向箭头表示运算对象为不同类型时转换的方向。

3.4 自动类型转换与强制类型转换 3.4.2 赋值中的自动类型转换 赋值运算符左侧变量的类型和右侧表达式的类型不一致,则赋值时将发生自动类型转换。 转换的规则是: 将右侧表达式的值转成左侧变量的类型。

3.4 自动类型转换与强制类型转换 请分析编译时警告产生的原因。 【例3.2】观察下列程序中的赋值运算符的自动类型转换。 #include <stdio.h> void main() {int n=256; float f=4.8; double d=2.5; n=f; f=n; d=f; printf("n=%d\n",n); printf("f=%f\n",f); printf("d=%f\n",d); return; } 请分析编译时警告产生的原因。

3.4 自动类型转换与强制类型转换 3.4.3 强制类型转换 可以利用强制类型转换运算将一个表达式转换成所需类型。 其一般形式为 (类型名)(表达式) 例如: (double)a //将a转换成double型 (int)(x+y) //将x+y的值转换成整型 需要说明的是在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。

3.4 自动类型转换与强制类型转换 【例3.3】强制类型转换。 #include <stdio.h> void main( ) { float x; int i; x=3.6; i=(int)x; //进行类型的强制转换 printf("x=%f,i=%d\n",x,i); }

3.5 项目的完善 任务描述: 参考divide函数,完成multiply函数的开发,实现两个数实数的乘法法功能。 任务要求: (1)计算并输出两个实数的乘积。 (2)要求结果保留小数点后面二位小数。 请同学们自己完成!

重点 难点 本章小结 1 2 3 1 2 算术运算符(+、-、*、/、%) 赋值运算符(=) 强制类型转换运算( (类型) ) 自加、自减运算符(++、--) 2 复合赋值运算符(+=、-=、*=、/=、%=)

本章结束!