编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:

编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:
它是完全平方数,又有两位数字相同,如144、676等,函数返回找出这样的数据的个数。请同时编写主函数。
例:(括号内为说明)
输入
3 (repeat=3)
150
500
999
输出
count=2
count=6
count=8

第1个回答  2013-11-25
#include <stdio.h>
#include <math.h>
#include "genlib.h"
#include "simpio.h"
int search(int k);
int main(void)
{
int number,ri,looptimes;
int search(int k);
scanf("%d",&looptimes);
for(ri=1;ri<=looptimes;ri++){
do{
scanf("%d",&number);
}while(number<101||number>999);

printf("count=%d\n",search(number));
}
}
int search(int n)
{
int i,j;

j=0;
for(i=101;i<=n;i++){
if(squar(i)==1&&abc(i)==1){
j++;
}
}
return j;
}
int abc(int m)
{
int a,b,c;

a=m%10;
b=(m/10)%10;
c=m/100;
if(a==b||b==c||a==c) return 1;
if(a==b==c) return 0;
}
int squar(int k)
{
int i;

for(i=1;i<=k;i++){
if(i*i==k) { return 1;
break;
}
}
}本回答被网友采纳
第2个回答  2016-03-13
#include<stdio.h>
#include<math.h>
int num(int n);
int main()
{
int n;
scanf("%d",&n);
printf("count=%d\n",num(n));
return 0;
}
int num(int n)
{
intk,j,d0,d1,d2;
int count=0;

k=sqrt((float)n);

for(j=11; j<= k; j++)
{
d0=(j*j)%10;
d1=(j*j)/10%10;
d2=(j*j)/100;

if(d0==d1|| d1==d2 || d0==d2)
count++;
}
return count;
}