1、三级数据库技术-515 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.某级数的前两项 A 1 =1,A 2 =1,以后各项具有如下关系: A n =A n-2 +2A n-1 程序 test.c 的功能是:要求依次对于整数 M,求出级数前 n 的和 S n =A 1 +A 2 +A n 小于 M 的项数n,并依次把 n 值存入数组单元 b0,b1和 b2中,请考生编制 jsValue()函数来实现此功能,最后调用函数 writeDat()把数组 b中的值输出到 out.dat 文件中。 请勿改动主函数 main()和输出数据函数 w
2、riteDAT()的内容。 #include stdio.h int b3; /定义全局整型一维数组 b3 void writeDAT(); /输出函数 writeDAT()的说明语句 void jsValue() main () jsValue(); /调用函数 jsValue () ,实现题目要求的功能 printf(“M=100, n=%dnM=1000, n=%dnM= 10000, n=%dn“, b0, b1, b2); writeDAT (); /*函数 writeDat()把数据 b中的值输出到 out.dat 文件中*/ void writeDAT() FILE *fp; f
3、p=fopen(“out.dat“, “w“); fprintf(fp, “%dn%dn%dn“, b0, b1, b2); fclose(fp); (分数:100.00)_三级数据库技术-515 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.某级数的前两项 A 1 =1,A 2 =1,以后各项具有如下关系: A n =A n-2 +2A n-1 程序 test.c 的功能是:要求依次对于整数 M,求出级数前 n 的和 S n =A 1 +A 2 +A n 小于 M 的项数n,并依次把 n 值存入数组单元 b0,b1和 b2中,请考生
4、编制 jsValue()函数来实现此功能,最后调用函数 writeDat()把数组 b中的值输出到 out.dat 文件中。 请勿改动主函数 main()和输出数据函数 writeDAT()的内容。 #include stdio.h int b3; /定义全局整型一维数组 b3 void writeDAT(); /输出函数 writeDAT()的说明语句 void jsValue() main () jsValue(); /调用函数 jsValue () ,实现题目要求的功能 printf(“M=100, n=%dnM=1000, n=%dnM= 10000, n=%dn“, b0, b1,
5、b2); writeDAT (); /*函数 writeDat()把数据 b中的值输出到 out.dat 文件中*/ void writeDAT() FILE *fp; fp=fopen(“out.dat“, “w“); fprintf(fp, “%dn%dn%dn“, b0, b1, b2); fclose(fp); (分数:100.00)_正确答案:()解析:int a1=1, a2=1, s=2, n=1, m=10, i, t; for(i=0;i3;i+) /循环变量 i 从 0 开始,每次递增 1,直到其值小于 3 m*=10; /m 的值扩大 10 倍后,其值等于 100 whi
6、le(sm) /当 s 的值小于 m 时,执行 while 循环语句 /*变量 t 表示第 n 项,a1 表示第 n-2 项,a2 表示第 n-1 项*/ t=a1+2*a2; /根据级数第 n 项的递推关系,第 n 项等于第 n-2 项与 2 倍的第 n-1 项的和 s=s+t; /前 n 项的和等于前 n-1 项的和加上第 n 项的值 n=n+1; /求级数第 n 项的下一项,即第 n+1 项 a1=a2; /把当前的第 n-1 项赋给第 n-2 项 a2=t; /把当前的第 n 项赋给第 n-1 项 printf(“m=%d,n=%dn“,m,n); /当退出 while 循环,把 m
7、值和求的 n 值在屏幕上显示出来 bi=n; /把求的 n 值存入数组元素 bi中 解析 Sn=A 1 +A 2 +A n ,A n =A n-2 +2A n-1 ,S n M 且 S n+1 M,M=100、1000 和 10000。 首先定义变量并赋值,包括表示级数的整型变量 a1、a2,赋初值 1,表示级数前 n 项的和 s,其初值为2,表示级数的第 n 项 t,循环变量 i,级数 n 项赋初值 1,。 采用 for 循环,循环变量 i 从 0 开始依次递增到 2。在循环体中对 m 的值扩大 10 倍,当级数前 n 项的和 s 小于 m 时,根据级数的第 n 项等于第 n-2 项与 2 倍的第 n-1 项的和,把表达式 a1+2*a2 的值赋给变量t。然后把级数前 n-1 项的和 s 加上第 n 项的值 t 赋给变量 s,求得级数前 n 项的和赋给变量 s。把 n 的值加 1,在下次循环中计算级数第 n+1 项的值,把变量当前级数第 n-1 项的值 a2 赋给第 n-2 项 a1,把当前的第 n 项 t 的值赋给第 n-1 项 a2。当级数前 n 项的和 s 大于或等于 m 时,退出 while 循环。在屏幕上输出变量 m 和 n 的值,并把求的 n 值赋给数组元素 bi,进入下一次 for 循环。