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冲,请编制 sValue()函数来实现此功能,最后调用函数writeDat()把数组 b的值输出到 out48.dat文件中。 注 意:部分源程序已给出。 请勿改动主函数 mean()和输出函数 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“,bO,b1,b2); fclose (fp); 国家三级信息管理技术机试模拟试卷 48答案与解析 一、程序设计题 1 【正确答案】 j sValue ( ) int a1=1,a2
3、=1,n=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(sum0 100 /*则将 n存入数组单元 b0中 */ if(sum0 1000 /*则将 n存入数组单元 b1中 */ if(sum0 10000 /* 则将 n存入数组单元 b2中 */ break; /*并强行退出循环 */ sum0=sum; /*将 sum赋给 sum0,为下一次循环的求和作准备 */ 【试题解析】 本题考查的知识点如下: (1)利用循环和判断求级数。 (2)循环的强行退出。 (3)多个条件的 “与 ”运算。 由级数的表达式可以看出,级数中的各项可以由循环依次求得。当级数的和达到要求的条件时就可以退出循环结构。因为退出循环的两个条件 Sn M, Sn+1M要同时满足,所以两条件之间要用到 “与 ”运算。这里使用 break退出整个循环结构。