永发信息网

C#关于使用sqrt()的一个小程序,帮看看哪里有问题呢

答案:4  悬赏:40  手机版
解决时间 2021-11-29 00:04
  • 提问者网友:相思似海深
  • 2021-11-28 18:56
C#关于使用sqrt()的一个小程序,帮看看哪里有问题呢
最佳答案
  • 五星知识达人网友:煞尾
  • 2021-11-28 20:03
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 也是整数才 进ifint a = 1;
double temp1, temp2; //a是要求的数。temp1、temp2是a的平方根。
while (a < 1000)
{
temp1 = Math.Sqrt(a + 100);
temp2 = Math.Sqrt(a + 268);
if (temp1 % 1 == 0 && temp2 % 1 == 0)
if ((temp1 * temp1 == a + 100) && (temp2 * temp2 == a + 268))
{
Console.WriteLine(a);
//break;
}
a++;
}
全部回答
  • 1楼网友:鱼忧
  • 2021-11-28 22:20
目测是一个超长的if语句
  • 2楼网友:春色三分
  • 2021-11-28 20:48
你用break了。把break 去掉追问和break没关系。我运行结果是0,后来我就添加了个break,还是一个样。追答你不是想去1000内所有的数么? 是168 还是268?追问我求完全平方数啊。
  • 3楼网友:爱难随人意
  • 2021-11-28 20:20
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追问谢谢了。可惜只能采纳一个。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯