亲宝软件园·资讯

展开

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

清雨, 人气:0
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 = 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 }

 

加载全部内容

相关教程
猜你喜欢
用户评论