1、三级信息管理技术机试-300 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下;(1)取 x1初值为 0.0。(2)x0=x1,把 x1的值赋给 x0。(3)x1=cos(x0),求出一个新的 x1。(4)若 x0-x1的绝对值小于 0.000001,执行步骤(5),否则执行步骤(2)。(5)所求 x1就是方程 cos(x)-x=0的一个实根,作为函数值返回。请编写函数 countValue()实现程序要求,最后调用函数
2、writeDAT()把结果输出到文件 out41.dat中。注意;部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:#includeconio.h#includemath.h#includestdio.hfloat countValue( )main ( )clrscr( );printf(“实根=%f/n“,countValue( );printf(“%f/n“,cos(countValue( )-countValue( );writeDAT( );writeDAT( )FILE *wf;wf=fopen(“out41.dat“,“w“);fpri
3、ntf(wf,“%f/n“,countValue( );fclose(wf);(分数:100.00)_三级信息管理技术机试-300 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下;(1)取 x1初值为 0.0。(2)x0=x1,把 x1的值赋给 x0。(3)x1=cos(x0),求出一个新的 x1。(4)若 x0-x1的绝对值小于 0.000001,执行步骤(5),否则执行步骤(2)。(5)所求 x1就是方程 cos(x)
4、-x=0的一个实根,作为函数值返回。请编写函数 countValue()实现程序要求,最后调用函数 writeDAT()把结果输出到文件 out41.dat中。注意;部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:#includeconio.h#includemath.h#includestdio.hfloat countValue( )main ( )clrscr( );printf(“实根=%f/n“,countValue( );printf(“%f/n“,cos(countValue( )-countValue( );writeDAT( );
5、writeDAT( )FILE *wf;wf=fopen(“out41.dat“,“w“);fprintf(wf,“%f/n“,countValue( );fclose(wf);(分数:100.00)_正确答案:(float countValue()float x0,x1=0.0;while(1)x0=x1; /*将 x1赋值给 x0*/x1=cos(x0); /*求出新的 x1*/if(fabs(x0-x1)1e-6)break; /*若 x0-x1的绝对值小于 0.000001,则结束循环*/return x1;)解析:解析 本题考查的知识点如下:(1)数学函数 double cos(double x)及 double fabs(double x)的使用。(2)使用循环结构实现迭代。在本题中,因为要求一个实数的余弦值,在结束迭代的时候要判断绝对值,所以这里要用到数学函数cos(double x)和 fabs(double x)。先设一个条件永远为真的 while循环结构,按照步骤提示,要先为x1取初值,将 x1的值赋给 x0,使 x1=cos(x0),判断 x0-x1的绝对值将其作为强行退出循环的条件。