c++实验.docx
《c++实验.docx》由会员分享,可在线阅读,更多相关《c++实验.docx(10页珍藏版)》请在冰豆网上搜索。
![c++实验.docx](https://file1.bdocx.com/fileroot1/2023-2/9/b8b5e8f9-a16c-49e0-9161-aca679d44fff/b8b5e8f9-a16c-49e0-9161-aca679d44fff1.gif)
c++实验
教学班级:
_____11__学生学号:
99__学生姓名:
_张恒___
实验日期:
______________实验地点:
_7103_____(机房)
指导教师签名:
_____________实验成绩:
______________
一、实验目的
1.掌握常用系统函数的功能及使用方法;
2.掌握自定义有返回值函数的概念、定义及使用方法。
二、实验任务
1、实现功能:
根据键盘输入的数x,计算分段函数f(x)的值。
(1)主函数功能:
从键盘输入数x,通过调用子函数得到计算结果并输出。
(2)子函数功能:
定义有返回值函数,实现计算该分段函数值的功能。
要求:
求平方根和绝对值使用数学函数sqrt(x)、fabs(x)。
(3)输入输出格式请参考以下样张:
2、实现功能:
1~10加减乘运算训练系统。
(1)主函数功能:
随机产生一个1~10加减乘算术式(数字在1~10之间随机产生,运算符在加减乘中随机产生,如2+3=、8-4=、6*3=),要求用户输入计算结果,通过调用子函数得到正确答案,判断用户输入的计算结果是否正确并输出结论。
(2)子函数功能:
定义有返回值函数,实现加减乘算术式的计算功能。
(3)输入输出格式请参考以下样张:
3.实现功能:
计算a的b次方与b的a次方的和。
(1)主函数功能:
从键盘输入两个整数a、b(a>0,b>0),通过调用子函数计算a的b次方与b的a次方的和并输出结果。
(2)子函数功能:
定义有返回值函数,实现计算a的b次方的功能。
(3)输入输出格式请参考以下样张:
4、实现功能:
求两个正整数的最大公约数、最小公倍数。
(1)主函数功能:
从键盘输入两个正整数,通过调用两个子函数分别得到最大公约数、
最小公倍数并输出结果。
(2)子函数1功能:
定义有返回值函数,实现求两个正整数的最大公约数的功能。
子函数2功能:
定义有返回值函数,实现求两个正整数的最小公倍数的功能。
(3)输入输出格式请参考以下样张:
5、实现功能:
计算正整数m~n之间所有完数之和。
(1)主函数功能:
从键盘输入两个整数m、n(m>0,n>0,m(2)子函数功能:
定义有返回值函数,实现判断正整数是否为完数的功能。
(完数是指:
该数所有因子(不含自身)之和等于该数,如28=1+2+4+7+14)。
(3)输入输出格式请参考以下样张:
三、实验结果(源程序+注释)
1.
#include
#include
usingnamespacestd;
doublezheng(doublex);
voidmain()
{
doublex,y;
cout<<"99张恒"<cout<<"请输入自变量x的值:
";
cin>>x;
y=zheng(x);
cout<<"y="<}
doublezheng(doublex)
{
if(x==0)
return0;
else
{
if(x>0)
{return(sqrt(x));}
else
{return(fabs(x));}
}
}
2.
#include
#include
usingnamespacestd;
intadd(intm,intn);
intminus(intm,intn);
intmul(intm,intn);
voidmain()
{
intx,y,hao,i=1;
cout<<"99张恒"<srand(time(NULL));
hao=1+rand()%(3-1+1);
x=1+rand()%(10-1+1);
y=1+rand()%(10-1+1);
switch(hao)
{
case1:
{
cout<<"请计算"<add(x,y);
}
case2:
{
cout<<"请计算"<minus(x,y);
}
case3:
{
cout<<"请计算"<mul(x,y);
}
}
}
intadd(intm,intn)
{
intresult;
cin>>result;
if(m+n==result)
{
cout<<"计算正确!
"<return(m+n);
}
else
cout<<"计算错误!
"<return(m+n);
}
intminus(intm,intn)
{
intresult;
cin>>result;
if(m-n==result)
{
cout<<"计算正确!
"<return(m-n);
}
else
cout<<"计算错误!
"<return(m-n);
}
intmul(intm,intn)
{
intresult;
cin>>result;
if(m*n==result)
{
cout<<"计算正确!
"<return(m*n);
}
else
cout<<"计算错误!
"<return(m*n);
}
3.
#include
usingnamespacestd;
doublezhang(doublex,doubley);
voidmain()
{
cout<<"99张恒"<doublea,b;
cout<<"求a的b次方与b的a次方的和,请输入a、b:
";
cin>>a>>b;
cout<<""<"<cout<<""<
"<cout<<""<"<}
doublezhang(doublex,doubley)
{
doublesum=1,i=1;
while(i<=y)
{
sum=sum*x;
i=i+1;
}
return(sum);
}
4.
#include
usingnamespacestd;
intzhang(intx,inty);
intheng(intx,inty);
voidmain()
{
cout<<"99张恒"<inta,b;
cout<<"请输入两个正整数:
";
cin>>a>>b;
cout<<"最大公约数:
"<cout<<"最小公倍数:
"<}
intzhang(intx,inty)
{
intt,r;
if(x{t=x;x=y;y=t;}
r=x%y;
if(r==0)
cout<<"p,q两数的最大公约数为:
"<else
{
while(r!
=0)
{
x=y;
y=r;
r=x%y;
}
return(y);
}
}
intheng(intx,inty)
{
intsum=x;
while(sum%y!
=0)
{sum=sum+x;}
return(sum);
}
5.
#include
usingnamespacestd;
intnum(inta);
voidmain()
{
cout<<"99张恒"<intm,n,t,s=0;
cout<<"请依次输入数字m,n(n>m>0):
"<cin>>m>>n;
for(t=m;t<=n;t++)
{s=num(t)+s;}
cout<"<
}
intnum(inta)
{
inti,sum=0;
for(i=1;i{
if(a%i==0)
{sum=sum+i;}
}
if(a!
=0&&sum==a)
returna;
else
return0;
}