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