pta 6-7 统计某类完全平方数 (20分)

时间:2023-04-21 22:01:38
6-7 统计某类完全平方数 (20分)                                         

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。

函数接口定义:
int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。 裁判测试程序样例:
#include <stdio.h>
#include <math.h> int IsTheNumber ( const int N ); int main()
{
int n1, n2, i, cnt; scanf("%d %d", &n1, &n2);
cnt = ;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d\n", cnt); return ;
} /* 你的代码将被嵌在这里 */ 输入样例: 输出样例:
cnt =
我的代码及注释:
 //判断是否为完全平方数
int is1(int n)
{
if((sqrt(n)-(int)sqrt(n))==)return ;//sqrt(n)为c语言中开平方的函数,此函数的返回值是double型
else return ;
}
//判断是否有两位数字相同
int is2(int n)
{
int len=;
len=(int)log10(n)+;//利用c语言中10的对数加1来计算整数的数位
int a[len];//定义一个适当长度的数组,用来存放整数的各位数位
int i;
for(i=;i<len;i++)
{
a[i]=n%;//为数组赋值
n=n/;
}
int p,q;//判断数组中是否存在至少两个相同的数字
int sign=;
for(p=;p<len;p++)
{
for(q=p+;q<len;q++)
{
if(a[p]==a[q])
{
sign=;break;//若数组中有两个相同的数字,则更改sign的值,并中断循环
}
}
}
if(sign==)return ;
else return ;
} int IsTheNumber ( const int N )
{
if(is1(N) && is2(N))//判断条件
return ;
}