读书人

一个小程序不知道哪错了 请帮忙看以下

发布时间: 2012-02-10 21:27:42 作者: rapoo

一个小程序不知道哪错了 请帮忙看以下
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

main()
{
long int i,n=0;
for(i=1;i <=100000;i++)
if((sqrt(i+100)*sqrt(i+100)==i+100)&&(sqrt(i+268)*sqrt(i+268)==i+268))
printf( "%ld\t ",i);

getch();
}


我用的是win-tc 谢谢了

[解决办法]
1).题目给的第个条件是168,程序中你写268
2)因为sqrt函数把int转成double来算,所以给出了很多不正确的结果.

main()
{
long int i,n=0;
for(i=1;i <=100000;i++)
//强制转换一下,得出这个数是156,156+100=16^2 156+168=18^2
if(((long int)sqrt(i+100)*(long int)sqrt(i+100)==i+100)&&((long int)sqrt(i+168)*(long int)sqrt(i+168)==i+168))
printf( "%ld\t ",i);

getch();
}

读书人网 >C++

热点推荐