1、国家二级 C语言机试(操作题)-试卷 34及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.甲乙丙丁四人同时开始放鞭炮,甲每隔 t1秒放一次,乙每隔 t2秒放一次,丙每隔 t3秒放一次,丁每隔 t4秒放一次,每人各放 n次。函数 fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第 0秒。 例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到 28次鞭炮声。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文
2、件夹下的 BLANKlC 中。 不得增行或删行,也不得更改程序的结构! #include /*found*/ #define OK(i,t,r1)( _1_ t=0) &(i/t_二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形:构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回 3,若能构成等腰三角形函数返回 2,若能构成一般三角形函数返回 1,若不能构成三角形函数返回 0。 请改正函数 fun中指定部位的错误,使它能得出正确的 结果。 注意:不要改动 main函数,不得增行或删行,也
3、不得更改程序的结构! #include #include /*found*/ v02d fun(int a,int b,int c) if(a+bc&b+ca&a+cb) if(a=b&b=c) return 3; el se if(a=b | b=c | a=c) return 2; /*found*/ else return 1 else retl5trn 0; main() int a,b,c,shape ; printf(“/nInput a,b,c:“);scarlf (“ddd“,&a, &b,&c); printf(“/na=d, b=d, c=d/n“,a,b,c); shap
4、e=fun(a,b,c); printf(“/n/nThe shape:d/n“, shape); (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出 3到 n之问(含 3和 n)所有素数的平方根之和。 例如,在主函数中从键盘给 n输入 100后,输出为: sum=148874270。 注意:要求 n的值大于 2但不大于 100。 部分源程序在文件 PROG 1C 中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #inclucle #inclucle double fun(int
5、n) NONO() /*请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 */ FILE*rf,*wf ; int n,i;double s; rf=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“); for(i=0;i_国家二级 C语言机试(操作题)-试卷 34答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.甲乙丙丁四人同时开始放鞭炮,甲每隔 t1秒放一次,乙每隔 t2秒放一次,丙每隔 t3秒放一次,丁每隔 t4秒放一次,每人各放 n次。函数 fun的功能是根据形参提供的值,求出总共
6、听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第 0秒。 例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到 28次鞭炮声。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKlC 中。 不得增行或删行,也不得更改程序的结构! #include /*found*/ #define OK(i,t,r1)( _1_ t=0) &(i/t_正确答案:(正确答案:(1)I (2)t+ (3)count)解析:解析:第一空:由“if(OK(t,t1,n)|OK(t,t2,n)|
7、OK(t,t3,n)|OK(t,t4,n)count+;”可知 count计数听到的鞭炮声,在满足 if条件时,计数加 1。t 时刻,至少有一个人放了一个鞭炮才能听得到声音,故 ttl=0、tt2=0、tt3=0、tt4=0 这四个当中至少一个成立,四者是或的关系。第一个标识下是宏 OK的定义,由前面的分析可知,OK 宏的作用就是判断 ti(i 等于1、2、3 和 4)是否等于 0且 i/t二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形:构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返
8、回 3,若能构成等腰三角形函数返回 2,若能构成一般三角形函数返回 1,若不能构成三角形函数返回 0。 请改正函数 fun中指定部位的错误,使它能得出正确的 结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! #include #include /*found*/ v02d fun(int a,int b,int c) if(a+bc&b+ca&a+cb) if(a=b&b=c) return 3; el se if(a=b | b=c | a=c) return 2; /*found*/ else return 1 else retl5trn 0; main() i
9、nt a,b,c,shape ; printf(“/nInput a,b,c:“);scarlf (“ddd“,&a, &b,&c); printf(“/na=d, b=d, c=d/n“,a,b,c); shape=fun(a,b,c); printf(“/n/nThe shape:d/n“, shape); (分数:2.00)_正确答案:(正确答案:(1)int fun(int a,int b,int c) (2)else return 1;)解析:解析:(1)主函数内 fun函数的调用形式是:“shape=fun(a,b,c);”,函数有返回值,且返回值类型是整型,故第一标识下应改为“i
10、nt fun(int a,int b,int c)”。 (2)第二个标识下的 else语句应该是指除了等边及等腰三角形之外的三角形,在 C语言中,语句是以分号“;”结束,而第二标识下的语句没有以分号结束,故第二标识下应改为“else return 1;”。三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出 3到 n之问(含 3和 n)所有素数的平方根之和。 例如,在主函数中从键盘给 n输入 100后,输出为: sum=148874270。 注意:要求 n的值大于 2但不大于 100。 部分源程序在文件 PROG 1C 中。 请勿改动主函数 main和其他函
11、数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #inclucle #inclucle double fun(int n) NONO() /*请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 */ FILE*rf,*wf ; int n,i;double s; rf=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“); for(i=0;i_正确答案:(正确答案:int i,j=0 ; double s=0; for (i=3; i1),所以判别 i是否为素数,只要用2、3、i-1 这些数逐个去除 i,观察余数是否为 0即可,只要有一次相除余数为 0,i 就不是素数,否则 i为素数。 (2)在循环中找到每一个素数,然后对其求平方根,然后进行累加求和。