C#关于使用sqrt()的一个小程序,帮看看哪里有问题呢
我是要求这个:某个整数加上100后它是一个完全平方数,再加上168后它又是一个完全平方数,求这个数。代码如下:运行结果总是为0doublea=0;doubletemp1,...
我是要求这个:某个整数加上100后它是一个完全平方数,再加上168后它又是一个完全平方数,求这个数。
代码如下:运行结果总是为 0
double a = 0;
double temp1, temp2; //a是要求的数。temp1、temp2是a的平方根。
while(a<1000)
{
temp1 = Math.Sqrt(a + 100);
temp2 = Math.Sqrt(a + 268);
if ((temp1 * temp1 == a + 100) && (temp2 * temp2 == a + 268))
{
Console.WriteLine(a);
break;
}
a++;
}
是不是使用sqrt()还需要在头文件那里添加某个东西?
using Syestem.....什么的?
对了,我把条件while(a<1000000),结果运行也是0的 展开
代码如下:运行结果总是为 0
double a = 0;
double temp1, temp2; //a是要求的数。temp1、temp2是a的平方根。
while(a<1000)
{
temp1 = Math.Sqrt(a + 100);
temp2 = Math.Sqrt(a + 268);
if ((temp1 * temp1 == a + 100) && (temp2 * temp2 == a + 268))
{
Console.WriteLine(a);
break;
}
a++;
}
是不是使用sqrt()还需要在头文件那里添加某个东西?
using Syestem.....什么的?
对了,我把条件while(a<1000000),结果运行也是0的 展开
4个回答
展开全部
double a = 0;
double temp1, temp2; //a是要求的数。temp1、temp2是a的平方根。
int iTemp1, iTemp2;
while (a < 1000)
{
temp1 = Math.Sqrt(a + 100);
iTemp1 = (int)temp1; //取整
temp2 = Math.Sqrt(a + 268);
iTemp2 = (int)temp2; //取整
if ((iTemp1 * iTemp1 == a + 100) && (iTemp2 * iTemp2 == a + 268))
{
Console.WriteLine(a);
//break;
}
a++;
}
算法有问题
计算结果为
21
261
double temp1, temp2; //a是要求的数。temp1、temp2是a的平方根。
int iTemp1, iTemp2;
while (a < 1000)
{
temp1 = Math.Sqrt(a + 100);
iTemp1 = (int)temp1; //取整
temp2 = Math.Sqrt(a + 268);
iTemp2 = (int)temp2; //取整
if ((iTemp1 * iTemp1 == a + 100) && (iTemp2 * iTemp2 == a + 268))
{
Console.WriteLine(a);
//break;
}
a++;
}
算法有问题
计算结果为
21
261
追问
谢谢了。可惜只能采纳一个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a从1开开始
int a = 1;
double temp1, temp2; //a是要求的数。temp1、temp2是a的平方根。
while (a < 1000)
{
temp1 = Math.Sqrt(a + 100);
temp2 = Math.Sqrt(a + 268);
if ((temp1 * temp1 == a + 100) && (temp2 * temp2 == a + 268))
{
Console.WriteLine(a);
break;
}
a++;
}
更多追问追答
追问
挺奇怪的,怎么改成1就可以了呢。我不是在循环里设了a++吗
再问一个,因为题目要求是int整数。但是sqrt()里的参数必须是double,有什么方法解决吗
a是int,要求它的两个平方根也是int,这样才符合题目要求。如100=10x10
追答
那就还需要判断 temp1 是整数 temp2 也是整数才 进if
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用break了。把break 去掉
更多追问追答
追问
和break没关系。我运行结果是0,后来我就添加了个break,还是一个样。
追答
你不是想去1000内所有的数么? 是168 还是268?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-07-31
展开全部
目测是一个超长的if语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询