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++;
}
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追问谢谢了。可惜只能采纳一个。
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追问谢谢了。可惜只能采纳一个。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯