6-7 统计某类完全平方数 (20分)
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include
#include
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
15 {
16 a[i]=n%10;//为数组赋值
17 n=n/10;
18 }
19 int p,q;//判断数组中是否存在至少两个相同的数字
20 int sign=0;
21 for(p=0;p
22 {
23 for(q=p+1;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 }
关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[pta 6-7 统计某类完全平方数 (20分)]http://www.zyiz.net/tech/detail-102552.html