1、三级数据库技术机试-170 及答案解析(总分:100.00,做题时间:90 分钟)1.请编写函数 countValue(),它的功能是:求 n 以内(不包括 n)同时能被 3 与 7 整除的所有自然数之和的平方根 s,并作为函数值返回,最后结果 s 输出到文件 OUT11DAT 中。例如,若 n 为 1000 时,函数值应为 s=153909064。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 progReadWrite()的内容。试题程序:#includeconio.h#includemath.h#includestdio.hdouble countValue(int
2、n)main ( )clrscr();printf (“自然数之和的平方根=%f/n“, countValue(lO00) ;pregReadWrite();pregReadWrite()FILE *wf;int i, n;float s;wf = fepen(“OUT11.DAT“, “w“);s = ceuntValue(1000);fprintf(wf, “%f/n“, s);fclese(wf);(分数:100.00)_三级数据库技术机试-170 答案解析(总分:100.00,做题时间:90 分钟)1.请编写函数 countValue(),它的功能是:求 n 以内(不包括 n)同时能被
3、 3 与 7 整除的所有自然数之和的平方根 s,并作为函数值返回,最后结果 s 输出到文件 OUT11DAT 中。例如,若 n 为 1000 时,函数值应为 s=153909064。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 progReadWrite()的内容。试题程序:#includeconio.h#includemath.h#includestdio.hdouble countValue(int n)main ( )clrscr();printf (“自然数之和的平方根=%f/n“, countValue(lO00) ;pregReadWrite();pregRe
4、adWrite()FILE *wf;int i, n;float s;wf = fepen(“OUT11.DAT“, “w“);s = ceuntValue(1000);fprintf(wf, “%f/n“, s);fclese(wf);(分数:100.00)_正确答案:(double countValue(int n)double xy=0.0;int i;for(i=1;in;i+)if(i%3=0 & i%7=0) xy+=i; /*求 n 以内(不包括 n)同时能被 3 与 7 整除的所有自然数之和*/xy=sqrt(double)xy); /*再对总和求平方根*/return xy;)解析:解析 本题的解题思路是:利用一个 for 循环依次从 n 个自然数当中取数,对当前取出的数进行条件判断。判断条件为:既能被 3 整除同时也能被 7 整除,因此,用“&”运算符来连接两个条件表达式,当某数满足判断条件时,就把该数累加到变量 xy 中(xy 的初始值为 00),当所有满足条件的数都被找完后,对累加求得的变量 xy 的值进行求平方根的计算,并把所求得的结果作为函数值返回。