点1判断该数是否是完全平方数;关键点2判断该数是否有两位数数字相同。
本题的解题思路为:通过循环控制,依次判断100至999数是否满足关键点1(是否为完全平方数)。如果是,则将该数分解出各位数数字,并判断是否有两位数数字相同,如果存在,则个数加1,并将该数存入数组中。
【参考答案】
int jsValue(int bb[])
{
int i,j; /*定义循环控制变量*/
int cnt=0; /*定义计数器变量*/
int a3,a2,a1; /*定义变量存储三位数每位的数字*/
for(i=100;i<=999;i++) /*在该范围中找符合条件的数*/
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) /*有两位数字相同*/
{
bb[cnt]=i; /*则把该数存入数组bb中*/
cnt++;
} /*统计满足条件的数的个数*/
}
return cnt; /*返回满足该条件的整数的个数*/
}
【易错提示】 完全平方数的判断方法错误,分解整数各个数位的方法错误,if判断语句中表达式。
5. 【考点分析】 本题考查对一定范围内整数的筛选。考查的知识点主要包括:多位整数的分解算法,素数的判断算法,if判断语句和逻辑表达式。
【解题思路】 此题属于数学类问题。分析题干要求,归纳出本题的2个关键点:关键点1判断该数是否为素数;关键点2判断是否满足条件:个位数字和十位数字之和被10除所得余数等于百位数字。
本题思路为:通过循环语句,依次求出所有3位数的各位数数字,并判断是否满足关键点2(个位数字和十位数字之和被10除所得余数等于百位数字),如果满足则判断该数是否为素数,如果是则个数加1,并将该数加到和值中。判断的方法为:依次取从2到该数1/2的数去除这个数,如果有一个可被整除,则不是素数,如果循环后的数大于该数的一半就可以判定该数是一个素数。
【参考答案】
void countValue()
{
int i,j; /*定义循环控制变量*/