1、国家三级(网络技术)机试模拟试卷 48及答案与解析 一、程序设计题 1 某级数的前两项 A1=1, A2=1,以后各项具有如下关系: An=An-2+2An-1 下列程序的功能是:要求依次对于整数 M=100, 1000和 10000求出对应的 n值,使其满足: Sn M且 Sn+1M,这里 Sn=A1+A2+An ,并依次把 n值存入数组单元b0, b1, b2中,请编制 jsValue()函数来实现 此功能,最后调用函数 writeDar()把数组 b的值输出到 out48.dat文件中。 注意:部分源程序已给出。 请勿改动主函数 main()和输出函数 writeDat()的内容。 试题
2、程序: #include stdio. h int b3; jsValue ( ) main ( ) jsValue( ); printf( “M=100, n=%dnM=1000, n=%dnM=10000, n=%dn“, b0,b1,b2); writeDat (); writeDat () FILE *fp; fp=fopen (“out48.dat“, “w“); fprintf(fp,“%dn%dn%dn“,b0,b1,b2); fclose (fp); 国家三级(网络技术)机试模拟试卷 48答案与解析 一、程序设计题 1 【正确答案】 jsValue ( ) int al=1,
3、a2=1, n=1, an; int sum0, sum; sum0=a1+a2; while (1) an=al+a2*2; /*求下一个级数 */ Sum=s umO +an; /*求级数和 */ a1=a2; /*将 a2赋给 a1*/ a2=an; /*将 an赋给 a2* / n+; if(sumo 100 /*则将 n存入数组单元 b0中 */ if(sumo l000 /*则将 n存入数组单元 b1中 */ if(sumo l0000 /*则将 n存入数组单元 b2中 */ break; /*并强行退出循环 */ sumo=sum; /*将 sum赋给 sum0,为下一次循环的求和作准备 */ 【试题解析】 本题考查的知识点如下: (1)利用循环和判 断求级数。 (2)循环的强行退出。 (3)多个条件的 “与 ”运算。 由级数的表达式可以看出,级数中的各项可以由循环依次求得。当级数的和达到要求的条件时就可以退出循环结构。因为退出循环的两个条件 Sn M, Sn+1M要同时满足,所以两条件之间要用到 “与 ”运算。这里使用 break退出整个循环结构。