1、计算机三级数据库技术-110 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.某级数的前两项 A1=1,A2=1,以后各项具有如下关系: A n =A n-2 +2A n-1 下列程序的功能是:依次求出整数 M=100,1000 和 10000 时对应的 n 值,使其满足:S n M 且 S n+1 M,这里 S n =A 1 +A 2 +A n ,并依次把 n 值存入数组单元 b0,b1,b2bn中,请编写函数 jsValue()来实现此功能,最后调用函数 writeDat(),把数组 b 的值输出到 OUT.DAT 文件中。 请勿改动主
2、函数 main()和输出函数 wfiteDat()的内容。 试题程序 #includestdio.h int b3; void writeDat(); void jsValue() void main() jsValue(); printf(“M=100,n=%dnM=1000,n =%dnM=10000,n=%dn“,b0, b1,b2); writeDat(); void writeDat() FILE*fp; fp=fopen(“OUT.DAT“,“w“); fprintf(fp,“%dn%dn%dn“, b0, b1,b2); fclose(fp); (分数:100.00)_计算机三级
3、数据库技术-110 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.某级数的前两项 A1=1,A2=1,以后各项具有如下关系: A n =A n-2 +2A n-1 下列程序的功能是:依次求出整数 M=100,1000 和 10000 时对应的 n 值,使其满足:S n M 且 S n+1 M,这里 S n =A 1 +A 2 +A n ,并依次把 n 值存入数组单元 b0,b1,b2bn中,请编写函数 jsValue()来实现此功能,最后调用函数 writeDat(),把数组 b 的值输出到 OUT.DAT 文件中。 请勿改动主函数 mai
4、n()和输出函数 wfiteDat()的内容。 试题程序 #includestdio.h int b3; void writeDat(); void jsValue() void main() jsValue(); printf(“M=100,n=%dnM=1000,n =%dnM=10000,n=%dn“,b0, b1,b2); writeDat(); void writeDat() FILE*fp; fp=fopen(“OUT.DAT“,“w“); fprintf(fp,“%dn%dn%dn“, b0, b1,b2); fclose(fp); (分数:100.00)_正确答案:()解析:v
5、oid jsValue( ) int n=1; /*计数器变量,保存求得的项数*/ int a1=1,a2=1,an; /*用来保存级数的值*/ int sum0,sum; /*用来存储级数的和的变量*/ sum0=a1+a2; /*计算前两项的级数和*/ while(1) /*无条件循环,循环体内有控制是否结束循环的语句*/ an=a1+a2*2; /*求下一个级数*/ sum=sum0+an; /*求级数和*/ a1=a2; /*将 a2 赋给 a1*/ a2=an; /*将 an 赋给 a2*/ n+; /*/ if(sum0100 /*则将 n 存入数组单元 b0中*/ if(sum0
6、1000 /*则将 n 存入数组单元 b1中*/ if(sum010000 /*则将 n 存入数组单元 b2中*/ break; /*并强行退出循环*/ sum0=sum; /*将 sum 赋给 sum0,为下一次循环的求和作准备*/ 考点 本题考查数学计算问题。考查的知识点主要包括:C 语言循环结构,迭代算法,if 判断结构和逻辑表达式。 此题属于数学计算题型。分析题干要求,可以归纳出 2 个关键点:关键点 1 如何逐个计算级数的项和前 n项和;关键点 2 如何通过条件“SnM 且 Sn1M“找出对应( M100, M1000, M10000)的 n 的值; 本题解题思路是:首先用一个循环结构作为程序的主体,在该循环体中实现迭代运算,逐个计算该级数的每一项并累加其前 n 项和,同时判断本题的条件“SnM 且 Sn1M“(M100,1000,10000)是否成立,条件成立时,保存 n 的值到数组 b 中,当条件 M10000 满足时,保存 n 并退出循环。本题对应软件中视频串讲第 7 讲。