1、计算机三级数据库技术-79 及答案解析(总分:100.00,做题时间:90 分钟)1.下列程序的功能是:在 3 位整数(100999)中寻找符合下面条件的整数,并依次从小到大存入数组 b 中。它既是完全平方数,又有两位数字相同(例如,144,676 等)。请编写函数 int jsValue(int bb)实现此功能,并返回满足该条件的整数的个数。最后调用函数 writeDat(),把结果输出到文件 OUT.DAT 中。 请勿改动主函数 main()和写函数 writeDat()的内容。 试题程序 #includestdio.h void writeDat(); int jsValue(int
2、bb) void main() int b20, num; mum=jsValue(b); writeDat(mum, b); void writeDat(int num, int b) FILE*out; int i; out=fopen(“OUT.DAT“, “w“); fprintf(out, “%dn“, num); for(i=0; inum; i+) fprintf(out, “%dn“, bi); fclose(out); (分数:100.00)_计算机三级数据库技术-79 答案解析(总分:100.00,做题时间:90 分钟)1.下列程序的功能是:在 3 位整数(100999)中
3、寻找符合下面条件的整数,并依次从小到大存入数组 b 中。它既是完全平方数,又有两位数字相同(例如,144,676 等)。请编写函数 int jsValue(int bb)实现此功能,并返回满足该条件的整数的个数。最后调用函数 writeDat(),把结果输出到文件 OUT.DAT 中。 请勿改动主函数 main()和写函数 writeDat()的内容。 试题程序 #includestdio.h void writeDat(); int jsValue(int bb) void main() int b20, num; mum=jsValue(b); writeDat(mum, b); void
4、 writeDat(int num, int b) FILE*out; int i; out=fopen(“OUT.DAT“, “w“); fprintf(out, “%dn“, num); for(i=0; inum; i+) fprintf(out, “%dn“, bi); fclose(out); (分数:100.00)_正确答案:()解析:int jsValue(int bb) int i, j; /*定义循环控制变量*/ int cnt=0; /*定义计数器变量*/ int a3, a2, a1; /*定义变量存储三位数每位的数字*/ for(i=100; i=999; i+) /*
5、在该范围中找符合条件的数*/ for(j=10; j=sqrt(i); j+) if(i=j*j) /*如果该数是完全平方数*/ a3=i/100; /*求该数的百位数字*/ a2=i%100/10; /*求该数的十位数字*/ a1=i%10; /*求该数的个位数字*/ if(a3=a2 | a3=a1 | a2=a1) /*有两位数字相同*/ bbcnt=i; /*则把该数存入数组 bb 中*/ cnt+; /*统计满足条件的数的个数*/ return cnt; /*返回满足该条件的整数的个数*/ 考点 本题考查对一定范围内整数的筛选。考查的知识点主要包括:多位整数的分解算法,完全平方数判断方法,if 判断语句和逻辑表达式。 此题属于数学类问题。分析题干,本题需注意 2 个关键点:关键点 1 判断该数是否是完全平方数;关键点2 判断该数是否有两位数数字相同。 本题的解题思路为:通过循环控制,依次判断 100 至 999 数是否满足关键点 1(是否为完全平方数)。如果是,则将该数分解出各位数数字,并判断是否有两位数数字相同,如果存在,则个数加 1,并将该数存入数组中。