1、计算机三级网络技术机试(上机操作)模拟试卷 59及答案与解析 一、程序设计题 1 某级数的前两项 A1-1, A2-1。以后各项具有如下关系: 某级数的前两项 A1-1,A2-1。以后各项具有如下关系: An=An-2+2An-1 请编制 Find_n()函数,其功能是:要求依次对于整数 M=100, 1000和 10000求出对应的 n值,使其满足: Sn M且Sn+1M,这里 Sn=A1+A2+An ,并依次把 n值存入数组单元 b0, b1, b2中,函数 WriteData()负责把结果输出到 OUT DAT文件 中。 注意;部分源程序已给出。 请勿改动主函数 main()和写函数 W
2、riteData()的内容。 试题程序: #include int b3; void WriteData(); void Find_n() void main() Find_n(); printf(“M=100, n= d nM=1000, n= d nM= 10000, n= d n”, bo, b1,b2); WriteData(); void WriteData() FILE*fp; fp=fopen(“OUT DAT”,“W”); fprintf(fp, “ d n d n d n”, b0, h1 b2); fclose(fp); 计算机三级网络技术机试(上机操作)模拟试卷 59答案
3、与解析 一、程序设计题 1 【正确答案】 vokI Find_n() int n=1; 定义计数器变量,保存求得的项数 int al=1, a2=1, an;用来保存级数的值 int sum0, sum; 用来存储级数的和的变量 sum0=a1+a2; 计算前两项的级数和 while(1) 无条件循环,循环体内有控制是否结束循环的 语句 an=al+a2*2; 求下一个级数 sum=sum0+an;求级数和 a1=a2; 将 a2赋给 a1 a2=an;将 an赋给 a2 n+; if(sum0=100) 如果满足 Snn+1=100 b0=n; 则将 n存入数组单元 b0中 if(sum0=1000) 如果满足 Snn+1=1000 b1=n; 则将 n存入数组单元 b1中 if(sum0=10000) 如果满足 Snn+1=10000 b2=n; 则将 n存入数组单元b2中 break; 并强行退出循环 sum0=sum; 将 sum赋给 sum0,为下一次循环的求和作 准备 【试题解析】 本题主要考查的是利用循环求级数。 由级数的表 达式可以看出,级数中的各项可以由循环依次求得。当级数的和达到要求的条件时即可退出循环结构。因为退出循环的两个条件 SnM, Sn+1M要同时满足,所以两条件之间要用到逻辑 “与 ”运算。这里使用 break语句退出整个循环结构。