C++.docx
《C++.docx》由会员分享,可在线阅读,更多相关《C++.docx(25页珍藏版)》请在冰豆网上搜索。
C++
ProblemA:
重载函数:
max
TimeLimit:
1Sec MemoryLimit:
128MB
Submit:
2926 Solved:
2256
[Submit][Status][WebBoard]
Description
编写两个名为max的函数,它们是重载函数,用于求两个整数或实数的最大值。
它们的原型分别是:
intmax(inta,intb);
doublemax(doublea,doubleb);
返回值是a和b的最大值。
Input
输入4个数,前两个数是int类型的整数,后2个数是double类型的实数。
Output
输出2个数,每个数占一行。
第一个数对应于输入的两个整数的最大值,第二个数对应于输入的两个实数的最大值。
SampleInput
121.41.3
SampleOutput
21.4
HINT
AppendCode
append.cc,
#include
usingnamespacestd;
intmax(inta,intb)
{
returna>b?
a:
b;
}
doublemax(doublea,doubleb)
{
returna>b?
a:
b;
}
intmain()
{
inta,b;
doublec,d;
cin>>a>>b;
cout<cin>>c>>d;
cout<return0;
}
ProblemB:
默认参数:
求圆面积
TimeLimit:
1Sec MemoryLimit:
128MB
Submit:
2684 Solved:
2124
[Submit][Status][WebBoard]
Description
编写一个带默认值的函数,用于求圆面积。
其原型为:
doublearea(doubler=1.0);
当调用函数时指定参数r,则求半径为r的圆的面积;否则求半径为1的圆面积。
其中,PI取值3.14。
Input
一个实数,是圆的半径。
Output
输出有2行。
第一行是以输入数值为半径的圆面积,第二行是半径为1的圆面积。
SampleInput
19
SampleOutput
1133.543.14
HINT
AppendCode
append.cc,
#include
usingnamespacestd;
doublearea(doubler=1.0)
{
return3.14*r*r;
}
intmain()
{
doubler;
cin>>r;
cout<
cout<
return0;
}
ProblemC:
求(x-y+z)*2
TimeLimit:
1Sec MemoryLimit:
128MB
Submit:
1988 Solved:
1677
[Submit][Status][WebBoard]
Description
编写一个程序,求解以下三个函数:
f(x,y,z)=2*(x-y+z)
f(x,y) =2*(x-y)
f(x) =2*(x-1)
函数调用格式见append.cc。
append.cc中已给出main()函数。
Input
输入的测试数据为多组。
每组测试数据的第一个数是n(1<=n<=3),表示后面有n个整数。
当n为3时,后跟3个输入为x,y,z;
当n为2时,后跟2个输入为x,y;
当n为1时,后跟1个输入为x;
当n为0时,表示输入结束
输入的n不会有其他取值。
所有运算都不会超出int类型范围。
Output
每组测试数据对应一个输出。
输出x-y+z的值。
SampleInput
3121384523911173
SampleOutput
25656144
HINT
AppendCode
append.cc,
#include
usingnamespacestd;
intf(intx,inty,intz)
{
return2*(x-y+z);
}
intf(intx,inty)
{
return2*(x-y);
}
intf(intx)
{
return2*(x-1);
}
intmain()
{
intn,x,y,z;
while(cin>>n)
{
if(n==3)
{
cin>>x>>y>>z;
cout<}
if(n==2)
{
cin>>x>>y;
cout<}
if(n==1)
{
cin>>x;
cout<}
if(n==0)
break;
}
}
ProblemD:
编写函数:
Swap(I)(AppendCode)
TimeLimit:
1Sec MemoryLimit:
16MB
Submit:
7178 Solved:
5079
[Submit][Status][WebBoard]
Description
编写用来交换两个数的函数,使得“AppendCode”中的main()函数能正确运行。
-----------------------------------------------------------------------------
用C实现三个函数int_swap()、dbl_swap()、SWAP(),其中SWAP()是个带参宏。
用C++实现两个函数,都以swap()命名。
以上函数的调用格式见“AppendCode”。
这里不给出函数原型,它们的参数请通过main()函数自行确定。
Input
输入为4行,每行2个数。
Output
输出为4行,每行2个数。
每行输出的两数为每行输入的逆序。
SampleInput
12579-3-12435
SampleOutput
5712-394-1253
HINT
“AppendCode”中用到的头文件、全局变量或宏的定义应自行补充。
AppendCode
append.c, append.cc,
#include
usingnamespacestd;
voidswap(int*x1,int*y1)
{
intt;
t=*x1;
*x1=*y1;
*y1=t;
}
voidswap(double*x2,double*y2)
{
doublet1;
t1=*x2;
*x2=*y2;
*y2=t1;
}
intmain()
{
intx1,y1;
cin>>x1>>y1;
swap(&x1,&y1);
cout<cin>>x1>>y1;
swap(x1,y1);
cout<doublex2,y2;
cin>>x2>>y2;
swap(&x2,&y2);
cout<cin>>x2>>y2;
swap(x2,y2);
cout<}
ProblemE:
编写函数:
三个数的最大最小值(AppendCode)
TimeLimit:
1Sec MemoryLimit:
2MB
Submit:
5131 Solved:
3346
[Submit][Status][WebBoard]
Description
给出三个数a,b,c,最大值是?
最小值是?
-----------------------------------------------------------------------------
编写以下两个函数:
get_num()的功能是读取输入的三个整数a,b,c;
max_min()的功能是求出a,b,c的最大值和最小值。
以上函数的调用格式见“AppendCode”。
这里不给出函数原型,请通过main()函数自行确定。
Input
输入的第一个整数n,表示有n组测试数据,每组3个整数:
a,b,c。
a,b,c都在int类型范围内。
Output
每组测试数据对应输出一行:
为a,b,c的最大值和最小值,格式见sample。
SampleInput
5201510101520100100001-1000
SampleOutput
case1:
20,10case2:
20,10case3:
100,0case4:
1,-1case5:
0,0
HINT
AppendCode
append.c, append.cc,
#include
usingnamespacestd;
intget_num(int&a,int&b,int&c)
{
cin>>a>>b>>c;
}
intmax_min(int&mmax,int&mmin,int&a,int&b,int&c)
{
if(a>b)
mmax=a;
else
mmax=b;
if(mmaxmmax=c;
if(a>b)
mmin=b;
else
mmin=a;
if(mmin>c)
mmin=c;
returnmmax,mmin;
}
intmain()
{
intcases;
intmmax,mmin,a,b,c;
cin>>cases;
for(inti=1;i<=cases;++i)
{
get_num(a,b,c);
max_min(mmax,mmin,a,b,c);
cout<<"case"<
"<}
}
ProblemF:
平面上的点——Point类(I)
TimeLimit:
1Sec MemoryLimit:
4MB
Submit:
6823 Solved:
2994
[Submit][Status][WebBoard]
Description
在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定。
现在我们封装一个“Point类”来实现平面上的点的操作。
根据“append.cc”,完成Point类的构造方法和show()方法。
接口描述:
Point:
:
show()方法:
按输出格式输出Point对象。
Input
输入多行,每行为一组坐标“x,y”,表示点的x坐标和y坐标,x和y的值都在double数据范围内。
Output
输出为多行,每行为一个点,X坐标在前,Y坐标在后,Y坐标前面多输出一个空格。
每个坐标的输出精度为最长16位。
输出格式见sample。
C语言的输入输出被禁用。
SampleInput
1,23,32,1
SampleOutput
Point:
(1,2)Point:
(3,3)Point:
(2,1)Point:
(0,0)
HINT
注意精度控制,C语言的输入输出被禁用。
AppendCode
append.cc,
#include
#include
usingnamespacestd;
classPoint
{
private:
doublex,y;
public:
Point(doublexx,doubleyy)
{
x=xx;
y=yy;
}
Point()
{
x=y=0;
}
voidshow()
{
cout<'<<""<<'('<}
};
intmain()
{
charc;
doublea,b;
Pointq;
while(std:
:
cin>>a>>c>>b)
{
Pointp(a,b);
p.show();
}
q.show();
}
ProblemG:
定义一个类——myClass
TimeLimit:
1Sec MemoryLimit:
128MB
Submit:
765 Solved:
567
[Submit][Status][WebBoard]
Description
有如下一个类:
classmyClass
{
private:
intattribute;
public:
myClass(inta=0);
voidsetAttr(inta); //用于修改attribute的值
voidprintInfo(); //用于输出attrubute
};
请实现类的各个成员函数,使其能满足main函数中使用该类的需要。
Input
一个正整数。
Output
三个正整数,每个占一行。
SampleInput
25
SampleOutput
10025
HINT
AppendCode
append.cc,
#include
usingnamespacestd;
classmyClass
{
private:
intattribute;
public:
myClass(inta=0);
voidsetAttr(inta);
voidprintInfo();
};
myClass:
:
myClass(inta)
{
attribute=a;
}
voidmyClass:
:
setAttr(inta)
{
attribute=a;
}
voidmyClass:
:
printInfo()
{
cout<}
intmain()
{
myClassm1(10),m2;
inta;
m1.printInfo();
m2.printInfo();
cin>>a;
m2.setAttr(a);
m2.printInfo();
return0;
}
ProblemH:
时间类的构造和输出
TimeLimit:
4Sec MemoryLimit:
128MB
Submit:
2292 Solved:
1863
[Submit][Status][WebBoard]
Description
封装一个时间类Time,用于时间处理的相关功能,支持以下操作:
1.Time:
:
Time(int,int,int)构造方法:
传递时分秒的三个参数构造对象。
2.Time:
:
showTime()方法:
输出“hh:
mm:
ss”,不足两位的要前面补0。
你设计一个时间类Time,使得main()函数能够正确运行。
函数调用格式见append.cc。
append.cc中已给出main()函数。
Input
输入的第一个整数n,表示有n组测试数据,每组3个整数:
hh,mm,ss,分别表示时、分、秒,其值都在合法的时间范围内。
Output
每组测试数据对应一组输出“hh:
mm:
ss”,不足两位的输出需要前面补0,格式见sample。
SampleInput
5001059591112300235959
SampleOutput
00:
00:
0100:
59:
5901:
01:
0123:
00:
0023:
59:
59
HINT
输出格式用头文件中流操作算子:
setw(w) :
设置数据的输出宽度为w个字符
setfill(c):
设置用字符c作为填充字符
AppendCode
append.cc,
#include
#include
usingnamespacestd;
classTime
{
private:
inth,m,s;
public:
Time(inthh,intmm,intss)
{
h=hh;
m=mm;
s=ss;
}
voidshowTime()
{
cout<(2)<";
cout<(2)<";
cout<(2)<}
};
intmain()
{
intcases;
cin>>cases;
for(inti=1;i<=cases;++i)
{
inthour,minute,second;
cin>>hour>>minute>>second;
Timet(hour,minute,second);
t.showTime();
}
}
ProblemI:
时间类的成员读写
TimeLimit:
4Sec MemoryLimit:
128MB
Submit:
2061 Solved:
1791
[Submit][Status][WebBoard]
Description
封装一个时间类Time,用于时间处理的相关功能,支持以下操作:
1.Time:
:
Time()无参构造方法。
2.成员读函数:
Time:
:
hour() :
返回Time的小时数;
Time:
:
minute():
返回Time的分钟数;
Time:
:
second():
返回Time的秒数。
3.成员写函数:
Time:
:
hour(int) :
传参修改Time的小时数;
Time:
:
minute(int):
传参修改Time的分钟数;
Time:
:
second(int):
传参修改Time的秒数。
你设计一个时间类Time,使得main()函数能够正确运行。
函数调用格式见append.cc。
append.cc中已给出main()函数。
Input
输入的第一个整数n,表示有n组测试数据,每组3个整数:
hh,mm,ss,分别表示时、分、秒,其值都在合法的时间范围内。
Output
每组测试数据对应一组输出“hh:
mm:
ss”,不足两位的输出需要前面补0,格式见sample。
SampleInput
5001059591112300235959
SampleOutput
00:
00:
0100:
59:
5901:
01:
0123:
00:
0023:
59:
59
HINT
输出格式用头文件中流操作算子:
setw(w) :
设置数据的输出宽度为w个字符
setfill(c):
设置用字符c作为填充字符
AppendCode
append.cc,
#include
#include
usingnamespacestd;
classTime
{
private:
inth,m,s;
public:
voidhour(inthh)
{
h=hh;
}
voidminute(intmm)
{
m=mm;
}
voidsecond(intss)
{
s=ss;
}
inthour()
{
returnh;
}
intminute()
{
returnm;
}
intsecond()
{
returns;
}
};
intmain()
{
Timet;
intcases;
cin>>cases;
for(inti=1;i<=cases;++i)
{
inthour,minute,second;
cin>>hour>>minute>>second;
t.hour(hour);
t.minute(minute);
t.second(second);
cout<(2)<";
cout<(2)<";
cout<(2)<}
}