pta 6-7 统计某类完全平方数 (20分)
清雨, 人气:06-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 = 0; for ( i=n1; i<=n2; i++ ) { if ( IsTheNumber(i) ) cnt++; } printf("cnt = %d\n", cnt); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 105 500 输出样例: cnt = 6
我的代码及注释:
1 //判断是否为完全平方数 2 int is1(int n) 3 { 4 if((sqrt(n)-(int)sqrt(n))==0)return 1;//sqrt(n)为c语言中开平方的函数,此函数的返回值是double型 5 else return 0; 6 } 7 //判断是否有两位数字相同 8 int is2(int n) 9 { 10 int len=0; 11 len=(int)log10(n)+1;//利用c语言中10的对数加1来计算整数的数位 12 int a[len];//定义一个适当长度的数组,用来存放整数的各位数位 13 int i; 14 for(i=0;i<len;i++) 15 { 16 a[i]=n%10;//为数组赋值 17 n=n/10; 18 } 19 int p,q;//判断数组中是否存在至少两个相同的数字 20 int sign=0; 21 for(p=0;p<len;p++) 22 { 23 for(q=p+1;q<len;q++) 24 { 25 if(a[p]==a[q]) 26 { 27 sign=1;break;//若数组中有两个相同的数字,则更改sign的值,并中断循环 28 } 29 } 30 } 31 if(sign==0)return 0; 32 else return 1; 33 } 34 35 36 int IsTheNumber ( const int N ) 37 { 38 if(is1(N) && is2(N))//判断条件 39 return 1; 40 }
加载全部内容