注册 登录
编程论坛 C语言论坛

求大佬帮忙看一下一道题!

梦小123 发布于 2021-03-19 23:03, 2336 次点击
题目:
求1000到n以内(包括n,1000<=n<=9999)中,满足(1)这些数本身是平方数,(2)低两位和高两位所成的两个两位数也是平方数。n由键盘输入(每个数后面带一个空格)
要求:(1)编写如下接口的功能函数:int fun(int n),该函数的功能是判断n是不是满足上述条件的数。若是,返回1,若不是返回0。

           (2)main函数去调用该功能函数。

平方数定义:一个数的平方根若是整数,则该数就是平方数
3 回复
#2
apull2021-03-20 00:18
你的这些题大同小异,参照其他题修改一下就好了,
#3
林月儿2021-03-20 13:40
程序代码:
#include <stdio.h>
#include <math.h>
int func(int up){
    int i,j,k,l;
    for (i=4; i*i<=99; i++) {
        for (j=4; j*j<=99; j++) {
            k=i*i*100+j*j;
            if(k>up)continue;
            l=(int)sqrt(k);
            if(l*l==k){
                return 1;
            }
        }
    }
    return 0;
}
int main() {
    printf("%d",func(9999));
    return 0;
}
#4
slbos2021-03-20 18:11
#include <stdio.h>

int fun(int n)
{
    int i,ret = 0,flag_sqrt = 0;
    for(i = 0;i < n/2;i++)
    {
        if((i*i) == n)
        {   
            flag_sqrt++;
            break;
        }
    }
    short high_two_bit = n >> 16,low_two_bit = n;
    for(i = 0;i < high_two_bit/2;i++)
    {
        if((i*i) == high_two_bit)
        {   
            flag_sqrt++;
            break;
        }
    }
    for(i = 0;i < low_two_bit/2;i++)
    {
        if((i*i) == low_two_bit)
        {   
            flag_sqrt++;
            break;
        }
    }
    if(flag_sqrt == 3)
    {
        return 1;
    }else{
        return  0;
    }
}

int main()
{
    printf("%d\n",fun(9999));
    return 0;
}
还没验证,不是键盘输入,思路大概是这样
1