大连海事大学C语言与Windows程序设计道课后题答案.docx
《大连海事大学C语言与Windows程序设计道课后题答案.docx》由会员分享,可在线阅读,更多相关《大连海事大学C语言与Windows程序设计道课后题答案.docx(13页珍藏版)》请在冰豆网上搜索。
大连海事大学C语言与Windows程序设计道课后题答案
大连海事大学C语言与Windows程序设计6道课后题答案
1.
(1)设计具有以下功能的程序:
从键盘上输入10个非负整数,统计并输出最大数和最小数,当输入负数时结束输入。
#include
voidmain()
{
inta,max=-1,min=32767,num=1;
cout<<do{
cin>>a;
if(a<0)break;//输入负数结束输入
if(a>max)max=a;
if(anum++;
}while(a>=0&&num<=10);
if(max>=0)
cout<else
cout<;
}
1.
(2)编程序实现求和:
S=1-1/3+1/5-1/7+……+1/n。
要求:
n17
/1
值在程序运行时从键盘输入。
#include
voidmain()
{
inti,n,sign=1;
floatsum=0.0;
牰湩晴尨请输入n:
);
scanf(%d,&n);
for(i=1;i<=n;i+=2)
{
sum+=sign*(1.0/i);
sign=-sign;
}
printf(\
sum=%f\n,sum);
}
2.设计具有以下功能的程序:
从键盘输入10个整数,然后排序。
(要求:
利用函数调用实现并以数组作为函数的参数)
3.编写几何点(二维平面上)的类Point,包括位置属性(二维坐标x,y),
成员函数包括:
点的位置获取函数GetX()和GetY(),
17
/2
点的位置设置函数SetX()和SetY(),
点的位置移动函数MoveTo()
点的信息打印函数Display()。
voidmain(){Pointp(100,100);
p.Display();
p.MoveTo(200,200);
cout<p.Display();}
程序输出结果如下:
X:
100Y:
100X:
moving…after
Y:
200200
#include
classPoint
{
private:
intX;
intY;
public:
Point(intX,intY)
{
this->X=X;
this->Y=Y;
17
/3
}
Point()
{
this->X=0;
this->Y=0;
}
~Point(){}
intGetX()
{
returnthis->X;
}
intGetY()
{
returnthis->Y;
}
voidSetX(intX)
{
this->X=X;
}
voidSetY(intY)
{
this->Y=Y;
17
/4
}
voidMoveTo(intX,intY)
{
SetX(X);
SetY(Y);
}
voidDisplay()
{
cout<<cout<<}
};
4.编写几何图形圆的类Circle,包括两个属性:
圆心(用上题O。
Point类实现)和半径R中的
成员函数包括:
()圆心位置获取函数GetO
()GetR半径获取函数
()半径位置设置函数SetR
()圆的位置移动函数MoveTo
()SetR圆的半径设置函数
()Display圆的信息打印函数
17
/5
voidmain(){Pointp(100,100);Pointp2(200,200);
Circlec(p,100);c.Display();
c.MoveTo(p2);cout<c.SetR(200);cout<altering
r<Circle:
(100,100),100aftermovingCircle:
(200,200),100
afteralteringrCircle:
(200,200),200
#include
classPoint
{
private:
intX;
intY;
public:
Point(intX,intY)
{
this->X=X;
this->Y=Y;
}
Point()
{
17
/6
this->X=0;
this->Y=0;
}
~Point(){}
intGetX()
{
returnthis->X;
}
intGetY()
{
returnthis->Y;
}
voidSetX(intX)
{
this->X=X;
}
voidSetY(intY)
{
this->Y=Y;
}
voidMoveTo(intX,intY)
{
17
/7
SetX(X);
SetY(Y);
}
/*voidDisplay()
{
cout<<cout<<}
*/
};
/////////////////////////
classCircle
{
private:
PointO;
intR;
public:
Circle(Point&p,intR)
{
O.MoveTo(p.GetX(),p.GetY());
this->R=R;
}
17
/8
~Circle(){}
PointGetO()
{
returnthis->O;
}
intGetR()
{
returnthis->R;
}
voidMoveTo(Point&p)
{
O.MoveTo(p.GetX(),p.GetY());
}
voidSetR(intR)
{
this->R=R;
}
voidDisplay()
{
cout<(<}
17
/9
};
voidmain()
{
Pointp(100,100);
Pointp2(200,200);
Circlec(p,100);
c.Display();
c.MoveTo(p2);
cout<c.Display();
c.SetR(200);
cout<c.Display();
}
5.编写一个有关日期(年、月、日)和时间(时、分、秒)的程序。
该程序建立三个类,其中一个是日期的类Date,一个是时间的类Time,另一个是日期和时间类TimeDate,它是前面两个类为基类的派生类。
17
/10
voidmain()
{
TimeDatedate1,date2(1998,8,12,12,45,10);
date1.SetDate(1998,8,7);
date1.SetTime(10,30,45);
cout<;
date1.GetDT();
cout<;
date1.GetDate();
cout<;
date1.GetTime();
cout<;
date2.GetDT();
}
#include
classDate
{
17
/11
public:
Date(){}
Date(inty,intm,intd){SetDate(y,m,d);}
voidSetDate(inty,intm,intd)
{
Year=y;
Month=m;
Day=d;
}
voidGetDate()
{
cout<}
protected:
intYear,Month,Day;
};
classTime
{
public:
Time(){}
Time(inth,intm,ints){SetTime(h,m,s);}
voidSetTime(inth,intm,ints)
17
/12
{
Hours=h;
Minutes=m;
Seconds=s;
}
voidGetTime()
{
cout<<<}
protected:
intHours,Minutes,Seconds;
};
classTimeDate:
publicDate,publicTime
{
public:
TimeDate(){}
TimeDate(inty,intmo,intd,inth,intmi,int
s):
Date(y,mo,d),Time(h,mi,s){}
voidGetDT()
{
cout<</13
tes<<:
<}
};
voidmain()
{
TimeDatedate1,date2(1998,8,12,12,45,10);
date1.SetDate(1998,8,7);
date1.SetTime(10,30,45);
cout<;
date1.GetDT();
cout<;
date1.GetDate();
cout<;
date1.GetTime();
cout<;
date2.GetDT();
}
6.生成一个Object抽象类,在其中声明doubleCalArea()为纯虚函数,从Object派生出:
Rect类(其中包含成员变量Pointtopleft,Pointbottomright。
其中Point为其子对象)、
17
/14
Circle类(其中包含成员变量Pointcc,doubleradius),实现如下功能
void
main(){Object
*obj[2];obj[0]=new
Rect(Point(0,0),Point(100,200));obj[1]=new
Circle(Point(100,200),100.0);inti;for(i=0;i<2;i++)
{cout<calarea()<#include
#include
#definepi3.1416
classPoint{
public:
Point(inta,intb)
{
x=a;
y=b;
}
intx;
inty;
};
classObject{
public:
virtualdoublecalarea()=0;
17
/15
};
classRect:
publicObject{
Pointtopleft;
Pointbottomright;
public:
Rect(Pointp1,Pointp2):
topleft(p1),bottomright(p2){}
doublecalarea(){
returnfabs((topleft.x-bottomright.x)*(topleft.y-bottomright.y));
}
};
classCircle:
publicObject{
Pointcc;
doubleradius;
public:
Circle(Pointp,doubler):
cc(p),radius(r){}
doublecalarea(){
returnpi*radius*radius;
}
};
voidmain()
17
/16
{
Object*obj[2];
obj[0]=newRect(Point(0,0),Point(100,200));
obj[1]=newCircle(Point(100,200),100.0);
inti;
for(i=0;i<2;i++){
cout<calarea()<}
}
17
/17