1、三级数据库技术机试-105 及答案解析(总分:100.00,做题时间:90 分钟)1.fclese(out);(分数:100.00)_三级数据库技术机试-105 答案解析(总分:100.00,做题时间:90 分钟)1.fclese(out);(分数:100.00)_正确答案:(int jsValue(int bb)int i,j,k=0;int hun,ten,data;for(i-100;i=999;i+)j=10;while(j*j=i)if(i=j*j) /*如果该数是完全平方数*/hun=i/100; *求该数的百位数字*data=i-hun*100;*得到后两位数*ten=data/
2、10; /*求该数的十位数字*/data=data-ten*10;*求该数的个位数字*if(hun=ten | hun=data | ten=data) /*有两位数字相同*/bbk=i; /*则把该数存入数组 bb 中*k+; *统计满足条件的数的个数*j+;return k; *返回满足该条件的整数的个数*)解析:解析 解答本题,首先应该考虑用一个 for 循环宋依次取得 100 到 999 之间的各个数,并对当前所取得的数进行两个条件判断:一是判断该数是否是完全平方数:二是判断该数是否有两位数字相同。如果以上两个条件同时满足,则把该数存放到 b 数组中,尽管题目要求所存的数必须从小到大,
3、但我们取数的过程本身就是从小到大取得,因此,排序工作是没有必要做的,按照取数的顺序,把满足条件的数值存放到数组 b 中就可以了。判断某个数是否是完全平方数的方法是看该数是否可以拆成完全相同的两个数的积(当然要拆成的两个数一定是两位数),因此,我们再利用一个循环用 10 以上的两位数逐个去拆被判断的数,如果被判断的数恰好可以被完全拆分,则第一个条件成立,接着就开始依次取得被判断的数的百位、十位、个位上的数字值,看是否有两位数字相同。取得每一位上的数字值可以用“hun=i/100:data=i-hun*100: ten=data/10:data=data-ten*10:”几条语句来实现,hun 变量得到的是百位上的数字,ten变量得到的是十位上的数字,data 变量得到的是个位上的数字。