版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C语言的运算符和表达式C语言程序设计(基于CDIO思想)本章介绍算术运算符和算术表达式、赋值运算符和赋值表达式及与赋值相关的运算符(复合的赋值运算符、自增1、自减1运算符)以及其他运算符,从而进一步提高顺序结构程序的设计能力。2主要内容12赋值运算符、复合的赋值运算符3自增1(自减1)运算符、类型转换4算术运算符和算术表达式逗号运算符、容量运算符3
2.1计算a/b和a%b的值(算术运算)
1.1.1分析与设计
注意:如果两个操作数a、b的值都是整型,结果也是整型;“%”是取余运算,要求两个操作数必须是整型。如:7%3的值为1,3%7的值为3,而3.5%7是非法的。
例2_1求a/b和a%b的值#include"stdio.h"main(){inta,b;
printf("a,b=?");scanf("%d,%d",&a,&b);printf("a/b=%d\n",a/b);printf("a%%b=%d\n",a%b);}程序运行结果:a,b=?3,5a/b=0a%b=3从键盘输入a、b变量的值,求a/b和a%b的值。
研究式学习—C程序设计(第一章)4
2.1.2运算符与表达式
1.运算符的功能:即它对数据做什么操作2.运算符对运算对象有一定的限制3.表达式值的类型4.运算符的优先级5.结合方向两个同优先级的运算符相邻时,是按从左到右的顺序运算(左结合),还是按从右到左的顺序运算(右结合),C语言运算符的结合性大多数是左结合的,有一小部分是右结合的。C程序设计|第一章运算符是表示某种运算的符号,是对数据的操作表达式是用运算符和括号将运算对象连接起来的符合C语言语法规则的式子运算对象可以是常量、变量、函数等优先级和结合性:优先级是指表达式中各计算的先后次序;结合性是指当一个运算对象两侧的运算符的优先级相同时进行运算的结合方向运算符及表达式C程序设计|第一章算术运算符有:单目运算符:-(负)、+(正),右结合双目运算符:+、-、*、/(整数相除结果取整)、%(取余)优先级:先乘除(含取余),后加减,括号优先结合性:同级从左至右写出以下面算术表达式的优先级和结合性:
a*b/c-1.5+’a’
a/b/c*(3-d)要求%两侧均为整形数据算术运算符C程序设计|第一章用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子。例如:25/4等于6,25.0/4.0等于6.255/10等于0,5.0/10.0等于0.54%9=4-15%4=-3(%只能对整型数据操作)乘号不能省略,且要根据运算顺序书写,如:数学表达式
a(b2+4ac) (a+b)÷cdC表达式a*(b*b+4*a*c)(a+b)/c/d或(a+b)/(c*d)算术表达式C程序设计|第一章main(){inti=3;floatr=2.0;printf("2*-i:%d\n",2*-i);printf(“r/i:%f\n”,r/i);printf("r/i:%d\n",r/i);i=r/i;printf("i=r/i:%d\n",i);i=2%3;printf("2%%3:%d",i);}程序执行结果:2*-i:-6r/i:0.666667r/i:21845i=r/i:0
2%3:2
算术运算举例92.1.4实战演练
1.编程序计算数学表达式:b2-4ac,a,b,c的值从键盘输入。2.
编程序计算298秒是几分几秒。提示:设intx=298;再定义两个变量存放分(m)、秒(s)值;则:m=x/60;s=x%60;3.从键盘输入一个三位数,求各位数字之和。例如,输入的三位数为358,则输出结果为3+5+8=16。提示:题目的关键是要求出该数的个、十、百位上的数字,可利用C语言整数相除,结果仍为整数的特点。若设该数为data,它的个、十、百位为g、s、b,则b=data/100;s=(data-b*100)/10;g=data%10C程序设计|第一章2.2.1分析与设计例2.3:交换a,b变量的值
main(){inta=3,b=5,t;
t=a;a=b;b=t;
printf(“a=%d,b=%d\n”,a,b);}2.2交换a,b变量的值(赋值运算)C程序设计|第一章由赋值运算符“=”将变量和表达式连接起来的式子。其形式是:
<变量>=<表达式>赋值表达式表达式值各变量值a=55a=b=c=55a,b,c均为5a=5+(c=6)
11a为11,c为6a=(b=4)+(c=6)10a为10,b为4,c为6a=(b=10)/(c=2)5a为5,b为10,c为2赋值运算符及表达式C程序设计|第一章2.2.3复合的赋值运算符C语言中有10种复合赋值运算符:
+=、-=、*=、/=、%=、
<<=、>>=、&=、^=、|=(位运算符以后讲)实例:a/=3等价于a=a/3
x*=y+8等价于x=x*(y+8)a+=a-=a*a相当于a=a+(a=a-a*a)y%=8等价于y=y%8赋值语句的格式:赋值表达式;赋值表达式可以包含在其它表达式中,而赋值语句不能,如:if((a=b)>0)t=a;C程序设计|第一章例2_4复合赋值运算符的应用main(){intx,y;x=3;y=8;x*=y+1;printf("x=%d,y=%d\n",x,y);x=3;y=8;x=x*y+1;printf("x=%d,y=%d\n",x,y);}程序执行结果:x=27,y=8x=25,y=8赋值运算举例C程序设计|第一章++(自增),--(自减):++n,--m前缀,变量的值+(-)1n++,m--后缀,变量的值+(-)1优先级:高于双目运算结合性:同级从右至左
j=3;
k=++j;→j=j+1;k=j;即j的为4,k的值为4
k=j++;→k=j;j=j+1;
即j的为4,k的值为3
自增、自减运算说明:对于j变量,j++和++j都使j的值加1,但k的值就不同了,所以前缀和后缀运算对变量是一样的,对表达式的值就不一样C程序设计|第一章自增、自减举例例2_5自增1运算,前后缀区别#include"stdio.h"main(){intx,y;x=5;y=x++;printf("x=5,y=x++:%d,x=%d\n",y,x);x=5;y=++x;printf("x=5,y=++x:%d,x=%d\n",y,x);}运行结果:x=5,y=x++:5,x=6x=5,y=++x:6,x=616
2.2.5实战演练
1.用赋值语句表达:a的值为2,b的值比a多2,c的值比b的值多2,并输出a,b,c的结果。请编出完整程序验证。2.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请先填空,再编出完整程序验证。a+=_________;(a为a、b之和)b=a-__________;a-=___________;
2.3计算存款n年后的本利之和(类型转换等运算)
设银行定期存款的年利率r为2.25%,并已知存款期为n年,存款本金为m元,编程计算n年后的本利之和2.3.1分析与设计根据题意算法步骤为:step1:定义变量;step2:输入算法所需要的数据r,n,m;step3:进行运算和数据处理:本利之和=m*(1+r)step4:输出运算结果数据。172.3计算存款n年后的本利之和(类型转换等运算例2_6计算存款n年后的本利之和#include"stdio.h"#include"math.h"main(){intn,m;floatr=0.0225,total;printf("Pleaseentern,m:");scanf("%d,%d",&n,&m);total=m*pow(1+r,n);printf("Total=%f\n",total);}18程序运行结果:Pleaseentern,m:3,1000Total=1069.030143C程序设计|第一章自动转换:当参加算术运算的数据类型不一致时低级向高级转换;赋值运算符两边的数据类型不同时,将右侧表达式的值转换为左侧变量的类型强制转换:强迫变量或表达式的值转换为某一特定类型。常用在自动类型转换不能达到目的时。转换格式为:(类型说明符)变量(类型说明符)(表达式)(double)a,(int)(x+y),(float)(5%3)2.3.2类型转换转换不会改变变量定义时所规定的数据类型C程序设计|第一章“=”两侧类型不一致时,要将“=”右侧表达式的值转换为“=”左侧变量的类型,右侧表达式类型的字节超过变量类型的字节时会出错整←实:截掉小数部分实←整:数值不变,存为浮点整←char:整型低8位←char整型←(字节数相同的)unsigned整型:原样送入。若超过整型表示范围会出错。unsigned←(字节数相同的)非unsigned整型:原样送入,符号位也作为数值赋值时的类型转换C程序设计|第一章逗号表达式的格式:表达式1,表达式2,…,表达式n逗号表达式的求解顺序及结果:先求解表达式1,再求解表达式2,…,最后求解表达式n;逗号表达式的最终结果为表达式n的值。实例:a=3*5,a*4
最终结果为60x=(a=10,b=100,c=50)最终结果为50y=(i++,j--,k+2)最终结果为k+22.3.3逗号运算和逗号表达式用于了解一个变量或某种类型的量在内存中所占的字节数。它有以下两种用法:sizeof(表达式)
例如:intx=1;
floaty=5.0;printf(“%d”,sizeof(x+y));
结果为:8sizeof(类型名)例如:
printf(“%d”,sizeof(shortint))结果为:22.3.4容量运算符sizeof例2_7测定基本数据类型所占的字节数#include"stdio.h"main(){printf("char:%3dbyte\n",sizeof(char));printf("short:%3dbyte\n",sizeof(short));printf("int:%3dbyte\n",sizeof(int));printf("long:%3dbyte\n",sizeof(long));printf("unsigned:%3dbyte\n",sizeof(unsigned));printf("float:%3dbyte\n",sizeof(float));printf("double:%3dbyte\n",sizeof(double));printf("longdouble:%3dbyte\n",sizeof(longdouble));}2.3.4容量运算符sizeofC提供了6个用于位操作的运算符。这些运算符只能作用于整数分量,即有符号或无符号的char,short,int和long类型1.按位与(&)运算位运算就是参加运算的两个数按二进制位参加运算,如“与”运算是两个参加运算的二进制位都是1,结果值是1,只要有一个运算数是0,结果是0。例如3&4为:
00000011(3)(&)00000100(4)
00000000(0)2.3.5位运算符2.按位或(|)运算按位或运算符用于对一个数据的某些位置1。如x是一个整数(16位),要将低8位全置为1,高8位保留原样,可以这样运算:x|0377,0377是8进制数,转换成二进制后,低8位全为1,和x或运算后,x的低8位也为1。3.按位异或(^)运算:同则0,异则1。异或运算可以使特定位翻转,如要使01111010的低4位翻转,可与(00001111)进行异或运算,即:
01111010(^)00001111011101012.3.5位运算符4.按位左移(<<)运算左移运算用来将一个数的各二进制位左移若干位,左移一位相当于这个数乘2,如x<<2用于将x的值左移2位,右边空出的2位用零填充。这个表达式的结果等
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物理物态变化课程设计
- 2024年中国剥毛辊齿条市场调查研究报告
- 2025至2030年中国铬酸铯行业投资前景及策略咨询研究报告
- 2025版车位租赁合同补充条款18篇
- 福州课程设计招聘
- 2025至2030年中国立体声电容话筒行业投资前景及策略咨询研究报告
- 2025至2030年中国暗装吊顶分体式空调行业投资前景及策略咨询研究报告
- 盐浴炉课程设计
- 2025至2030年中国指纹识别门禁机行业投资前景及策略咨询研究报告
- 电池片课程设计
- 汽车电子技术专业职业生涯规划书
- 奢侈品线下实体店的店面布局与动线设计
- 采购设备检验验收单
- 公司领导班子设置方案
- 为铜制剂正名-冠菌铜® 产品课件-9-7
- 具有磁场保鲜装置的制冷设备的制作方法
- 2020牛津译林版新教材高中英语必修一单词表(带音标)
- 年出栏500头优质肉牛建设项目实施方案
- 2022职业学校学生实习管理规定
- 2023年湖南省农村信用社(农村商业银行)招聘员工笔试参考题库附答案解析
- 七年级上英语知识梳理(牛津上海版)U1-U4
评论
0/150
提交评论