1、三级信息管理技术机试-252 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.某级数的前两项 A1=1,A 2=1,以后各项具有如下关系:An=An-2+2An-1下列序的功能是:要求依次对于整数 M=100、1000 和 10000 求出对应的 n 值,使其满足:S nM 且Sn+1M,这里 Sn=A1+A2+An,并依次把 n 值存入数组单元 b0、b1、b2中,请编制 jsValue()函数来实现此功能,最后调用函数 writeDat()把数组 b 的值输出到 out81.dat 文件中。注意:部分源程序已给出。请勿改动主函数 mai
2、n()和输出函数 writeDat()的内容。试题程序:#include stdio.hint b3;void writeDat();void JsValue()void main()jsValue();printf(“M=100,n=% d/nM=1000,n=% d/nM=10000,n=% d/n“,b0,b1,b2);writeDat();void writeDat()FILE * fp;fp=fopen(“out81.dat“,“w“);fprintf(fp,“% d/n% d/n% d/n“,b0,b1,b2);fclose(fp);(分数:100.00)_三级信息管理技术机试-2
3、52 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.某级数的前两项 A1=1,A 2=1,以后各项具有如下关系:An=An-2+2An-1下列序的功能是:要求依次对于整数 M=100、1000 和 10000 求出对应的 n 值,使其满足:S nM 且Sn+1M,这里 Sn=A1+A2+An,并依次把 n 值存入数组单元 b0、b1、b2中,请编制 jsValue()函数来实现此功能,最后调用函数 writeDat()把数组 b 的值输出到 out81.dat 文件中。注意:部分源程序已给出。请勿改动主函数 main()和输出函数 writ
4、eDat()的内容。试题程序:#include stdio.hint b3;void writeDat();void JsValue()void main()jsValue();printf(“M=100,n=% d/nM=1000,n=% d/nM=10000,n=% d/n“,b0,b1,b2);writeDat();void writeDat()FILE * fp;fp=fopen(“out81.dat“,“w“);fprintf(fp,“% d/n% d/n% d/n“,b0,b1,b2);fclose(fp);(分数:100.00)_正确答案:(void jsValue()int n
5、=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 & sum=100) /*如果满足 Sn100 且 Sn+1100*/b0=n; /*则将 n 存入数组单元 b
6、0中*/if(sum01000 & sum=1000) /*如果满足 Sn1000 且 Sn+11000*/b1=n; /*则将 n 存入数组单元 b1中*/if(sum010000 & sum=10000) /*如果满足 Sn10000 且 Sn+110000*/b2=n; /*则将 n 存入数组单元 b2中*/break; /*并强行退出循环*/sum0=sum; /*将 sum 赋给 sum0,为下一次循环的求和作准备*/)解析:解析 本题主要考查的是利用循环和判断结构求级数。由级数的表达式可以看出,级数中的各项可以由循环依次求得。当级数的和达到要求的条件时就可以退出循环结构。因为退出循环的两个条件 SnM、S n+1M 要同时满足,所以两条件之间要用到“与”运算。这里使用 break 语句退出整个循环结构。