第7章C++习题课.ppt_第1页
第7章C++习题课.ppt_第2页
第7章C++习题课.ppt_第3页
第7章C++习题课.ppt_第4页
第7章C++习题课.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章 习题课 1 有关指针的说法中 是错误的 A 赋予一个指针变量的值只能是一个在有效范围内的地址B 只有先定义一个基本类型的变量 然后才能定义指向该变量的指针C 一个指针变量的值可以是NULLD 对指针变量可以进行关系运算和逻辑运算2 对于函数voidcount intw int x int y 以下叙述正确的是 A 定义函数时 参数表中出现 符是非法的B 带有 符的虚参在函数中被分配静态内存单元C 对于带有 符的虚参 其变量值在函数中不能被修改D 使用多个带有 符的虚参 通过对应的实参可以将多个变量值传回上层调用函数 B D 3 下列关于指针的操作中 错误的是 A 两个同类型的指针可以进行比较运算B 可以用一个空指针值赋给某个指针变量C 一个指针可以加上两个整数之差D 两个同类型的指针可以相加4 设有如下定义 intdata 32767 int pd float fp 则以下是正确的 A pd D A 5 在用new运算符建立一个三维数组15 30 10时 使用了3个下标运算符 与之对应 用delete运算符注销这个三维数组时使用了个下标运算符 A 1B 2C 3D 06 设有说明intb 4 4 以下不能等价元素b 3 3 的是 A b 3 3 B b 3 3 C B 3 3 D b 3 3 A B 7 设有以下说明语句 inta 4 3 1 2 3 4 5 6 7 8 9 10 11 12 int prt 3 a p a 0 能够正确表示数组元素a 1 2 的表达式是 A prt 1 2 B p 5 C prt 1 2D a 1 2 8 有关内存分配的说法中 是错误的 A 指针变量可以保存动态分配的存储空间B 用new为指针变量分配的存储空间在堆区C 数据元素存储在堆区的数组在建立时就被初始化 清零 D 指向静态变量的指针不必用delete释放 D C 9 设有如下的函数定义intf char s if s return0 elsereturn1 f s 1 若在主程序中用下面的语句调用上述函数 则输出为 cout f goodbye endl A 1B 6C 8D 0 C 10 若有以下的说明和语句 intt 3 2 pt 3 k for k 0 k 3 k pt k t k 则数组元素pt 2 表示 A t数组第2行的行指针 指向第2行B t数组第2行的元素地址 指向第2行0列C t数组的第2个元素D t数组第2行第0个元素 B 1 设有定义 inta 3 4 p 4 p a 则请列出3种用指针p表示a 2 3 的方法 答 1 p 2 3 p 2 3 p 2 3 2 若有函数声明intfun int f floata charb intn 则函数调用时实参和形参之间的传递方式是什么 第一个参数的属性是什么 按什么方式传递 第二个参数按什么方式传递 答 传地址和传值 第一个参数是指向型如函数 int float char 的指针 按地址传递的方式传递 第二个参数按值传递 3 使用new运算符为变量或对象分配存储空间和为数组分配存储空间 方法上有何不同 而在使用delete运算符释放内存 方法又有何不同 答 用new分配数组空间时 需要用 指明数组的大小 delete运算符释放内存时 如果是数组空间 需要用delete 的形式 4 阅读以下程序 回答问题 includevoidmain char p BOOL OPK H SP inti for i 3 i 0 i i cout p i Acout endl 问题一 变量p是什么数据类型问题二 表达式 p i 等效于A B中的哪一个A P i B p i 问题三 当i值为3时 如果执行语句cout p i 输出结果是什么问题四 程序输出是什么问题五 当将A行语句改为 cout p i 后 输出结果是什么 答 本题印刷有误 应为for i 3 i 0 i i 一 变量p是指针数组 二 B三 L四 SO五 LO 5 设有以下说明 请根据说明语句的顺序回答以下问题 constfloata 1 float问题一 以上正确的说明语句是 问题二 含有正确表示引用类型说明的语句是 问题三 正确的常量说明语句是 答 一 1 3 4 5 7二 3 4三 1 5 7 三 阅读程序 回答问题1 写出以下程序的输出 includevoidmain inta 6 10 20 30 40 50 60 inti 5 p 答 p 6060 50 40 30 20 20 30 40 50 60 p 30 2 写出执行下面程序的输出结果 includeinttake int a int b intn void g int int inti 0 j n 1 ints 0 while i n s a i i b s g b 4 returni j voidpt1 int w intn cout sum w endl voidpt2 int w intn for intj 0 j n 1 j cout w j cout w n 1 endl voidmain intaa 3 4 3 9 6 12 8 4 7 15 4 5 2 10 inttt 6 inti p void f int w intn pt1 p tt for i 0 i 9 i tt i 0 for i 0 i 3 i take aa i p 2 i 4 f f pt2 p tt f p 3 p tt 4 f p 3 答 将程序中for i 0 i 9 i 改为for i 0 i 6 i 则输出为 Sum 30Sum 34Sum 21 30 0 3421 0 3 1 主函数调用sort 函数 将一组无序数排列成降序 然后输出这组数 提示 排序过程需要两层循环 函数利用递归算法来实现外层循环 includevoidsort int x 1 intj t if 2 return for j 1 j n j if x 0 x j t x 0 x 0 x j x j t sort 3 n 1 voidmain inta 12 5 3 7 4 2 9 8 32 54 21 6 43 k sort 4 12 for k 0 k 12 k cout a k t cout endl 答 intn n 1 x 1 a 2 下面程序的功能是 主函数定义了一个整型数组data 从键盘上输入一个数x 调用函数fsum 判断该数X是否在数组data中 如果x在数组中 则得到x在data中第一次出现时的下标值p 同时求出下标从0到P之间所有元素之和 函数返回X的下标值p 否则 x不在数组中 函数fsum 返回 1 主函数提示相应信息 主函数输出计算结果 请完善之 iincludeintfs int a intn intx int sum sum 0 for inti 0 i n i sum 9 if x a i 10 return 1 voidmain intdata 12 31 16 28 7 29 35 18 40 intx s index cout x index fs 11 if 12 cout x 不在数组中 endl else cout 13 是数组中下标为 index 的元素 cout 数组中前 14 项之和为 s endl return 答 sum a i returni data sizeof data 4 x s或data 9 x s index 1 data index 或x index 1 1 编写程序 输入2个字符串分别存入两个一维字符数组 将其连接后存入第3个一维字符数组后输出 要求用指向一维数组的指针变量来处理其中的字符 不能使用字符串函数strcat include includevoidcatlog char s1 char s2 char s3 while s3 s1 s3 while s3 s2 voidmain chars1 Iamastudent chars2 Youareateacher intn strlen s1 strlen s2 1 char p newchar n catlog s1 s2 p cout p endl delete p 2 设计一个通用的插入排序函数 参数为指向实型的指针 指向一个已经排序的数组 和一个实数 将该实数插入到已经排好序的数组中 使得插入后数组仍然有序 主函数输入一个数组和一个实数 调用插入排序函数插入实数 并输出插入后的数组 includevoidinsert float else p1 newfloat n for inti n 2 i 0 i if x p i for intj 0 j i j p1 j p j p1 i 1 x for j i 2 j n j p1 j p j 1 delete p p p1 return for i 1 i n i p1 i p i 1 p1 0 x delete p p p1 return voidmain float p floatx intn 0 cout x while x 1 n insert p x n cout x for intj 0 j n j cout p j endl delete p 3 编写程序 输入一个由纯字母组成的字符串 统计其中26个字母出现的次数 统计时 假定不区分大小写 即A和a被认为是同一个字母 若一个字母出现的次数大于0次 则输出其统计次数 例如 输人字符串 Banana 则输出 a 3b 1n 2 includevoidmain intnum 26 0 charstr 100 cin str inti 0 while str i if str i 97 str i 32 num str i 97 i for i 0 i 26 i if num i cout char i 97 num i endl 4 本章7 11 1节所创建的是无序链表 现要求在其基础上添加一个函数 对无序链表按学号升序排序 排序后的链表仍然用head指向 答 本排序算法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论