西南交大C++实验七.doc
如有侵权,请联系网站删除,仅供学习与交流西南交大C+实验七.doc【精品文档】第 12 页实验 7 实验报告教学班级:_ 学生学号:_ 学生姓名:_实验日期:_ 实验地点:_指导教师签名:_ 实验成绩:_ 一、实验目的1掌握常用系统函数的功能及使用方法;2掌握自定义有返回值函数的概念、定义及使用方法。二、实验任务1、实现功能:根据键盘输入的数x,计算分段函数f(x)的值。(1) 主函数功能:从键盘输入数x,通过调用子函数得到计算结果并输出。(2) 子函数功能:定义有返回值函数,实现计算该分段函数值的功能。要求:求平方根和绝对值使用数学函数sqrt(x)、fabs(x)。(3) 输入输出格式请参考以下样张:2、实现功能:110加减乘运算训练系统。(1) 主函数功能:随机产生一个110加减乘算术式(数字在110之间随机产生,运算符在加减乘中随机产生,如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、实现功能:计算正整数mn之间所有完数之和。(1) 主函数功能:从键盘输入两个整数m、n(m>0, n>0, m<n),通过调用子函数判断出mn之间所有完数,计算所有完数之和并输出结果。(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);elseif(x=0)y=0;elsey=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;elsecout<<"计算正确"<<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;elsereturn false;