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