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

    本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144676等。
  2. 函数接口定义:
  3. int IsTheNumber ( const int N );
  4. 其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0
  5. 裁判测试程序样例:
  6. #include <stdio.h>
  7. #include <math.h>
  8.  
  9. int IsTheNumber ( const int N );
  10. int main()
  11. {
  12. int n1, n2, i, cnt;
  13. scanf("%d %d", &n1, &n2);
  14. cnt = 0;
  15. for ( i=n1; i<=n2; i++ ) {
  16. if ( IsTheNumber(i) )
  17. cnt++;
  18. }
  19. printf("cnt = %d\n", cnt);
  20. return 0;
  21. }
  22. /* 你的代码将被嵌在这里 */
  23. 输入样例:
  24. 105 500
  25. 输出样例:
  26. cnt = 6
  1. 我的代码及注释:
  1. 1 //判断是否为完全平方数
  2. 2 int is1(int n)
  3. 3 {
  4. 4 if((sqrt(n)-(int)sqrt(n))==0)return 1;//sqrt(n)为c语言中开平方的函数,此函数的返回值是double型
  5. 5 else return 0;
  6. 6 }
  7. 7 //判断是否有两位数字相同
  8. 8 int is2(int n)
  9. 9 {
  10. 10 int len=0;
  11. 11 len=(int)log10(n)+1;//利用c语言中10的对数加1来计算整数的数位
  12. 12 int a[len];//定义一个适当长度的数组,用来存放整数的各位数位
  13. 13 int i;
  14. 14 for(i=0;i<len;i++)
  15. 15 {
  16. 16 a[i]=n%10;//为数组赋值
  17. 17 n=n/10;
  18. 18 }
  19. 19 int p,q;//判断数组中是否存在至少两个相同的数字
  20. 20 int sign=0;
  21. 21 for(p=0;p<len;p++)
  22. 22 {
  23. 23 for(q=p+1;q<len;q++)
  24. 24 {
  25. 25 if(a[p]==a[q])
  26. 26 {
  27. 27 sign=1;break;//若数组中有两个相同的数字,则更改sign的值,并中断循环
  28. 28 }
  29. 29 }
  30. 30 }
  31. 31 if(sign==0)return 0;
  32. 32 else return 1;
  33. 33 }
  34. 34
  35. 35
  36. 36 int IsTheNumber ( const int N )
  37. 37 {
  38. 38 if(is1(N) && is2(N))//判断条件
  39. 39 return 1;
  40. 40 }

 

版权声明:本文为3111-Tomorrow原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/3111-Tomorrow/p/12241545.html