1、三级数据库技术-543 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.程序 PROG1.G 的功能是:寻找并输出 11 至 999 之间的数 m,它满足 m、m 2 和 m 3 均为回文数。所谓回文数是指其各位数字左右对称的整数,例如 121,676,94249 等。满足上述条件的数如 m=11,m 2 =121,m 3 =1331 皆为回文数。请考生编制函数 int JsValue(long m)实现此功能,如果是回文数,则函数返回 1,反之则返回 0。最后把结果输出到文件 out.dat 中。 请勿改动主函数 main()。 #
2、include stdio.h int jsValue(long m) main () long m; FILE *out; out=fopen(“out.dat“, “w“); /以只写的方式打开文件 out.dat,并使文件指针 out 指向此文件 /*对在 11 至 999 之间的数 m 进行扫描,调用函数 jsValue()进行判断,如果 m, m2, m3 都是回文,则把这三个数输出到屏幕上并输出到文件 out.dat 中*/ for(m=11; m1000; m+) if(jsValue(m) fprintf(out, “m=%41d,m*m=%61d, m*m*m=%81dn“,
3、 m, m*m, m*m*m); fclose (out); /关闭 out.dat 文件 (分数:100.00)_三级数据库技术-543 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.程序 PROG1.G 的功能是:寻找并输出 11 至 999 之间的数 m,它满足 m、m 2 和 m 3 均为回文数。所谓回文数是指其各位数字左右对称的整数,例如 121,676,94249 等。满足上述条件的数如 m=11,m 2 =121,m 3 =1331 皆为回文数。请考生编制函数 int JsValue(long m)实现此功能,如果是回文
4、数,则函数返回 1,反之则返回 0。最后把结果输出到文件 out.dat 中。 请勿改动主函数 main()。 #include stdio.h int jsValue(long m) main () long m; FILE *out; out=fopen(“out.dat“, “w“); /以只写的方式打开文件 out.dat,并使文件指针 out 指向此文件 /*对在 11 至 999 之间的数 m 进行扫描,调用函数 jsValue()进行判断,如果 m, m2, m3 都是回文,则把这三个数输出到屏幕上并输出到文件 out.dat 中*/ for(m=11; m1000; m+) i
5、f(jsValue(m) fprintf(out, “m=%41d,m*m=%61d, m*m*m=%81dn“, m, m*m, m*m*m); fclose (out); /关闭 out.dat 文件 (分数:100.00)_正确答案:()解析:long i,n; i=m; n=0; /*在 while 循环体中对组成整数 i 的各位上的数字进行逆序排列*/ while(i) n=n*10+i%10; i/=10; return m=n; /如果逆序排列后的数与原数相同,则返回 1 解析 回文数字。 定义长整型变量 i、n,并分别赋给初值 m、0(m 的值等于主函数中 m 循环变量的值)。 当变量 i 的值非零时,即 m 值不为 0 时,把 n 乘以 10 加上 i 除以 10 所得的余数的和赋给变量 n,把 i除以 10 所得的商,赋给变量 i。实现对整数 i 各位上的数字进行逆序排列。 当退出 while 循环时,判断 n 是否等于 m,如果两者相等,则说明参数 m 是回文,返回 1,否则,不是回文,返回 0。