资源描述
实验 7 实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:_____________ 实验地点:_指导教师签名:_____________ 实验成绩:______________
一、实验目的
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<n),通过调用子函数判断出m~n之间所有完数,计算所有完数之和并输出结果。
(2) 子函数功能:定义有返回值函数,实现判断正整数是否为完数的功能。(完数是指:该数所有因子(不含自身)之和等于该数,如28=1+2+4+7+14)。
(3) 输入输出格式请参考以下样张:
三、实验结果(源程序 + 注释)
1.
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
cout<<"学号:"<<endl;
cout<<"========================================="<<endl;
double x,y;
double f(double x);
cout<<"x=";
cin>>x;
y=f(x);
cout<<"y="<<y<<endl;
}
double f(double x)
{double y;
if(x>0)
y=sqrt(x);
else if(x==0)
y=0;
else y=fabs(x);
return y;}
2.
#include<iostream>
#include<ctime>
using namespace std;
void main()
{
cout<<"学号:"<<endl;
cout<<"========================================="<<endl;
int m,a,b,js,zq;
char op;
int calc(int a,int b,char op);
srand(time(NULL));
m=1+ rand()%3;
a=1+ rand()%10;
b=1+ rand()%10;
switch (m)
{
case 1:op='+'; break;
case 2:op='-'; break;
case 3:op='*'; break;
}
cout<<a<<op<<b<<"=";
cin>>js;
zq=calc(a,b,op);
if(js!=zq)
cout<<"计算错误"<<a<<op<<b<<"="<<zq<<endl;
else
cout<<"计算正确"<<endl;
}
int calc(int a,int b,char op)
{
int n;
switch(op)
{ case '+':n=a+b;break;
case '-':n=a-b;break;
case '*':n=a*b;break;
}
return n;}
3.
#include<iostream>
using namespace std;
void main()
{
cout<<"学号:"<<endl;
cout<<"========================================="<<endl;
double a,b,c;
double power(int a,int b);
cout<<"请输入a,b:";
cin>>a>>b;
c=power(a,b)+power(b,a);
cout<<a<<"的"<<b<<"次方为"<<power(a,b)<<endl;
cout<<b<<"的"<<a<<"次方为"<<power(b,a)<<endl;
cout<<a<<"的"<<b<<"次方加"<<b<<"的"<<a<<"次方为"<<c<<endl;
}
double power(int a,int b)
{int mul=1,i;
for(i=0;i<b;i++)
mul=mul*a;
return mul;
}
4.
#include<iostream>
using namespace std;
void main()
{
cout<<"学号:"<<endl;
cout<<"========================================="<<endl;
int x,y,z,gy,gb;
int max(int m,int n);
int min(int m,int n);
cout<<"请输入2个正整数:";
cin>>x>>y;
if(x<y)
{ z=x;
x=y;
y=z;}
gy=max(x,y);
gb=min(x,y);
cout<<"最大公约数是:"<<gy<<endl;
cout<<"最小公倍数是:"<<gb<<endl;
}
int max(int m,int n)
{
int t;
t=m%n;
while(t!=0)
{
m=n;
n=t;
t=m%n;
}
return n;
}
int min(int m, int n)
{
int max(int, int);
return(m*n)/max(m,n);
}
5.
#include<iostream>
using namespace std;
void main()
{
cout<<"学号:"<<endl;
cout<<"========================================="<<endl;
int m,n,i,j,sum;
sum=0;
bool fact(int i);
cout<<"请输入2个正整数m,n:";
cin>>m>>n;
for(i=m;i<=n;i++)
if (fact(i))
sum=sum+i;
cout<<m<<"~"<<n<<"之间所有完数之和为:"<<sum<<endl;
}
bool fact(int m)
{
int sum=0,i;
for(i=1;i<m;i++)
if(m%i==0)
sum=sum+i;
if(sum==m)
return true;
else
return false;
}
展开阅读全文