精华内容
下载资源
问答
  • 统计某类完全平方数

    2020-06-27 12:48:42
    本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则...

     

    本题要求实现一个函数,判断任一给定整数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

     

    代码如下:

    //判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 
    #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;
    }
    
    /* 你的代码将被嵌在这里 */
    //判断是否是完全平方数
    int IsSqrt(int N)
    {
    	float x = sqrt(N);
    	//是整数 
    	if(fabs(x-(int)x)<1e-8){
    		return 1;
    	}else{
    		return 0;
    	} 
    }
    
    //判断一个数至少有两位数字相同
    int IsSame(int N)
    {
    	int div=10;
    	//初始化为0 
    	int tmp[div];
    	for(int j=0;j<div;j++){
    		tmp[j]=0;
    	}
    	while(N>0)
    	{
    		tmp[N%10]++;
    		N = N/10; 
    	}
    	for(int i=0;i<10;i++){
    		if(tmp[i]>=2){
    			return 1;
    		}
    	}
    	return 0;
    } 
    
    int IsTheNumber ( const int N )
    {
    	 if(IsSqrt(N)&&IsSame(N)){
    	 	return 1;
    	 }
    	 return 0;
    }
    

     

    展开全文
  • PTA 6-7 统计某类完全平方数 (20分)

    千次阅读 2020-07-19 22:35:17
    6-7 统计某类完全平方数 (20分) 题目描述:本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N);其中N...

    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; 
    } /* 你的代码将被嵌在这里 */
    

    分析可知:
    1、满足至少有两位数字相同的完全平方数至少是三位数。故满足条件的N应该从100开始。
    2、完全平方数必为整数,所以要加整数限定,显然,若一个数开方后是整数,则必然满足
    sqrt(N)= =sqrt(int)(N)。如果一个数开方后是小数,那么强制转为int后结果必然和未强转的结果不同。
    3、至于统计该数字中某一个数字出现的频率,可以考虑将数字拆分后存储到一个数组中,用数组的索引0~9代表数字,索引所对应的元素代表该数字出现的频率,遍历数组,若存在元素的值大于等于二的时候返回1,否则返回0即可。
    4、数字的拆分用到十进制的定义:要获得十进制数上每一位的值,将该数字除以对应位的位权后模10即可。此外,为了计算方便,可以在取得对应位置上的数字后将其舍去,除以10即可。这两部做成一个循环,循环的出口,当数字整体小于10的时候退出即除以10==0即可

    int toArray(int N){
        int arr[10]={0};
        int res=N;
        while(res!=0){
            int tem=res%10;
            arr[tem]++;
            res=res/10;
        }
        for(int i=0;i<10;i++){
            if(arr[i]>=2){
                return 1;
            }
                
        }
        return 0;
    }
    int IsTheNumber ( const int N ){
        if(N>=100){
           if(sqrt(N)==(int)sqrt(N)){//是一个完全平方数
               return toArray(N);
           }
        }
        return 0;
        }
    
    展开全文
  • 统计某类完全平方数(C语言)

    千次阅读 2020-02-05 15:45:57
    统计某类完全平方数(C语言实现) 问题简述: 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口: //其中N是用户传入的参数。如果N满足条件,...

    统计某类完全平方数(C语言实现)

    问题简述:

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

    函数接口:

    //其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
    int IsTheNumber ( const int N ); 
    

    输入样例:

    105 500
    

    输出样例:

    cnt = 6
    

    解题思路:

    • 首先要了解到什么是完全平方数并用C如何来实现?
      若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。
      此时我们会想到c函数库中的sqrt()函数,函数原型是:double sqrt(double x),由于是双精度类型的函数,写入参数除了完全平方数以外,其他必返回小数部分不为0的浮点型,再经强制类型转化必会损失精度,所以先对N进行先开方再平方,筛选出一定范围内的完全平方数。

    • 如何让一个整数满足至少有两位数相同?
      我们可以先将这个整数的每一位都存放在数组中(因为整数有可能是3位、4位或更多位,所以可以定义1个长度为10的整型数组,并初始化全为0int arr[10] = {0};),并用变量记录该整数的位数。问题就转化为在一个数组中,是否存在至少有两个数相同。因此可以使用双层循环来判断,循环遍历的初始值以及条件。
      双层循环代码块:

    //i表示该整数的位数,即数组元素的有效个数
    for(m=0; m<i-1; m++) //注:m的取值范围小于i-1,若m去到i-1,则n可以取到i,造成数组下标越界异常
    {
    	f = arr[m]; //f表示当前要检查的目标
    	for(n=1+m; n<i; n++)
    	{
    		if(f == arr[n]) //如果数组中存在相同的元素,则返回1
    		{
    			flag = 0;
    			return 1;
    		}
    	}
    }
    

    接口实现:

    int IsTheNumber ( const int N )
    {
    	int arr[10] = {0}; //把N的各个数字存放在数组
    	int i=0,temp = N,f,flag = 1,m,n;
    	int x = (int)sqrt(N);
    	while(temp)
    	{
    		arr[i] = temp%10;
    		i++;              //i统计N的位数
    		temp /= 10;
    	}
    	if(x * x == N) //说明是一个完全平方数
    	{
    		//i表示该整数的位数,即数组元素的有效个数
    		for(m=0; m<i-1; m++) //注:m的取值范围小于i-1,若m去到i-1,则n可以取到i,造成数组下标越界异常
    		{
    			f = arr[m]; //f表示当前要检查的目标
    			for(n=1+m; n<i; n++)
    			{
    				if(f == arr[n]) //如果数组中存在相同的元素,则返回1
    				{
    					flag = 0;
    					return 1;
    				}
    			}
    		}
    		if(flag == 1)
    			return 0;
    	}
    	return 0;
    }
    

    源程序:

    #include <stdio.h>
    #include <math.h>
    
    int IsTheNumber ( const int N );
    
    int main()
    {
        int n1, n2, i, cnt;
    	printf("请输入测试范围:\n");
        scanf("%d %d", &n1, &n2);
        cnt = 0;
        for ( i=n1; i<=n2; i++ ) {
            if ( IsTheNumber(i) )
                cnt++;
        }
        printf("cnt = %d\n", cnt);
        return 0;
    }
    
    int IsTheNumber ( const int N )
    {
    	int arr[10] = {0}; //把N的各个数字存放在数组
    	int i=0,temp = N,f,flag = 1,m,n;
    	int x = (int)sqrt(N);
    	while(temp)
    	{
    		arr[i] = temp%10;
    		i++;              //i统计N的位数
    		temp /= 10;
    	}
    	if(x * x == N) //说明是一个完全平方数
    	{
    		//i表示该整数的位数,即数组元素的有效个数
    		for(m=0; m<i-1; m++) //注:m的取值范围小于i-1,若m去到i-1,则n可以取到i,造成数组下标越界异常
    		{
    			f = arr[m]; //f表示当前要检查的目标
    			for(n=1+m; n<i; n++)
    			{
    				if(f == arr[n]) //如果数组中存在相同的元素,则返回1
    				{
    					flag = 0;
    					return 1;
    				}
    			}
    		}
    		if(flag == 1)
    			return 0;
    	}
    	return 0;
    }
    

    测试:

    VC++6.0环境

    展开全文
  • 统计某类完全平方数 (20 分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户...

    统计某类完全平方数 (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

    分析:这道题让我很费解,题目呢也简单,但是应该是pintia上面有一点bug吧,我猜测的哈。本身我们的sqrt函数的参数是double类型的,但是在我使用sqrt(N)的时候竟然不会报错。因此我这里有两种答案。

    代码实现:

    int IsTheNumber ( const int N )
    {
    	int a[10]={0};
    	for(int i=1;i<N/2;i++){
    		if(i*i==N){
    			int s=N;
    			while(s!=0){
    			int temp=s%10;
    			a[temp]++;
    			
    			if(a[temp]==2)
    				return 1;
    			s=s/10;
    			}
    		}
    	}
    	return 0;
    }

    分析:这里我并没有sqrt函数,所以结果会耗时间一点。 

    代码实现:

    int IsTheNumber ( const int N )
    {
    	int n=(int)sqrt(N);
    	int a[10]={0};
    		if(n*n==N){
    		int s=N;
    		while(s){
    			int temp=s%10;
    			a[temp]++;
    			s /=10;
    			if(a[temp]==2)
    				return 1;
    		}
    	}
        return 0;
    }
    

    分析:这里我就用到了sqrt函数,相比第一个代码节约了很多的时间,但是我就是很费解为什么会运行成功,但是在我们的编译软件是无法运行成功的。

    展开全文
  • c语言-统计某类完全平方数

    千次阅读 2018-09-11 16:49:15
    6-7统计某类完全平方数(20 分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是...
  • 6-5 统计某类完全平方数 (20 分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是...
  • 判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则...
  • PTA 基础编程题目集 6-7 统计某类完全平方数 C语言 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N )...
  • 6-7 统计某类完全平方数 (20 分)

    千次阅读 2019-02-15 11:39:03
    6-7 统计某类完全平方数 (20 分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是...
  • 6-7 统计某类完全平方数(20 分)

    千次阅读 2018-07-29 21:26:46
    本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则...
  • 6-14 统计某类完全平方数 (10 分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户...
  • 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该...
  • 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。函数接口定义:int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该函数...
  • 6-7 统计某类完全平方数 (20 分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是...
  • 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 实现代码如下: int IsTheNumber ( const int N ) { int m=sqrt(N); int a[10]={0}; int i=0; ...
  • 6-7 统计某类完全平方数 (20分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入...
  • 题目地址 我的代码 int IsTheNumber(const int N) { int n = N, tn, jud = 0, mark = 0; tn = (int)(sqrt((double)(n))); //利用非完全平方整数,...//若 tn平方后 等于 被开方,说明n是完全平方整数(不存在...
  • 6-7 统计某类完全平方数(20 分)本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。函数接口定义:int IsTheNumber ( const int N ); 其中N是用户传入...
  • 首先判断是否为完全平方数,然后判断至少两位数字相同。 判断至少两位数字相同的时候,可建立一个长度为10的数字,分别对应每个数字,记录下出现的次数即可。 #include <stdio.h> #include <math.h> ...
  • 6-7 统计某类完全平方数 (20 分)本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 裁判测试程序...
  • 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则...
  • ** 6-7 统计某类完全平方数 (20分) ** 编译器: int IsTheNumber ( const int N ) { int x=sqrt(N),t=0; if(x*x==N) { int i,j,m=N,a[81]; for(i=0;N/pow(10,i)!=0;i++) ...
  • 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,...
  • i++)//这里的for循环起到了一个类似于计数器的作用,t依托数组通过数组从0-9的下标对应与输入N的个十百位.在用下标对应的计数中出现w数字的次数  {  if(a%10==i)  {  num[i]+=1;  if (num[i]>=2)  return 1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,605
精华内容 4,642
关键字:

统计某类完全平方数