C++C++基础上机实验02.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CC基础上机实验02

C++实验二解答 分析下列程序的输出结果 (1) #includeiostream using namespace std; int main() { int a,e,c=7,d(4); a=123+3.2e2-3.6/6-6/8; double b; b=123+3.2e2-3.6/6-6/8; e=c++d; couta,b,c,d,eendl; return0; } 输出结果为: 442,442.4,6,5,2 分析:本题主要考虑不同数据类型混合运算时的类型转换和自增自减运算: (1)两个int型数据做算术运算,其结果仍为int,因此有:6/8=0 (2)两个不同类型数据混合运算,则低类型数据自动转换为高类型数据之后 才进行运算,因此有:3.6/6=3.6/6.0=0.6 因此:123+3.2e2-3.6/6-6/8=123+320-0.6-0=442.4赋值给int型变量 a,因此a=442,而同样的表达式赋值给double型变量b,因此b=442.4 (3)表达式中变量的自增和自减运算会影响表达式中使用变量前和使用变量 后的值,简单地说,前置自增(自减)运算会对变量自增(自减),再使用变量的值 再表达式中,后置自增(自减)会先在表达式中使用变量的值计算,再使变量自 增( 自减)。因此,e=c++d=(c--)-(++d)对变量c,其自减是后置,因 此,先使用变量c的值计算,再为c自减1,而对于变量d,其自增是前置, 因此,先使其自增,再用于表达式中,该式的运算顺序如下: d=d+1; //d自增后值为5 e=c-d;//7-5=2 c=c-1; //c自减后值为6 若将b=123+3.2e2-3.6/6-6/8;改为b=123+3.2e2-3.6/6-6.0/8;则b的值如何 变化,为什么? 分析:123+3.2e2-3.6/6-6.0/8=123+320-3.6/6.0-6.0/8.0=123+320- 0.6-0.75=441.65,因为6/8=0而6.0/8=6.0/8.0=0.75 再将程序中下列语句:e=c++d;修改为e=--c-++d;这是e,c,d的值各为多 少?与原来的值相同吗?为什么? 分析:根据前面的分析,该式的运算顺序如下: c=c-1; //c自减后值为6 d=d+1; //d自增后值为5 e=c-d; //6-5=1 (2) #includeiostream int main() { int age; age=20; std::coutagestd::endl; std::coutagestd::endl; return0; } 程序的输出结果是什么?请简单说明。 结果为: age 20 分析:cout的作用是输出表达式的值,coutage,该表达式age是一个 字符串字面值常量表达式,其值为字符串字面值,即字符串age,而age是 一个int型变量,因此对于coutage,该表达式是一个变量表达式,其值为 int型变量age的值,即整数20 (3) #includeiostream int main() { int i=5,j=4,k; k=ij?++i:++j; std::couti,j,kstd::endl; k=i-j?i+j:i+j?i:j; std::couti,j,kstd::endl; return0; } 输出结果是: 5,5,5 5,5,5 分析: 每一个表达式都有值,对于三元运算符表达式: (表达式1)?(表达式2):(表达式3) 如果表达式1的值为true(即非0值),则整个三元运算符表达式的值为表达 式2的值,否则,为表达式3的值。因为:对于第一个k的赋值表达式,ij 为false,因此:该表达式的值为表达式3的值,即: k=++j; 运算之后,j=5,k=5; 对于第二个k的赋值表达式,i-j=5-5=0,在C++中,0值即为f

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档