西南交大C++实验七Word文档下载推荐.docx
《西南交大C++实验七Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《西南交大C++实验七Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
![西南交大C++实验七Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/24/c148916e-284f-447e-9b3d-85b40a9ed135/c148916e-284f-447e-9b3d-85b40a9ed1351.gif)
定义有返回值函数,实现计算该分段函数值的功能。
要求:
求平方根和绝对值使用数学函数sqrt(x)、fabs(x)。
(3)输入输出格式请参考以下样张:
2、实现功能:
1~10加减乘运算训练系统。
随机产生一个1~10加减乘算术式(数字在1~10之间随机产生,运算符在加减乘中随机产生,如2+3=、8-4=、6*3=),要求用户输入计算结果,通过调用子函数得到正确答案,判断用户输入的计算结果是否正确并输出结论。
定义有返回值函数,实现加减乘算术式的计算功能。
3.实现功能:
计算a的b次方与b的a次方的和。
从键盘输入两个整数a、b(a>
0,b>
0),通过调用子函数计算a的b次方与b的a次方的和并输出结果。
定义有返回值函数,实现计算a的b次方的功能。
4、实现功能:
求两个正整数的最大公约数、最小公倍数。
从键盘输入两个正整数,通过调用两个子函数分别得到最大公约数、
最小公倍数并输出结果。
(2)子函数1功能:
定义有返回值函数,实现求两个正整数的最大公约数的功能。
子函数2功能:
定义有返回值函数,实现求两个正整数的最小公倍数的功能。
5、实现功能:
计算正整数m~n之间所有完数之和。
从键盘输入两个整数m、n(m>
0,n>
0,m<
n),通过调用子函数判断出m~n之间所有完数,计算所有完数之和并输出结果。
定义有返回值函数,实现判断正整数是否为完数的功能。
(完数是指:
该数所有因子(不含自身)之和等于该数,如28=1+2+4+7+14)。
三、实验结果(源程序+注释)
1.
#include<
iostream>
cmath>
usingnamespacestd;
voidmain()
{
cout<
<
"
学号:
endl;
========================================="
doublex,y;
doublef(doublex);
x="
;
cin>
>
x;
y=f(x);
y="
y<
}
doublef(doublex)
{doubley;
if(x>
0)
y=sqrt(x);
elseif(x==0)
y=0;
elsey=fabs(x);
returny;
}
2.
ctime>
voidmain()
intm,a,b,js,zq;
charop;
intcalc(inta,intb,charop);
srand(time(NULL));
m=1+rand()%3;
a=1+rand()%10;
b=1+rand()%10;
switch(m)
{
case1:
op='
+'
break;
case2:
-'
case3:
*'
a<
op<
b<
="
js;
zq=calc(a,b,op);
if(js!
=zq)
cout<
计算错误"
zq<
else
计算正确"
intcalc(inta,intb,charop)
intn;
switch(op)
{case'
:
n=a+b;
break;
case'
n=a-b;
n=a*b;
returnn;
3.
doublea,b,c;
doublepower(inta,intb);
请输入a,b:
a>
b;
c=power(a,b)+power(b,a);
的"
次方为"
power(a,b)<
power(b,a)<
次方加"
c<
doublepower(inta,intb)
{intmul=1,i;
for(i=0;
i<
i++)
mul=mul*a;
returnmul;
}
4.
intx,y,z,gy,gb;
intmax(intm,intn);
intmin(intm,intn);
请输入2个正整数:
x>
y;
if(x<
y)
{z=x;
x=y;
y=z;
gy=max(x,y);
gb=min(x,y);
最大公约数是:
gy<
最小公倍数是:
gb<
intmax(intm,intn)
{
intt;
t=m%n;
while(t!
=0)
{
m=n;
n=t;
t=m%n;
intmin(intm,intn)
intmax(int,int);
return(m*n)/max(m,n);
5.
intm,n,i,j,sum;
sum=0;
boolfact(inti);
请输入2个正整数m,n:
m>
n;
for(i=m;
=n;
if(fact(i))
sum=sum+i;
m<
~"
n<
之间所有完数之和为:
sum<
boolfact(intm)
intsum=0,i;
for(i=1;
m;
if(m%i==0)
sum=sum+i;
if(sum==m)
returntrue;
returnfalse;