东南大学机械学院C 第一学期上机(作业八之后)汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
八
1.设有如下求近似值的公式:
设计算法,给定一个x,求f(x)的近似值,要求单项误差不大于0.0001。
提示:需要使用fabs函数求绝对值,fabs函数需要包含数学函数头文件,
#include “math.h”
2.输出100-200之间的质数,输出格式为8个一行;
3.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,28=1+2+4+7+14因此6,28是“完数”。编程序找出1000之内的所有的完数并输出。
4. 设计一个计算n的阶乘的函数fac,参数为n,返回值为整数。完成后,在主程序中输入一个整数,然后调用该函数,并输出结果。
5. 把第一题转化成函数,即设计一个函数f, 参数是实数,返回值也是也实数。在主程序中输入x,然后调用函数之后输出。
1、#include
#include
void main(void)
{
double f=1,sum=0,x;
int n=1;
cout<<"请输入一个x的值:";
cin>>x;
while(fabs(f)>0.0001)
{
sum+=f;
f=-f*x*x/2/n/(2*n-1);
n++;
}
cout<<"f(x)的近似值为:"< } 2、#include #include void main(void) { int m,k,i,n=0; for(m=101;m<200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i==k+1) { cout< n++; } if(n%8==0) cout<<'\n'; } } 3、#include void main (void) { int sum; cout<<"1000之内的所有完数为:"; for(int i=1;i<=1000;i++) { sum=0; for(int j=1;j if(i%j==0) sum+=j; if(i==sum) cout< } } 4、#include int fac(int n) { int m=1; for(int i=1;i<=n;i++) m=m*i; return m; } void main(void) { int n; cout<<"请输入一个n的值:"; cin>>n; cout< 5、#include #include double f(int x) double m=1,sum=0; int i=1; while(fabs(m)>0.0001) { sum+=m; m=-m*x*x/2/i/(2*i-1); i++; } return sum; } void main(void) { int x; cout<<"请输入一个x的值:"; cin>>x; cout<<"f(x)的近似值为:"< } 第9周上机题目: (1) 构造递归函数与程序,把输入的一个十进制的数字,正确的输出转化为2进制的数字。 (2) 写出斐波那契级数前20项计算的递归和递推的函数与程序; (3) 要求:设计一个函数int check(int m),功能是提取m中的最高位数字和最低位数字,检查二者是否相同,若是则返回1,否则返回0。在主函数能够依次输入20个数,然后调用所设计的函数,输出多少个数是高位与低位相同。 (4)定义一个函数long invers(long x),形式参数x为一个6位整数,函数功能是取x的高3位数(赋给h)和低3位各位数字(可从高位到低位依次存入变量a、b和c),将a、b和c 逆序组合为一个整数t,计算h+t并将结果返回。 例如:x=123456,h=123,t=654。 (5)、利用级数展开式计算:(50分) f(x)= (n≥1) 其中:g(m , x)=(1+2+3+…+m)*x 【要求】 (1) 定义函数double g(int m, double x)用于计算g(m , x)。 (2) 定义函数double f(…)用于计算f(x),其中应调用函数g( )。 (3) 主函数:从键盘输入x值(-1 1、#include void fun(int n)