第六篇习题答案.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章 指针和引用 6.1 你觉得以下程序将显示什么结果?实际运行以下程序,观察并解释为什么出现这样的结果。 #include iostreamusing namespace std void main() { int va1=100; int *pva1=va1; int *pva2; coutpva1 *pva1endl; coutpva2 *pva2endl; } 答案: 屏幕先显示指针pva1 的值和指针所指向的整型数:“0x0012FF7C 100”。 然后出现错误信息:“应用程序错误 0x004010a0指令引用的0xcccccccc内存。该内存不 能为read。” 原因:指针pva2 没有初始化,其中的地址值0xcccccccc 属于内存中不可以访问的区域。因 此,出现运行错误。 6.2 以下程序在VC 环境下编译运行时,出现什么结果? #include iostreamusing namespace std void main() { int vi=53; int* iPtr=vi; float* fPtr=vi; iPtr=fPtr; cout vi endl iPtr: iPtr = *iPtr endl fPtr: fPtr = *fPtr endl endl; } 答案: 程序在编译时出现两个错误,分别在第6 行和第7 行。 第6 行的错误信息是:“error C2440: initializing : cannot convert from int * to float * Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast” 第7 行的错误信息是:“error C2440: = : cannot convert from float * to int * Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast” 错误性质都是指针类型的不一致和不能自动转换。 此习题说明:不同类型的指针是不能互相赋值的。 6.3 从键盘输入三个整型数va、vb、vc,通过一个指向整型的指针iptr,输出三个数中的最大值。 编写相应的程序。 答案: 参考程序如下: #include iostream using namespace std; void main() { int va,vb,vc; int* iptr; cinvavbvc; if(vavb) iptr=va; else iptr=vb; if(vc*iptr) iptr=vc; coutThe largest number is *iptrendl; } 6.4 以下程序中调用了4 次strcpy 函数,请问哪些调用在运行时会出现错误?为什么? #include iostream using namespace std #include cstring void main() { char *s1 = String01; char *s2 = String02; char s3[ ]=String03; char s4[ ]=String04; strcpy( s1, s2 ); couts1endl; strcpy( s3, s4 ); couts3endl; strcpy( s3, s2 ); couts3endl; strcpy( s1, s4 ); couts1endl; } 答案: 程序可以通过编译,没有编译错误。 但是在运行时会出现运行错误:“0指令引用的0x0042f040 内存。该内存不能为 written。” 错误是在调用函数strcpy( s1, s2 )时出现的。因为s1 是用字符串常量来初始化的,不可以通 过copy 来改变常量的内容,也就是不可以written。 由于程序已经中止,另外一处运行错误就没有显示。实际上在调用函数strcpy( s1, s4 )也会 看到类似错误,原因也是相同的。 6.5 编写一个函数get_average 整型数组元素的平均值。要求这个函数既可以用来求一维数组元 素的平均值,也可以求二维数组元素的平均值。编程实现这个函数。并且在main 函数中通过具 体的一维数组Array_1D 和二维数组Array_2D,测试这个函数。 答案: 相应的函数和测试程序如下: #include iostream using namespace std; float GetAverage

文档评论(0)

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

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

1亿VIP精品文档

相关文档