| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:大侠们 帮忙看看 指点一下啊??????
只看楼主 加入收藏
sdmscu
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-7
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:12 
大侠们 帮忙看看 指点一下啊??????
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?


本人写的程序:
#include"stdio.h"
#include"math.h"
void main()
{
    long int i,q,p;
    for(i=1;i<100000;i++)
    {p=sqrt(i+100);
        q=sqrt(i+268);
        if(p*p==i+100&&q*q==i+268)
            printf("\n%d\n",i);
    }
}


vs2008运行下提示错误:   error C2668: “sqrt”: 对重载函数的调用不明确  试图匹配参数列表“(long)”时



大侠们    帮忙看看 指点一下啊??????
搜索更多相关主题的帖子: long void include 
2010-08-09 20:38
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:2 
#include"stdio.h"
#include"math.h"
有几个错误,LZ看看:
void main()
{
    long int i,q,p;
    for(i=1;i<100000;i++)
    {p=sqrt(i+100);//是sqrt好像需要浮点型
        q=sqrt(i+268);//一样的,同上
        if(p*p==i+100&&q*q==i+268)
            printf("\n%d\n",i);
    }
}

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-08-09 20:54
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:2 
用WIN-TC能够运行,而且结果也没问题!
2010-08-09 21:00
不归鹄
Rank: 9Rank: 9Rank: 9
来 自:冥王星
等 级:蜘蛛侠
威 望:4
帖 子:491
专家分:1380
注 册:2009-12-20
收藏
得分:2 
我的VS2008上可以运行,有两个警告,是说“从“double”转换到“long”,可能丢失数据”,这是因为sqrt函数返回的是浮点型数据,只有三个重载的函数,一个是double ,一个是long double ,一个是float,没有long.

2010-08-09 21:01
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:2 
你的源文件的扩展名如果不是cpp,而是c的话,就不会有重载的问题了。
标准C库里面的sqrt是要double作为参数和返回值的。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-08-09 21:02
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
再次建议初学者:不要混淆C和C++

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-08-09 21:03
不归鹄
Rank: 9Rank: 9Rank: 9
来 自:冥王星
等 级:蜘蛛侠
威 望:4
帖 子:491
专家分:1380
注 册:2009-12-20
收藏
得分:0 
要玩C,就得用TC,最好版英文版!用VS2008之类的容易出错

2010-08-09 21:04
不归鹄
Rank: 9Rank: 9Rank: 9
来 自:冥王星
等 级:蜘蛛侠
威 望:4
帖 子:491
专家分:1380
注 册:2009-12-20
收藏
得分:0 
以下是引用forever74在2010-8-9 21:03:30的发言:

再次建议初学者:不要混淆C和C++
我可不是故意误导他们啊(我也是初学者),只不过他上面说到重载,我就说说而已我先学的是C,后是C++

2010-08-09 21:07
sdmscu
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-7
收藏
得分:0 
回复 8楼 不归鹄
谢谢你   谢谢各位了    我太菜了  希望以后多指教!
2010-08-09 21:17
星舞突击者
Rank: 2
等 级:论坛游民
帖 子:15
专家分:68
注 册:2010-7-30
收藏
得分:2 
看了楼上的思路和lz的都一样啊,我的思路和lz的不一样,都结果是一样的,按照题目的意思,只需要对(i+100)和(i+268)开方后进行判断就行了,如果开方后是整数,说明i值满足要求,如果不满足要求i就不合要求,我的代码如下,其实用的思路是差不多的
程序代码:
#include<stdio.h>
#include<math.h>
int main(void)
{
    long  k;
    for(k=1;k<10000;k++)
    {
        float p;
        float q;
        p=sqrt(k+100);
        q=sqrt(k+268);
        int m;
        int n;
        m=(int )p;
        n=(int )q;
        if(m==p&&n==q)
        printf("\n%d\n",k);
   
    //    if(p*p==k+100&&q*q==k+268)
    //    printf("%ld\n",k);
    }
    return 0;
}

2010-08-10 10:44
快速回复:大侠们 帮忙看看 指点一下啊??????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028757 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved