1、国家三级(数据库技术)机试模拟试卷 41及答案与解析 一、程序设计题 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()实现程序要求,最后调用函数 writeDAT()把结果输出到文件
2、 out41.dar中。 注意:部分源程序已给出。 请勿改动主函数 main()和写函数 writeDAT()的内容。 试题程序: #include conio.h #include math.h #include stdio.h float countvalue( ) main ( ) clrscr( ); printf(“实根 =%fn“,countValue( ); printf(“%fn“,cos(countValue( )countValue( ); writeDAT( ); writeDAT( ) FILE *wf; wf=fopen(“out41.dat“,“w“); fprin
3、tf(wf,“%fln“,countValue( fclose(wf); 国家三级(数据库技术)机试模拟试卷 41答案与解析 一、程序设计题 1 【正确答案】 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)数学函数 doublecos(doublex)及 doublefabs(doublex)的使用。 (2)使用循环结构实现迭代。 在本题中,因为要求一个实数的余弦值,在结束迭代的时候要判断绝对值,所以这里要用到数学函数 cos(doublex)和 fabs(doublex)。先设一个条件永远为真的while循环结构,按照步骤提示,要先为 x1取初值,将 x1的值赋给 x0,使xl=cos(x0), 判断 x0-x1的绝对值将其作为强行退出循环的条件。