C++第六章课后习题文档格式.docx

上传人:b****6 文档编号:18871621 上传时间:2023-01-01 格式:DOCX 页数:18 大小:20.20KB
下载 相关 举报
C++第六章课后习题文档格式.docx_第1页
第1页 / 共18页
C++第六章课后习题文档格式.docx_第2页
第2页 / 共18页
C++第六章课后习题文档格式.docx_第3页
第3页 / 共18页
C++第六章课后习题文档格式.docx_第4页
第4页 / 共18页
C++第六章课后习题文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C++第六章课后习题文档格式.docx

《C++第六章课后习题文档格式.docx》由会员分享,可在线阅读,更多相关《C++第六章课后习题文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

C++第六章课后习题文档格式.docx

{

cout<

<

"

ValueformyArray["

]:

;

cin>

>

myArray[i];

}

:

myArray[i]<

endl;

return0;

}

6-11引用和指针有何区别?

何时只能使用指针而不能使用引用?

引用是一个别名,不能为NULL值,不能被重新分配;

指针是一个存放地址的变量。

当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。

6-12声明下列指针:

float类型变量的指针pfloat,char类型的指针pstr、structCustomer型的指针pcus。

float*pfloat;

Char*pstr;

Structcustomer*pcus;

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

cout<

”Value==”<

*fp;

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

double*counter;

\nSizeofpointer=="

sizeof(counter);

nSizeofaddressedvalue=="

sizeof(*counter);

return0;

}

6-15constint*p1和int*constp2的区别是什么?

constint*p1声明了一个指向整形常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;

int*constp2声明了一个指针型常量,用于存放整形变量的地址,这个指针一旦初始化后,就不能被重新赋值。

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

inta;

int*p=&

a;

int&

r=a;

*p=10;

r=5;

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

#include<

intmain(){

int*p;

*p=9;

cout<

"

Thevalueatp:

<

*p;

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

6-18下列程序有何问题,请改正;

仔细体会使用指针时应避免出现的这个问题。

intfn1(){

int*p=newint(5);

return*p;

intmain(){

inta=fn1();

cout<

thevalueofais:

a;

int*fn1();

int*a=fn1();

cout<

deletea;

int*fn1(){

int*p=newint(5);

returnp;

6-19声明一个参数为int型,返回值为long型的函数指针;

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

long(*p_fn1)(int);

Long(A:

*p_fn2)(int);

6-20实现一个名为SimpleCircle的简单圆类,其数据成员int*itsRadius为一个指向其半径值的指针,存放其半径值。

设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。

classSimpleCircle

{

public:

SimpleCircle();

SimpleCircle(int);

SimpleCircle(constSimpleCircle&

);

~SimpleCircle(){}

voidsetRadius(int);

intgetRadius()const;

private:

int*itsRadius;

};

SimpleCircle:

SimpleCircle()

itsRadius=newint(5);

SimpleCircle(intRadius)

itsRadius=newint(Radius);

SimpleCircle(constSimpleCircle&

rhs)

intval=();

itsRadius=newint(val);

intSimpleCircle:

getRadius()const

return*itsRadius;

SimpleCircleCircleOne,CircleTwo(9);

CircleOne:

()<

CircleTwo:

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

cstdio>

intcount(char*str)

inti,num=0;

str[i];

if((str[i]>

='

a'

str[i]<

z'

)||(str[i]>

A'

Z'

))

num++;

returnnum;

chartext[100];

输入一个英语句子:

gets(text);

这个句子里有"

count(text)<

个字母。

6-22编写函数voidreverse(string&

s),用递归算法使字符串s倒序。

string>

stringreverse(string&

str){

if()>

1){

stringsub=(1,()-2);

return()-1,1)+reverse(sub)+(0,1);

}else

returnstr;

stringstr;

输入一个字符串:

cin>

str;

原字符串为:

str<

倒序反转后为:

reverse(str)<

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

#defineN8

floatgrades[N];

floattotal,average;

N;

Entergrade#"

(i+1)<

grades[i];

total=0;

total+=grades[i];

average=total/N;

\nAveragegrade:

average<

6-24基于char*设计一个字符串类MyString,并且具有构造函数、析构函数、复制构造函数,重载运算符“+”、“=”、“+=”、“[]”,尽可能完善它,使之能满足各种需要。

(运算符重载功能为选做,参见第8章)

classMyString{

MyString();

MyString(constchar*const);

MyString(constMyString&

~MyString();

char&

operator[](unsignedshortoffset);

charoperator[](unsignedshortoffset)const;

MyStringoperator+(constMyString&

voidoperator+=(constMyString&

MyString&

operator=(constMyString&

unsignedshortgetLen()const{

returnitsLen;

constchar*getMyString()const{

returnitsMyString;

MyString(unsignedshort);

char*itsMyString;

unsignedshortitsLen;

MyString:

MyString(){

itsMyString=newchar[1];

itsMyString[0]='

\0'

itsLen=0;

MyString(unsignedshortlen){

itsMyString=newchar[itsLen+1];

for(unsignedshorti=0;

=len;

itsMyString[i]='

itsLen=len;

MyString(constchar*constcMyString){

itsLen=strlen(cMyString);

itsMyString=newchar[itsLen+1];

for(unsignedshorti=0;

itsLen;

itsMyString[i]=cMyString[i];

itsMyString[itsLen]='

MyString(constMyString&

rhs){

itsLen=();

itsMyString=newchar[itsLen+1];

itsMyString[i]=rhs[i];

~MyString(){

delete[]itsMyString;

MyString&

if(this==&

rhs)

return*this;

return*this;

char&

operator[](unsignedshortoffset){

if(offset>

itsLen)

returnitsMyString[itsLen-1];

else

returnitsMyString[offset];

charMyString:

operator[](unsignedshortoffset)const

MyStringMyString:

operator+(constMyString&

unsignedshorttotalLen=itsLen+();

MyStringtemp(totalLen);

unsignedshorti=0;

temp[i]=itsMyString[i];

for(unsignedshortj=0;

j<

();

j++,i++)

temp[i]=rhs[j];

temp[totalLen]='

returntemp;

voidMyString:

operator+=(constMyString&

unsignedshortrhsLen=();

unsignedshorttotalLen=itsLen+rhsLen;

MyStringtemp(totalLen);

for(unsignedshortj=0;

temp[i]=rhs[i-itsLen];

*this=temp;

MyStrings1("

initialtest"

S1:

\t"

char*temp="

HelloWorld"

s1=temp;

chartempTwo[20];

strcpy(tempTwo,"

nicetobehere!

s1+=tempTwo;

tempTwo:

tempTwo<

S1[4]:

s1[4]<

s1[4]='

x'

S1[999]:

s1[999]<

MyStrings2("

Anothermystring"

MyStrings3;

s3=s1+s2;

S3:

MyStrings4;

s4="

whydoesthiswork?

S4:

6-25编写一个3×

3矩阵转置的函数,在main()函数中输入数据。

voidmove(inta[3][3])

inti,j,k;

3;

for(j=0;

j++)

{

k=a[i][j];

a[i][j]=a[j][i];

a[j][i]=k;

}

inti,j;

intdata[3][3];

输入矩阵的元素"

cout<

第"

i+1<

行第"

j+1<

个元素为:

cin>

data[i][j];

输入的矩阵为:

for(i=0;

i++){

for(j=0;

cout<

data[i][j]<

move(data);

转置后的矩阵为:

for(j=0;

return0;

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

voidmove(int*a,intn)

n;

k=*(a+i*n+j);

*(a+i*n+j)=*(a+j*n+i);

*(a+j*n+i)=k;

intn,i,j;

int*p;

请输入矩阵的行、列数:

p=newint[n*n];

p[i*n+j];

p[i*n+j]<

move(p,n);

6-27定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性,包括setName()和display()等函数;

display()使用cout语句显示姓名、地址、城市和邮编等属性,函数setName()改变对象的姓名属性,实现并测试这个类。

classEmployee

charname[30];

charstreet[30];

charcity[18];

charzip[6];

Employee(char*n,char*str,char*ct,char*z);

voidsetName(char*n);

voiddisplay();

Employee:

Employee(char*n,char*str,char*ct,char*z)

strcpy(name,n);

strcpy(street,str);

strcpy(city,ct);

strcpy(zip,z);

voidEmployee:

setName(char*n)

voidEmployee:

display(){

name<

street<

city<

zip;

Employeee1("

逗逼"

"

马勒戈壁3号"

葫芦岛"

042800"

("

傻逼"

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

6-10

voidsplitFloat(flo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1