黑马程序员技术交流社区
标题:
代码得到的结果怎么与同学的不一样啊?
[打印本页]
作者:
殘遛の丶狳味
时间:
2013-8-17 22:38
标题:
代码得到的结果怎么与同学的不一样啊?
int sum = GetSum();
Console.WriteLine(sum);
Console.ReadKey();
public static int GetSum()
{
int sum = 0;
for (int i = 2; i <= 100; i++)
{
bool b = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
b = false;
}
if (b)
{
sum += i;
}
}
}
return sum;
}
复制代码
为什么结果是66705
作者:
小天
时间:
2013-8-18 01:26
你的程序运行没有问题
你同学的结果是多少?32489
作者:
§風過無痕§
时间:
2013-8-18 14:16
本帖最后由 §風過無痕§ 于 2013-8-18 14:20 编辑
你的意思是不是只要不满足 if (i % j == 0)这个条件的 都执行sum += i;这个操作呀
如果是以上意思的话:把这句 bool b = true; 的位置往下移 试试!
for (int i = 2; i <= 100; i++)
{
// bool b = true;
for (int j = 2; j <i; j++)
{
bool b = true;
if (i % j == 0)
{
b = false;
}
if (b)
{
sum += i;
}
}
}
复制代码
作者:
黑骏马
时间:
2013-8-19 08:55
本帖最后由 黑骏马 于 2013-8-19 09:04 编辑
你的代码,在内层for循环中,第一次满足i%j==0后,b的值变成false,之后不会再改变,if(b){sum+=i}不会被执行,直至内层循环结束,i++后b变为true,再次进入内层for循环,第一次满足i%j==0后,b的值再变成false,不再改变……
根据你的代码的意思,应该把
bool b = true;移到内层for循环中:
public static int GetSum()
{
int sum = 0;
for (int i = 2; i <= 100; i++)
{
//bool b = true;//return 66705
for (int j = 2; j < i; j++)
{
bool b = true;//return 311471
if (i % j == 0)
{
b = false;
}
if (b)
{
sum += i;
}
}
}
return sum;
}
复制代码
其实代码完全可以简化一下这样写意思更清楚:
public static int GetSum()
{
int sum = 0;
for (int i = 2; i <= 100; i++)
{
for (int j = 2; j < i; j++)
{
if (i % j != 0) //这样写意思不是更清楚明白吗?
{
sum += i;
}
}
}
return sum;//311471
}
复制代码
2楼小天的结果为什么是
32489?比楼主的代码计算的结果还小。
。
作者:
haxyek
时间:
2013-8-19 15:41
主要是不知道楼主题目是啥意思~~还是把贴出来吧啊~
注意 b的值,单步进行调试~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2