C++第三单元复习题答案.docx

上传人:b****5 文档编号:7266010 上传时间:2023-01-22 格式:DOCX 页数:14 大小:18.09KB
下载 相关 举报
C++第三单元复习题答案.docx_第1页
第1页 / 共14页
C++第三单元复习题答案.docx_第2页
第2页 / 共14页
C++第三单元复习题答案.docx_第3页
第3页 / 共14页
C++第三单元复习题答案.docx_第4页
第4页 / 共14页
C++第三单元复习题答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C++第三单元复习题答案.docx

《C++第三单元复习题答案.docx》由会员分享,可在线阅读,更多相关《C++第三单元复习题答案.docx(14页珍藏版)》请在冰豆网上搜索。

C++第三单元复习题答案.docx

C++第三单元复习题答案

Num1:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

有一个数组,内放10个整数,要求找出最小的数和它的下标,

然后把它和数组中最前面的元素对换。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

voidmain()

{

inta[10];

inti,min,j,temp;//min为最小值,j为最小值下标

cout<<"请输入10个数\n";

for(i=0;i<10;i++)

cin>>a[i];

/**********Program**********/

min=a[0];

j=0;

for(i=1;i<10;i++)

if(a[i]

temp=a[0];

a[0]=min;

a[j]=temp;

cout<<"交换后数组\n";

for(i=0;i<10;i++)

cout<

cout<

/**********End**********/

}

Num2:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

定义一个函数min,求数组(34,91,83,56,29,93,56,12,88,72)中的

最小数和其下标,并在主函数中打印最小数和下标。

格式:

intmin(int*s,intn)

注意:

如有多个最小值,以最后一个为准。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

usingnamespacestd;

/**********Program**********/

intmin(int*s,intn){

intmin=*s,j=0;

for(inti=0;i

if(*(s+i)

returnj;}

/**********End**********/

voidmain(void)

{

intpos;

ints[10]={34,12,83,56,29,93,56,12,88,72};

pos=min(s,10);

cout<<"最小值="<

cout<<"位置="<

}

Num3:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

定义一商品类,包括商品名称、数量,单价,总价值数据成员,及相关函数成员,类已定义完成,

请完成相关函数成员的定义,使其能按要求输入输出相关信息。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

usingnamespacestd;

classCGoods{

private:

charName[21];

intAmount;

doubleTotal_value;

floatPrice;

public:

voidRegisterGoods(char[],int,float);//输入数据

voidCountTotal();//计算商品总价值

char*GetName();//读取商品名

intGetAmount();//读取商品数量

floatGetPrice();//读取商品单价

floatGetTotal_value();//读取商品总价值

};

/**********Program**********/

voidCGoods:

:

RegisterGoods(charN[],intn,floatp){

strcpy(Name,N);

Amount=n;

Price=p;}

voidCGoods:

:

CountTotal(){Total_value=Amount*Price;}

char*CGoods:

:

GetName(){

returnName;}

intCGoods:

:

GetAmount(){returnAmount;}

floatCGoods:

:

GetPrice(){returnPrice;}

floatCGoods:

:

GetTotal_value(){returnTotal_value;}

/**********End**********/

voidmain()

{CGoodscar;

charstr[21];

intnum;

floatprice;

cin>>str>>num>>price;

car.RegisterGoods(str,num,price);

car.CountTotal();

cout<<"商品信息如下:

"<

cout<<"商品名称:

"<

cout<<"商品数量:

"<

cout<<"商品价格:

"<

cout<<"商品总金额:

"<

}

Num4:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

输入一个16进制数,将其转换为10进制数

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

voidmain()

{

chardata16[4]="A7";

intdata10=0,d;

inti;

/**********Program**********/

for(i=0;data16[i];i++){

if(data16[i]=='')break;

elseif(data16[i]>='0'&&data16[i]<='9')data10=data10*16+data16[i]-'0';

elseif(data16[i]>='a'&&data16[i]<='f')data10=data10*16+data16[i]-'a'+10;

elseif(data16[i]>='A'&&data16[i]<='F')data10=data10*16+data16[i]-'A'+10;

elsecout<<"非法十六进制数!

"<

/**********End**********/

cout<

}

Num5:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

有n个数,已按由小到大顺序排列好,要求输入一个数,把它插入到原有数列中,

而且仍然保持有序,同时输出新的数列。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

voidmain()

{

inti,n,j;

inta[11]={10,20,30,40,50,60,70,80,90,100};

for(i=0;i<10;i++)

cout<

cout<

cout<<"输入插入数\n";

cin>>n;

/**********Program**********/

if(n

for(j=10;j>0;j--)

a[j]=a[j-1];

a[0]=n;}

elseif(n>a[9])a[10]=n;

else

for(i=0;i<10;i++){

if(n>a[i]&&n<=a[i+1]){

for(j=10;j>i+1;j--)

a[j]=a[j-1];

a[i+1]=n;}

}

cout<<"插入后的数组\n";

for(i=0;i<11;i++)

cout<

cout<

或者:

intb[11];

for(i=0,j=0;n>=a[i]&&a[i]!

=0;i++)

{b[j]=a[i];

j++;}

b[j]=n;

for(i=j;a[i]!

='\0';i++)

b[i+1]=a[i];

cout<<"插入后的数组\n";

for(i=0;i<11;i++)

cout<

cout<

/**********End**********/

}

Num6:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:

将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

例如,但score数组的数据为10、20、30、40、50、60、70、80、90时,

函数返回的人数应该时4,below中的数据应为10、20、30、40。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

usingnamespacestd;

/**********Program**********/

intchoose(intscore[],intm,intbelow[]){

inti,k=0;

floatsum=0,aver=0;

for(i=0;i

sum+=score[i];

aver=(float)sum/m;

for(i=0;i

if(score[i]

{

below[k]=score[i];

k++;

}

return(--k);

}

满分答案:

intchoose(int*s,intn,int*b){

floatt=0,avg;

inti,j=0;

for(i=0;i

avg=t/n;

for(i=0;i

returnj;}

/**********End**********/

voidmain(void)

{

constintN=10;

intscore[N]={10,20,30,40,50,60,70,80,90};

intbelow[N]={-1,-1,-1,-1,-1,-1,-1,-1,-1};

intnumber,i;

number=choose(score,N,below);

cout<<"低于平均分的人数="<

cout<<"低于平均分的分数=";

for(i=0;i

cout<

}

Num7:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

定义一个人员类Person,包含一个字符数组name[12],

一个表示助学金allowance(double)的数据成员,二个分别获取姓名和助学金的

成员函数getName和getAllowance,还包含构造函数、复制构造函数和设置姓名

和助学金的函数set。

请补充完成Person类。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

classPerson

{

charname[12];

doubleallowance;

public:

Person(char*n,doublea);

Person(Person&p);

char*getName(void);

doublegetAllowance(void);

voidset(char*n,doublea);

};

/**********Program**********/

char*Person:

:

getName(void){returnname;}

doublePerson:

:

getAllowance(void){returnallowance;}

voidPerson:

:

set(char*n,doublea){

strcpy(name,n);allowance=a;}

Person:

:

Person(char*n,doublea){

strcpy(name,n);allowance=a;}

Person:

:

Person(Person&p){

strcpy(name,p.name);allowance=p.allowance;

}

/**********End**********/

voiddisplay(Personp)

{

cout<<"姓名="<

cout<<"助学金="<

}

voidmain(void)

{

Persons1("王海",310);

Persons2=s1;

s2.set("张大山",200);

display(s1);

display(s2);

}

Num8:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

输入一个字符串,把其中的字符按逆序输出,如输入light,输出thgil.

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

voidmain()

{

charc,str[]="light";

inti,length;

/**********Program**********/

for(i=0,length=0;str[i]!

='\0';i++)

length++;

for(i=length;i>(length/2);i--)

{c=str[i];

str[i]=str[length-i-1];

str[length-i-1]=c;}

/**********End**********/

cout<

}

Num9:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

编写程序求解M*M矩阵的两条对角线上的元素之和。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

usingnamespacestd;

constintM=5;

voidmain(void)

{

intminor;//次对角线上元素之和

intleading;//主对角线上元素之和

inta[M][M]={

{1,2,3,4,5},

{6,7,8,9,10},

{11,12,13,14,15},

{16,17,18,19,20},

{21,22,23,24,25}

};

/**********Program**********/

inti;

leading=0;

minor=0;

for(i=0;i<5;i++)

leading+=a[i][i];

for(i=0;i<5;i++)

minor+=a[i][M-i-1];

/**********End**********/

cout<<"主对角线上元素之和="<

cout<<"次对角线上元素之和="<

}

Num10:

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:

定义一个描述学生基本情况的类,数据成员包括姓名、学号、C++成绩、英语和数学成绩,

成员函数包括输出数据,求出总成绩和平均成绩。

请完成相关函数成员的定义,使其能按要求输入输出相关信息。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

classStudent{

private:

charname[20];

intid;

intcpp_source;

inteng_source;

intmath_source;

public:

Student(char*,int,int,int,int);

voidsum_source();

voidavg_source();

};

doublemain(){

Students("John",1,90,80,97);

s.sum_source();

s.avg_source();

return0;

}

/**********Program**********/

Student:

:

Student(char*p,inti,intc,inte,intm):

id(i),cpp_source(c),eng_source(e),math_source(m){strcpy(name,p);}

/**********End**********/

voidStudent:

:

sum_source(){

cout<

"<

}

voidStudent:

:

avg_source(){

doubleavg;

avg=(cpp_source+eng_source+math_source)/3.0;

cout<<"Theavgofsource:

"<

}

Num11:

Num12:

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

当前位置:首页 > 工程科技 > 建筑土木

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

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