收藏 分销(赏)

实验2 数据类型、运算符和表达式.doc

上传人:xrp****65 文档编号:5964071 上传时间:2024-11-24 格式:DOC 页数:6 大小:64KB 下载积分:10 金币
下载 相关 举报
实验2 数据类型、运算符和表达式.doc_第1页
第1页 / 共6页
实验2 数据类型、运算符和表达式.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
实验2 数据类型、运算符和表达式 一、实验目的和要求 1.掌握常量的表示法【字符和字符串常量、短整型、整型和长整型、实数(float)和双精度实数(double)】。 2.掌握各种类型变量的说明及初始化。 3.掌握各种运算符和各类表达式 (1)算术运算、逻辑运算、关系运算、++和 ――运算、三目条件运算符; (2)运算符的优先级、结合规则和目数的概念; (3)类型的自动转换和强制类型转换; (4)表达式的组成、左值和赋值,逻辑表达式的求值优化。 二、实验准备 知识点: 1.数据类型 C++提供了十分丰富的数据类型,除基本类型外,还提供了 。基本数据类型中包括字符型,可用 表示,占用 字节;整型,可用 表示,占用 字节;实型,可用 表示,占用 字节;双精度型,可用 表示,占用 字节;无值型,可用 表示,占用 字节。 2.标识符的命名规则 标识符命名应以 开始,由 组成,长度 。 3.常量 (1)常量可分为 、 、 、 和 。 (2)十进制整数常量以 开头;八进制整数常量以 开头,由 组成;十六进制整数常量以 开头,由 组成;长整型数以 结尾;无符号整型数以 结尾;无符号长整型数以 结尾。 (3)指数形式的实型常量要求在E或e前 ,且在E或e之后的指数部分 。 (4)字符常量是以 括起来的 个字符。转义序列以 开始,后跟一个 或一个 的办法来表示一个字符。若转义字符后是一个整型常量,它必须是 和 进制,且其对应的十进制取值范围必须在 之间,该八进制数以 开头,也可以不以 开头,而 进制数必须以 开头。‘\t’表示 ;‘\n’表示 ;‘\\’表示 ; (5)字符串常量是以 括起来的 个字符;字符串常量与字符常量的存放格式的区别是 。 (6)标识符常量可用两种方法定义标识符常量:一种是使用 ,另一种是利用常量说明语句 。 4.变量 变量要求 在前, 在后;变量说明语句可以出现 ,同一变量只能作 次定义性说明;首次引用变量时,变量必须有一个 ;对变量赋初值的三种方法: 、 和通过输入流cin对变量赋初值。 5.运算符与表达式 (1)算术运算 C++中的算术运算符有两个单目运算符(只有一个操作数的运算符): 和 ;五个双目运算符(有两个操作数的运算符):+(加)、―(减)、*(乘)、/(除)和 。 (2)关系运算 C++提供六种关系运算符:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、= =(等于)、!=(不等于)。前面4种(>,<,>=,<=)优先级相同,后两种(==,!=)优先级相同,前4种高于后两种。结合性都为右结合。关系运算符是完成两个操作数的比较运算,即比较两个操作数的数值大小。运算的结果为一整数,当关系成立时,其运算结果为 ;当关系不成立时,其运算结果为整数 。 关系运算的结果 参与表达式的运算。 (3)逻辑运算 C++中提供三种逻辑运算符:逻辑非(!)、逻辑与(&&)和逻辑或(||);第一个运算符是单目运算,后两转者是双目运算符。在计算过程中,要注意&&的优先级低于!优先级,但高于||的优先级。!为左结合,而其它两个为右结合。逻辑运算要注意逻辑表达式的副作用:对于a&&b&&c,只有a为 时,才需要计算b的值,因为当a为 时,不管后面的项如何,都能得到该表达式的值就为0。同样只有在a和b都为 的情况下才需要计算c的值。;对于a||b||c,只要a为 ,就不需要判断b和c的值,而只有当a、b都为 时才需要计算c项。 (4)赋值运算 C++中赋值运算符分为两种:单一赋值运算符(=)和复合赋值运算符(+=, –=, *=, /=, %=, &=, ^=, |=, <<=, >>= ),都为双目运算符,结合性为左结合,其运算法则为:将左操作数与右操作数进行相应的运算,再将结果赋给左操作数。对于赋值运算符,其左操作数必须为 。 (5)sizeof()运算符 sizeof()运算符是用来计算 ,它为单目运算符。该运算符与其它类型的基本运算符稍有不同,它的操作数必须在括号内,其使用格式为: sizeof(<类型>) 或sizeof(<表达式>) (6)自增、自减运算 自增运算符“++”和自减运算符“--”都具有两种形式,且它们都是单目运算符,操作数必须为变量,一般是整型变量,但也可以是实型或字符型变量。 ++i (前置自增: ) i++ (后置自增: ) --i (前置自减: ) i-- (后置自减: ) (7)逗号运算 逗号运算符的优先级为所有运算符中最低的,结合性为右结合。逗号表达式的一般形式为: <表达式1>,<表达式2>, … , < 表达式n> 其运算顺序为按从左到右的顺序依次求出各表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。 (8)条件运算 条件运算符“? :”为三目运算符,要求有三个操作对象,使用格式为: <表达式1> ? <表达式2> : <表达式3> 计算过程为:先计算<表达式1>,若其值不等于0,则计算<表达式2>,并将计算的值作为该条件表达式的值;否则求解<表达式3>的值,并将该值作为条件表达式的值。 其优先级高于赋值和逗号运算,左结合。 (9)常用运算符的优先级 高 !++ —— 负号 算术运算 关系运算 逻辑运算 条件运算 赋值运算(含复合赋值) 低 逗号运算 (10)类型转换 在求表达式值的过程中,对于双目运算符,通常会出现两个操作数的类型不一致的情形,这时就要求将这两个操作数转换为同一类型,然后再进行运算。可以分为三种情况的转换: 不同类型数据的混合运算、赋值时的类型转换和强制类型转换,分别要注意这三种情况的数据类型的转换。 练习题 1.下列定义变量和常量的方法中指出哪些是错误的,如何修改? (1)const k=10; (2)int i.j;int i=10; (3)#define pp=3.14 (4)const int j; 答:(1) (2) (3) (4) 2.下列符号中,哪些是合法的标识符? Abs3 3block a+b _else Class sum for my_class fun(4) a-b 答:(1)合法的有 (2)不合法的有 3.设有如下的变量说明: int a=2,b=3,c=9; float x=2.3,y=4.5,z=6.0; char cha1=’a’,ch2=’b’; 请计算以下表达式及各变量的值: (1)sizeof(a+3.4) (2)x++ +ch1 (3)!a--&&a>b||x (4)a=a+2,b++,c=b+d (5)a+=b*=c+ch1 答: 1 2 3 4 5 4.设有如下的变量说明: int m=3,n=9,k=15; int a=0,b=0,c=0; 请计算以下表达式及各变量的值: (1)a=m>n && ++k (2)a+=m<=n && !n++ && k++ (3)a=n>=k&&b++||++c (4)a*=m<n||++b && (c=4) (5)a=m+++n (6)a=m++ + ++n (7)a=m*k+n*k++ (8)a=++m*k+m 1 2 3 4 5 6 7 8 5.用C++表达式描述下列命题: (1) a大于b且b大于c;答: (2) a大于b或大于c; 答: (3) a大于b且小于c; 答: (4) a不能被b整除; 答: 6.C++关系表达式中的关系成立时,则该关系表达式的值为 7.int x=-5,y;cout <<(x>0?1:x<0?-1:0);输出的结果为 。 程序分析 1.在数学式中,变量x和y的取值为整数,而变量a和b的取值为实数,在C++程序中对应的正确表达式是 A.3/5*x*y/a/b B. 3*x*y/5/a/b C. 3*x*y/5*a*b D. 3/a/b/5*x*y 答案为:D。注意整数和整数相除得到的结果仍为整数。要保证表达式的值为实数,必须使第一个除法运算其中一个操作数为实数。 2.设有四个常数:①4e0.5,②‘\87’,③0x5a,④“\””,其中符合C++语法规则的常量是 A.②③ B.②④ C.③④ D.①② 答案为:C。其中①式指数部分必须是整数,②转义字符序列中八进制值只允许出现数字0-7。所以只有③和④是合法的。 3.设有说明 “int x=5,y=7,z=8;”,执行表达式 “z+=x++||y++||++z”后,则x、y、z的值分别为 A.6、7、9 B. 6、8、10 C. 6、8、8 D. 6、8、1 答案为:A。按照逻辑或(||)运算的优化,只有当左操作数值为0时才计算右操作数的值。表达式中涉及了自增、逻辑和赋值三种运算,按照优先级首先计算自增运算x++,取出x的值5参加运算,然后x自增1为6;所以第一个自增表达式的值为5,就不再计算后面的两个自增表达式了,直接得到整个逻辑表达式的值为1,通过复合赋值操作赋给z,所以z的值为9。 4.设有语句 “int a=258,b; unsigned char c; b=c=a; “,则b的值是 。 a为整型数,占用4个字节的存储空间,在系统中存储为00000000 00000000 00000001 00000010,c为无符号的字符型,占用一个字节的内存空间。将变量a的值赋给变量c, 只能将a的低8位赋给变量c,所以c的值为00000010,转化为十进制数为2。再将c的值赋给变量b,所以b的值为2。 5.设有语句 “char s[]= “Rep\0Ch”;int m=sizeof(s);”,则m的值是 。 答案为:7。 sizeof()运算符是用来用来计算某种类型或数据所占用的字节数,s所占用的字节数由字符中所含字符的个数加上字符串的结束标记,所以m的值是7。 6.设有四个常数:①4e0.5,②‘\87’,③0x5a,④“\””,其中符合C++语法规则的常量是 A.②③ B.②④ C.③④ D.①② 答案为:C。其中①式指数部分必须是整数,②转义字符序列中八进制值只允许出现数字0-7。所以只有③和④是合法的。 7.能用作用户自定义的标识符为 A.friend B. –var C. 3Xyz- D. Float 答案为:D。按照标识符的命名规则,选项(A)为关键字,选项(B)以短横线开始,选项(C)中含有短横线。由于在C++中是严格区分大小写的,所以 “Float” 和 “float”是两个不同的符号,float是关键字,而Float则是合法的标识符。 三、实验内容 1.有如下程序: #include <iostream.h> void main(void){ int a=1,b=3,c=2; int sum; sum=a1+b+c cout<<"a="<<a<<"\tb="<<b<<"\tc="<<c<<"\tsum="<<sum<<endl; } 请回答以下问题: ①编译上述程序后,在“output”输出窗口显示有 行错误; ②第一行的错误信息为 ;可翻译成 ;因此,针对该错误提示,我们应将第 行语句修改为 。 ③第二行的错误信息为 ;可翻译成 ;因此,针对该错误提示,我们应将第 行语句修改为 。 ④上述两步完成后再编译,则在输出窗口显示的信息为 。 ⑤该程序运行的结果是 ⑥针对上述错误,我们得出的结论是 2.有如下程序: #include <iostream.h> void main(void){ sum=a+b; int a=1,b=3,c; int c=a+b+sum; cout<<"a="<<a<<"\tb="<<b<<"\tsum="<<sum<<endl; } 请回答以下问题: ①编译上述程序后,在“output”输出窗口显示有 行错误; ②第一行的错误信息为 ;可翻译成 ;第二行的错误信息为 ;可翻译成 ;第三行的错误信息为 ;可翻译成 ;因此,针对上述错误提示,我们应这样修改: ③第四行的错误信息为 ;可翻译成 ;因此,针对该错误提示,我们应将第 行语句修改为 。 ④该程序运行的结果是 ⑤针对上述错误,我们得出的结论是 3.有如下程序: #include <iostream.h> void mian(void){ int a,b,t; cin>>a>>b; t=a*b; cout<<"a="<<a<<'\t'<<"b="<<b<<"\t="<<t<<endl; } 请回答以下问题: ①编译上述程序后,在“output”输出窗口显示有 行错误;该错误信息为 ;可翻译成 ;因此,针对该错误提示,我们可这样修改: 。 ②该程序运行的结果是 ③针对该错误,我们得出的结论是 4.有如下程序: #include <iostream.h> void main(void){ int a=1,b=3,c; c+1=a+b; cout<<"c="<<c<<endl; } 请回答以下问题: ①编译上述程序后,在“output”输出窗口显示有 行错误;该错误信息为 ;可翻译成 ;因此,针对该错误提示,我们可这样修改: 。 ②该程序运行的结果是 ③针对该错误,我们得出的结论是 6
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服