找错误(计算1到100的的奇数和)

金樽清酒斗十千 2016-03-31 12:46:06
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
for(int i=1; i%2==1 && i<=100;i++)
{
sum +=i;

}
cout<<"1到100的奇数和为:"<<sum<<endl;
return 0;
}
...全文
97 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dustpg 2016-03-31
  • 打赏
  • 举报
回复
每次步进+2就行了,不用按部就班地+1
  • 打赏
  • 举报
回复
明白了,for循环的特点是 for(参数初始化;条件判断;参数更新),条件判断为真时,执行程序,只要一遇到为假时,即刻跳出for循环,执行下面的程序。 这里for(int i=1; i%2==1 && i<=100;i++),初值i为1,虽然满足i%2==1,但是这一次循环后,i++自增了1,2%2==1不满足,即刻跳出循环,所以sum结果=1,也就是只循环了一次。 这样改: for(int i=1; i<=100;i++) { if(i%2==1) sum +=i;
  • 打赏
  • 举报
回复
总结一下:有两种算法,自增1和自增2,自增1时初值设置为0也不对。两种正确的做法为: 1. #include <iostream> using namespace std; int main() { int sum = 0; for(int i=1; i<=100;i++) { if(i%2==1) sum +=i; } cout<<"1到100的奇数和为:"<<sum<<endl; return 0; } 2.#include <iostream> using namespace std; int main() { int i,sum=0; for (i=1;i<100;i=i+2) sum=sum+i; cout<<"100以内奇数之和是:"<<sum<<endl; return 0; }
  • 打赏
  • 举报
回复
i 的初值改成0也不对,是不是不能这样改
小灸舞 2016-03-31
  • 打赏
  • 举报
回复
引用 4 楼 cainiaodetuibian 的回复:
i 的初值改成0也不对,是不是不能这样改
楼主像你那样不行的,只要不满足for循环的条件一次,for循环就结束了,直接跑后面的代码了
小灸舞 2016-03-31
  • 打赏
  • 举报
回复
你这个i初值是1,进for循环一次以后,就++了,然后变成2,然后判断i%2==1&&i<=100,不满足,直接结束for循环了 改成如下,或者像楼上说的,步数+2

int main()
{
	int sum = 0;
	for(int i=1; i<=100;i++)
	{
		if(i%2==1)
		    sum +=i;
	}
	cout<<"1到100的奇数和为:"<<sum<<endl;
	return 0;
}
  • 打赏
  • 举报
回复
那for里面 for(int i=1; i%2==1 && i<=100;i++)有没有错误

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧