版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,内容要点回顾,#include stdio.h int main( ) int m=6,n; float a=1.68,b; char ch1=$,ch2; double x=6.18,y; printf(请输入一个整数:); scanf(%d, ,2,第3章顺序结构程序设计,学习目的:通过对运算符的介绍,来掌握C语言对数据的处理方法 1 算术运算符及表达式 2 赋值运算与赋值表达式 3 C语言特有的运算和运算符,3,一、 算术运算与算术表达式,在语言中,除控制语句和输入输出函数外,其它所有基本操作都作为运算符处理。 1.五种基本算术运算符 +、-(减法/取负)、*、/、%(求余数) (1
2、)关于除法运算/ C语言规定:两个整数相除,其商为整数,小数部分被舍弃。例如,5 / 2 = 2。 (2)关于求余数运算 要求两侧的操作数均为整型数据,否则出错。,4,关于求余运算%,只能用于整形数据 运算的含义是求两个数整除(即商为整数)后的余数。 如:8/4 结果为2而8%4结果为0 7/4 结果为1而7%4结果为3 -5%2结果为-1 5%(-2)结果为1 重要性质: 若a%b结果为0,则a能被b整除; a%b的结果只可能是0,1,b-1之中的一个。,2.表达式和算术表达式 (1)表达式的概念用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子,称为表达式。
3、单个常量、变量或函数,可以看作是表达式的一种特例。将单个常量、变量或函数构成的表达式称为简单表达式,其它表达式称之为复杂表达式。,6,(2)算术表达式的概念 表达式中的运算符都是算术运算符。例如,3 + 6 * 9、(x + y) / 2 - 1等,都是算术表达式。 良好的源程序书写习惯:在表达式中,在双目运算符的左右两侧各加一个空格,可增强程序的可读性。 特别注意:数学式子:b2-4ac 写为C语言的表达式:b*b-4*a*c 其中的*不可省略。,7,3.运算符的优先级与结合性 (1)语言规定了运算符的优先级和结合性。 所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先
4、与左边的运算符结合,还是先与右边的运算符结合。 自左至右的结合方向,称为左结合性。反之,称为右结合性。 结合性是语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。,8,(2)表达式求值 1)按运算符的优先级高低次序执行。例如,先乘除后加减。 2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行。 例如,算术运算符的结合方向是“自左至右”,即:在执行“a b + c”时,变量b先与减号结合,执行“a - b”;然后再执行加c的运算。,9,4.数据类型转换 (1) 在语言中,整型、实型和字符型数据间可以混合运算(
5、因为字符数据与整型数据可以通用)。 如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。转换规则有自动和强制两种。自动的规则为不同范围的数据相互运算将会使小范围的数据先转换为大范围的数据类型再运算,结果为大范围类型;,10,(2)除自动转换外,语言也允许强制转换。 数据类型强制转换的一般格式为: (要转换成的数据类型)(被转换的表达式) 当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。 例如, (double)a (等价于(double)(a) /*将变量a的值转换成double型*/ (int)
6、(x + y) /*将x+y的结果转换成int型*/ (float)5 / 2(等价于(float)(5)/2) /*将5转换成实型再除以2(=2.5)*/ (float)(5 / 2) /*将5整除2的结果(2)转换成实型(2.0)*/ 注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a 只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。,11,二、 赋值运算表达式,(1)赋值运算 赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。 赋值运算符的一般形式为: 变量 = 表达式 例如,x =
7、 5 y = (float)5 / 2 如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。 思考题:假设变量num的数据类型为float,其值为2.5,则执行“num = (int)num”后,num的值等于多少?,12,(2)复合赋值运算 复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。 复合赋值运算的一般格式为: 变量 双目运算符= 表达式 复合赋值运算符 它等价于:变量 = 变量 双目运算符 (表达式)。 当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。 例如,x +=
8、3 /* 等价于x=x+3 */ y *= x + 6/* 等价于y=y*(x+6),而不是y=y*x+6 */ C语言规定的复合赋值运算符如下: +=,-=,*=,/=,%=; /*复合算术运算符(5个)*/,13,三、 C语言特有的运算和运算符,自增(+)、自减(-)运算 1.作用 自增运算使单个变量的值增,自减运算使单个变量的值减。 2.用法与运算规则 自增、自减运算符都有两种用法: (1)前置运算运算符放在变量之前: 变量、变量 先使变量的值增(或减),然后再以变化后的值参与其它运算,即先增减、后运算。 (2)后置运算运算符放在变量之后: 变量、变量 变量先参与其它运算,然后再使变量的
9、值增(或减),即先运算、后增减。,14,案例3.13 自增、自减运算符的用法与运算规则示例。 /*程序功能:自增、自减运算符的用法与运算规则示例*/ #include stdio.h int main( ) int x=6, y; printf(x=%dn,x); /*输出x的初值*/ y = +x; /*前置运算*/ printf(y=+x: x=%d,y=%dn,x,y); y = x-; /*后置运算*/ printf(y=x-: x=%d,y=%dn,x,y); return 0; 程序运行结果: x=6 y=+x: x=7,y=7 y=x-: x=6,y=7,15,思考题:如果将案例
10、“y=+x;”语句中的前置运算改为后置(y=x+;),“y=x-;”语句中的后置运算改为前置(y=-x;),程序运行结果会如何? 说明 (1)自增、自减运算,常用于循环语句中,使循环控制变量加(或减)。 (2)自增、自减运算符,不能用于常量和表达式。 例如,5+、-(a+b)等都是非法的。 (3)在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。 P42 例3.3,16,在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。 在顺序结构程序中,一般包括以下几个部分: 1程序开头的编译预处理命令。 在程序中要使用标准函数(又称
11、库函数),需将相应的头文件包含进来。 2顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括: (1)变量类型的说明。 (2)提供数据语句。-输入 (3)运算处理部分。-处理 (4)输出结果部分。-输出,顺序结构程序设计,17,案例3.15 输入任意三个整数,求它们的和及平均值。/*功能:设计一个顺序结构程序,求三个整数的和及平均值。*/ #include stdio.h int main( ) int num1,num2,num3,sum; float aver; printf(Please input three numbers:); scanf(%d,%d,%d, ,思考题:
12、能否将“aver=sum/3.0;”中“3.0”改为“3”?,18,案例3.16 求方程ax2+bx+c=0的实数根。a,b,c由键盘输入,a0且b2-4ac0。 P53 3(3) #include math.h /*为使用求平方根函数sqrt(),包含math.h头文件 */ #include stdio.h int main( ) float a,b,c,disc,x1,x2; printf(Input a, b, c: ); scanf(%f%f%f, ,19,例:3.6 例:3.9 练习 从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的ASCII码值。 程序运行情况如下:
13、 Input a lowercase letter: a a,97 A,65,20,#include stdio.h int main( ) char c1,c2; printf(Input a lowercase letter: ); c1=getchar( ); printf(%c,%dn,c1,c1); c2=c1-32; /*将小写字母转换成对应的大写字母*/ printf(%c,%dn,c2,c2); return 0; ,21,改错题: 1.分析下列程序中的错误并改正: #include stdio.h; int main( ) / * main function * / floa
14、t r, s; /* /*r is radius*/,/*s is area*/*/ r=5.0 ; s=14159*r*r ; printf(%fn,s),22,2.指出下列程序中的错误并改正: #include stdio.h int main( ) /* main function*/ float a, b, c, v; a=2.0;b=0,c=4.0 v=a*b*c; printf(%fn, v) return 0; ,23,3.分析程序运行结果: #include stdio.h int main( ) int a=3,b=5; a=b; b=a; printf(a=%d,b=%dn
15、,a,b); return 0; ,要交换两个变量的值,怎么办?-变量交换法 例3.6 练习:修改本例,交换a,b变量的值,24,4.计算 的值。初学者可能很容易就写出了下面程序: #include stdio.h #include math.h int main ( ) printf(%fn, sin(1) + sin(1/2) + sin(1/3) + sin (1/4) + sin(1/5) + sin(1/6) + sin(1/7) + sin(1/8) + sin(1/9) + sin(1/10) ); return 0; 此后发现这个程序可以正常通过编译,但执行时却得不到正确结果。
16、也就是说,这个程序有语义错误。为什么呢?数据类型。,25,5.分析下列程序的运行结果(35.c): #include stdio.h int main( ) int x,y,z; x=y=z=3; y=x+-1; printf( %dt%dt ,x,y); y=+x-1; printf( %dt%dt ,x,y); y=z-+1; printf( %dt%dt ,z,y); y=-z+1; printf( %dt%dt ,z,y); return 0; ,26,6.分析下列程序的运行结果: #include stdio.h int main( ) int x=5678,a,b,c,d; a=x/1000; printf( %dt ,a); b=x/100%10; printf( %dt ,b); c=x/10%10; printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 杜甫常见试题与对应答案
- 饮食习惯:5个可操作步骤
- 宁夏吴忠三中学2027届数学九年级第一学期期末综合测试模拟试题含解析
- 2027届浙江省杭州市西湖区杭州外国语学校数学八上期末复习检测试题含解析
- 2026年专业技术人员公需科目突发事件应急处理考模拟试题库(含答案)
- 2026年福建农业职业技术学院教师招聘考试模拟题及答案详解
- 2026年敦煌舞模拟题答案及答案详解
- 2026年pmp考试模拟题及答案详解
- 2026年中国微电机市场分析及投资战略研究预测可行性报告
- 2026年10月质量管理体系QMS审核员模拟题及答案详解
- 互联网护理服务培训
- 《电机与电气控制技术》电子教案
- 弱电设计规范强条
- 《铁路劳动安全》高职铁道类专业安全教育培训全套教学课件
- 物业月度工作总结及下月计划
- 诺贝尔生理学或医学奖史话(华中师范大学)知到智慧树章节答案
- 2024-2025学年湖南省长沙市长郡教育集团七年级(上)月考数学试卷(10月份)(含答案)
- 路基,桥梁,涵洞,隧道工程施工组织方案
- (高清版)DZT 0350-2020 矿产资源规划图示图例
- 2019版新人教版高中英语必修+选择性必修共7册词汇表汇总(带音标)
- 气管切开非机械通气病人气道护理课件
评论
0/150
提交评论