您的当前位置:首页正文

c++第六章作业

2020-08-12 来源:意榕旅游网


第六章

6-1 数组A[10][5][15]一共有多少个元素?

解: 10×5×15 = 750 个元素

6-2在数组a[20]中第一个元素和最后一个元素是哪一个?

解:第一个元素是a[0],最后一个元素是a[19]。

6-3 用一条语句定义一个有五个元素的int型数组,并依次赋予1~5的初值。

解:源程序: int IntegerArray[5] = { 1, 2, 3, 4, 5 };或:int IntegerArray[] = { 1, 2, 3, 4, 5 };

6-4 已知有一个数组名叫oneArray,用一条语句求出其元素的个数。

解:源程序: nArrayLength = sizeof(oneArray) / sizeof(oneArray[0]);

6-5 用一条语句定义一个有5×3个元素的二维int型数组,并依次赋予1~15的初值。

解:源程序: int theArray[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };或:int theArray[5][3] = { {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12},{13,14,15} };

6-6 运算符*和&的作用是什么?

解: *称为指针运算符,是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符,也是一个一元操作符,是用来得到一个对象的地址。

6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别?

解:指针是一种数据类型,具有指针类型的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。

6-8 定义一个整型指针,用new语句为其分配包含10个整型元素的地址空间。

解:源程序: int *pInteger = new int[10];

6-9 在字符串”Hello,world!”中结束符是什么?

解: 是NULL字符。

6-10 声明一个有5个元素的整型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。

6-11 引用和指针有何区别?何时只能使用指针而不能使用引用?

解: 引用是一个别名,不能为NULL值,不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。

6-12 声明下列指针:float类型变量的指针pFloat,char类型的指针pstr和struct Customer型的指针pcus。

6-13 给定float类型的指针fp,写出显示fp所指向的值的输出流语句。

解: cout << \"Value == \" << *fp;

6-14 程序中定义一个double类型变量的指针。分别显示指针占了多少字节和指针所指的变量占了多少字节。

解: double *counter;

cout << \"\\nSize of pointer == \"sizeof(counter);

cout << '\\nSize of addressed value == \"<6-15 const int * p1 和 int * const p2的区别是什么?

解: const int * p1 声明了一个指向整型常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;int * const p2声明了一个指针型常量,用于存放整型变量的地址,这个指针一旦初始化后,就不能被重新赋值了。

6-16 声明一个int型变量a,一个int型指针p,一个引用r,通过p把a的值改为10,通过r把a的值改为5

解: void main()

{int a; int *p = &a; int &r = a; *p = 10; r = 5}

6-17 下列程序有何问题,请仔细体会使用指针时应避免出现这个的问题。

#include

int main()

{int *p; *pInt = 9; cout << \"The value at p: \" << *p; return 0; }

解: 指针p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。

6-18 下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。#include

int Fn1();

int main()

{int a = Fn1();cout << \"the value of a is: \" << a; return 0; }

int Fn1()

{int * p = new int (5); return *p; }

解: 此程序中给*p分配的内存没有被释放掉。改正: #include

int* Fn1();

int main()

{int *a = Fn1();cout << \"the value of a is: \" << *a; delete a; return 0; }

int* Fn1()

{int * p = new int (5); return p;

}

6-19 声明一个参数为int型,返回值为long型的函数指针;声明类A的一个成员函数指针,其参数为int型,返回值long型。

解: long (* p_fn1)(int);

long ( A::*p_fn2)(int);

6-20 实现一个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。

6-21 编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入、输出。

6-22 编写函数void reverse(string &s),用递归算法是字符串s倒序。

6-23 设学生人数N=8,提示用户输入N个人的考试成绩,然后计算出平均成绩,显示出来。

6-24 基于char*设计一个字符串类Mystring ,并且具有构造函数、析构函数、拷贝构造函数,重载运算符+、=、+=、[],尽可能地完善它,使之能满足各种需要。(运算符重载功能为选做,参见第8章)

6-25 编写一个3×3矩阵转置的函数,在main()函数中输入数据

6-26 编写一个矩阵转置的函数,矩阵的维数在程序中由用户输入。

6-27 定义一个Employee类,其中包括表示姓名、地址、城市和邮编等属性,包括setName()和display()等函数。display()使用cout语句显示姓名、地址、城市和邮编等属性,函数setName()改变对象的姓名属性,实现并测试这个类。

6-28 分别将例6-10程序和6-16程序中对指针的所有使用都改写为与之等价的引用形式,比较修改前后的程序,体会在哪些情况下使用指针更好,哪些情况下使用引用更好。

6-29 运行下面的程序,观察执行结果,指出该程序是如何通过指针造成安全性隐患的,思考如何避免这种情况的发生。

#include

Using namespace std;

Int main()

{

Itn arr[]={1,2,3};

Double*p=reinterpret_cast(&arr[0]);

*p=5;

Cout<Return 0;

}

6-30 static_cast,const_cast和reinterpret_cast各自应在哪些情况下使用?

因篇幅问题不能全部显示,请点此查看更多更全内容