资源描述
实验 7 实验报告
教学班级:_____11__ 学生学号:2017114499__ 学生姓名:_张恒___
实验日期:______________ 实验地点: _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<n),通过调用子函数判断出m~n之间所有完数,计算所有完数之和并输出结果。
(2) 子函数功能:定义有返回值函数,实现判断正整数是否为完数的功能。(完数是指:该数所有因子(不含自身)之和等于该数,如28=1+2+4+7+14)。
(3) 输入输出格式请参考以下样张:
三、实验结果(源程序 + 注释)
1.
#include<iostream>
#include<cmath>
using namespace std;
double zheng(double x);
void main()
{
double x,y;
cout<<"2017114499 张恒"<<endl;
cout<<"请输入自变量x的值:";
cin>>x;
y=zheng(x);
cout<<"y="<<y<<""<<endl;
}
double zheng(double x)
{
if(x==0)
return 0;
else
{
if(x>0)
{return(sqrt(x));}
else
{return(fabs(x));}
}
}
2.
#include<iostream>
#include<ctime>
using namespace std;
int add(int m,int n);
int minus(int m,int n);
int mul(int m,int n);
void main()
{
int x,y,hao,i=1;
cout<<"2017114499 张恒"<<endl;
srand(time(NULL));
hao=1+rand()%(3-1+1);
x=1+rand()%(10-1+1);
y=1+rand()%(10-1+1);
switch(hao)
{
case 1:
{
cout<<"请计算"<<x<<"+"<<y<<"=";
add( x,y);
}
case 2:
{
cout<<"请计算"<<x<<"-"<<y<<"=";
minus( x,y);
}
case 3:
{
cout<<"请计算"<<x<<"*"<<y<<"=";
mul( x,y);
}
}
}
int add(int m,int n)
{
int result;
cin>>result;
if(m+n==result)
{
cout<<"计算正确!"<<endl;
return(m+n);
}
else
cout<<"计算错误!"<<m<<"+"<<n<<"="<<m+n<<""<<endl;
return(m+n);
}
int minus(int m,int n)
{
int result;
cin>>result;
if(m-n==result)
{
cout<<"计算正确!"<<endl;
return(m-n);
}
else
cout<<"计算错误!"<<m<<"-"<<n<<"="<<m-n<<""<<endl;
return(m-n);
}
int mul(int m,int n)
{
int result;
cin>>result;
if(m*n==result)
{
cout<<"计算正确!"<<endl;
return(m*n);
}
else
cout<<"计算错误!"<<m<<"*"<<n<<"="<<m*n<<""<<endl;
return(m*n);
}
3.
#include<iostream>
using namespace std;
double zhang(double x,double y);
void main()
{
cout<<"2017114499 张恒"<<endl;
double a,b;
cout<<"求a的b次方与b的a次方的和,请输入a、b:";
cin>>a>>b;
cout<<""<<a<<"的"<<b<<"次方为:"<<zhang(a,b)<<""<<endl;
cout<<""<<b<<"的"<<a<<"次方为:"<<zhang(b,a)<<""<<endl;
cout<<""<<a<<"的"<<b<<"次方与"<<b<<"的"<<a<<"次方的和为:"<<zhang(a,b)+zhang(b,a)<<""<<endl;
}
double zhang(double x,double y)
{
double sum=1,i=1;
while(i<=y)
{
sum=sum*x;
i=i+1;
}
return(sum);
}
4.
#include<iostream>
using namespace std;
int zhang(int x,int y);
int heng(int x,int y);
void main()
{
cout<<"2017114499 张恒"<<endl;
int a,b;
cout<<"请输入两个正整数:";
cin>>a>>b;
cout<<"最大公约数:"<<zhang(a,b)<<""<<endl;
cout<<"最小公倍数:"<<heng(b,a)<<""<<endl;
}
int zhang(int x,int y)
{
int t,r;
if(x<y)
{t=x;x=y;y=t;}
r=x%y;
if(r==0)
cout<<"p,q两数的最大公约数为:"<<x<<""<<endl;
else
{
while(r!=0)
{
x=y;
y=r;
r=x%y;
}
return(y);
}
}
int heng(int x,int y)
{
int sum=x;
while(sum%y!=0)
{sum=sum+x;}
return(sum);
}
5.
#include <iostream>
using namespace std;
int num(int a);
void main()
{
cout<<"2017114499 张恒"<<endl;
int m,n,t,s=0;
cout<<"请依次输入数字m,n(n>m>0):"<<endl;
cin>>m>>n;
for(t=m;t<=n;t++)
{s=num(t)+s;}
cout<<m<<"~"<<n<<"之间所有完数之和为:"<<s<<endl;
}
int num(int a)
{
int i,sum=0;
for(i=1;i<a;i++)
{
if(a%i==0)
{sum=sum+i;}
}
if(a!=0&&sum==a)
return a;
else
return 0;
}
(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)
编辑版word
展开阅读全文