C++编程实例文档格式.docx
《C++编程实例文档格式.docx》由会员分享,可在线阅读,更多相关《C++编程实例文档格式.docx(36页珍藏版)》请在冰点文库上搜索。
![C++编程实例文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/f4946dd6-1085-44b9-bcce-b71211456c58/f4946dd6-1085-44b9-bcce-b71211456c581.gif)
cout<
"
;
20、找出1000之内所有的完数例如6的因子是而6=1+2+3,所以6是完数
intmain()
{intm,s,i;
for(m=2;
m<
m++)
{s=0;
for(i=1;
i<
m;
i++)
if((m%i)==0)s=s+i;
if(s==m)
{cout<
isa完数"
itsfactorsare:
if(m%i==0)cout<
21、2/1,3/2,5/3,8/5,13/8,21/13,…前20项之和
intmain()
{inti,t,n=20;
doublea=2,b=1,s=0;
=n;
{s=s+a/b;
t=a;
a=a+b;
<
else
isnotaprime."
intprime(intn)
intflag=1,i;
for(i=2;
n/2&
&
flag==1;
if(n%i==0)
flag=0;
return(flag);
4、.求a!
+b!
+c!
的值,用一个函数fac(n)求n!
。
4
{intfac(int);
inta,b,c,sum=0;
entera,b,c:
cin>
>
a>
b>
c;
sum=sum+fac(a)+fac(b)+fac(c);
a<
!
+"
b<
c<
sum<
intfac(intn)
intf=1;
for(inti=1;
f=f*i;
returnf;
7、.验证哥德巴赫猜想:
一个不小于6的偶数可以表示为两个素数之和。
7
cmath>
{voidgodbaha(int);
inputn:
n;
godbaha(n);
}
voidgodbaha(intn)
{intprime(int);
inta,b;
for(a=3;
=n/2;
a=a+2)
{if(prime(a))
{b=n-a;
if(prime(b))
intprime(intm)
{inti,k=sqrt(m);
for(i=2;
=k;
if(m%i==0)break;
if(i>
k)return1;
elsereturn0;
11、用递归方法求f(n)=12+22+……+n2
intf(int);
intn,s;
inputthenumbern:
s=f(n);
Theresultis"
}
intf(intn)
if(n==1)
return1;
return(n*n+f(n-1));
例5.2用数组Fibonacci数列
{inti;
intf[20]={1,1};
20;
f[i]=f[i-2]+f[i-1];
for(i=0;
{if(i%5==0)cout<
setw(8)<
f[i];
例用冒泡法对10个数排序
inta[10];
inti,j,t;
input10numbers:
for(i=0;
10;
i++)编程计算1,1+2,1+2+3,…,1+2+3+…+n各项值的积
答案:
voidmain()
inti,n,mul=1,sum=0;
Pleaseinputn:
sum+=i;
mul*=sum;
Themultipleis:
mul<
2.编写重载函数Max可分别求取两个整数,三个字符,两个浮点型数,三个双精度数的最大值。
intmax(inti,intj)
j)
returni;
else
returnj;
charmax(charc1,charc2,charc3)
charch;
if(c1>
c2)
ch=c1;
ch=c2;
if(c3>
ch)
ch=c3;
returnch;
floatmax(floatx,floaty)
if(x>
y)
returnx;
returny;
doublemax(doublex1,doublex2,doublex3)
doubley;
if(x1>
x2)
y=x1;
y=x2;
if(x3>
y=x3;
returny;
3.请编写一个函数intfind(chars[],chart[]),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);
否则返回-1。
注意:
用数组方式及两重循环来实现该函数。
intfind(chars[],chart[])
inti,j,slen,tlen;
slen=strlen(s);
tlen=strlen(t);
i=0;
j=0;
while(i<
slen&
j<
tlen)
if(s[i]==t[j])
{
i++;
j++;
}
else
i=i-j+1;
j=0;
if(j>
=tlen)
returni-tlen+1;
return-1;
4.写一程序,将字符串a的所有字符传送到字符串b中,要求每传送3个字符后放一个空格,例如,字符串a为”abcdefg”,则b为”abcdegg”。
#defineN40
voidfun(chars[],chart[])
inti=0,j=0;
while(s[i])
t[j]=s[i];
i++;
j++;
if((i)%3==0)
t[j]='
'
j++;
t[j]='
\0'
main()
chara[N],b[N];
printf("
请输入原始字符串a:
);
gets(a);
fun(a,b);
加入空格后的字符串b:
puts(b);
5.编程判断一个数是否为素数。
inti,flag=1;
=int(sqrt(m));
if(m%i==0)
{flag=0;
break;
returnflag;
intmain(void)
请输入一个整数:
if(prime(n))
是素数!
不是素数!
6.编程打印九九乘法表:
1×
1=1
2=22×
2=4
3=32×
3=63×
3=9
….
inti,j;
=9;
for(j=1;
j<
=i;
j++)
printf("
%1d*%1d=%2d"
j,i,i*j);
\n"
7.请编写一个程序,程序的功能是打印以下图案。
*
***
*****
*******
=4;
=4-i;
cout<
'
=2*i-1;
*'
for(i=3;
i>
=1;
i--)
8.写出下面程序的运行结果:
voidaverage(float*p,intn)
floatsum=0;
i++,p++)
sum+=(*p);
sum/n;
floatscore[2][2]={{1,2},{3,4}};
average(*score,4);
C++部分
1.定义一个满足如下要求的Date类。
(1)用下面的格式输出日期:
日/月/年
(2)可运行在日期上加一天操作;
(3)设置日期。
externinti=0;
classDate
{
public:
set(inty,intm,intd);
add();
print();
private:
intyear;
intmonth;
intday;
};
Date:
:
set(inty,intm,intd)
year=y;
month=m;
day=d;
add()
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
if(day<
31)
day+=1;
elseif(day==31)
{
day=1;
month+=1;
}
case12:
month=1;
year+=1;
case4:
case6:
case9:
case11:
30)
day+=1;
elseif(day==30)
day=1;
month+=1;
break;
case2:
if(year%4==0&
year%100!
=0||year%400==0)
if(day<
29)
day+=1;
elseif(day==29)
{
day=1;
month+=1;
}
else
28)
elseif(day==28)
{
month+=1;
}
}
print()
cout<
day<
/"
month<
year<
endl;
voidmain()
Dated1;
请输入年月日:
cin>
year>
month>
day;
(year,month,day);
();
下一天是:
;
2.定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。
编写一个矩形的类,要求类中具有长和宽2个数据成员,具有构造函数、计算矩形的面积即及周长这3个成员函数。
classrectangle
floatwidth;
floatheigth;
rectangle(floatw,floath)
{width=w;
heigth=h;
floatarea(){returnwidth*heigth;
floatcirculm(){return2*(width+heigth);
4.设计一个人的类,要求包含姓名、身份证号、年龄、以及人的总数和所有人的平均年龄这5个数据成员,然后编写一个测试程序,输入n个人的
信息(姓名、身份证号和年龄),要求输出这些人的信息和平均年龄。
#include<
cstring>
constintn=3;
classPerson
private:
charname[20];
charid[18];
intage;
public:
staticintcount;
isplay();
人的数量:
Person:
count<
平均年龄:
aveage<
5.编写一个圆的类,再使用派生类的机制,编写一个圆柱的类,求每个类都包含具有初始化功能的构造函数和相关数据的输出函数。
#definepi
classcircle
protected:
floatr;
floatarea;
circle(){r=0;
circle(floatradius){r=radius;
voidprint()
area=r*r*pi;
r="
r<
area="
area<
classcolumn:
circle
floath;
floatv;
public:
column(floatradius,floatheight):
circle(radius)
{h=height;
circle:
print();
h="
h<
volume="
area*h<
columncol,;
6.重载一个函数模板,要求它可以返回两个值中的较大者,也可以求三个数的最大值。
面是整型安全数组类的一部分:
试完善类的定义,使下段程序能够正常运行且不会出现内存泄漏。
classArray{
Array(intx){
count=x;
p=newint[count];
int&
operator[](intx)
{return*(p+x);
intcount;
int*p;
Array(intx);
Array(Array&
~Array();
voidSetAt(intpos,intvalue);
intGetAt(intpos);
Array:
Array(intx)
count=x;
p=newint[count];
Array(Array&
a)
count=;
count;
*(p+i)=*+i);
~Array()
deletep;
voidArray:
SetAt(intpos,intvalue)
*(p+pos)=value;
intArray:
GetAt(intpos)
return*(p+pos);
8、编写类String的构造函数、析构函数和赋值函数
已知类String的原型为:
classString
String(constchar*str=NULL);
//普通构造函数
String(constString&
other);
//拷贝构造函数
~String(void);
//析构函数
String&
operate=(constString&
//赋值函数
char*m_data;
//用于保存字符串
请编写String的上述4个函数。
String:
String(constchar*str)
构造函数被调用了"
if(str==NULL)//避免出现野指针
m_data=newchar[1];
*m_data='
intlength=strlen(str);
m_data=newchar[length+1];
strcpy(m_data,str);
~String(void)
deletem_data;
析构函数被调用了"
other)
赋值构造函被调用了"
intlength=strlen;
strcpy(m_data,;
String