这道题为什么老是输出2?

djjlove_2008 2010-04-25 01:23:57
#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

int main()
{
vector<int> ivec;
int inputNumber;

while(cin >> inputNumber)
{
do
{
ivec.push_back(inputNumber % 2);
inputNumber /= 2;
}while(inputNumber);


vector<int>::iterator iter = ivec.begin();
while(*iter == 0 && iter != ivec.end())
{
iter++;

}

cout << pow(2.0, iter - ivec.begin()) << endl;
}

system("pause");
return 0;
}

貌似iter会自增呀,如果换成queue和stack写类似问题也有此问题,咋整?
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
djjlove_2008 2010-04-27
  • 打赏
  • 举报
回复
结贴了,没意思
djjlove_2008 2010-04-27
  • 打赏
  • 举报
回复
有意思,不会的也来
cattycat 2010-04-25
  • 打赏
  • 举报
回复
你的vector存了输入的数的二进制,其实你可以这样,你那里不用iter循环来计算长度。
cout << pow(2.0, ivec.size()) << endl;

不知道你想输出什么。
liutengfeigo 2010-04-25
  • 打赏
  • 举报
回复
MARK 接分
r11222 2010-04-25
  • 打赏
  • 举报
回复
我觉得你不理解这个程序
r11222 2010-04-25
  • 打赏
  • 举报
回复
不知道你要干什么



while(*iter == 0 && iter != ivec.end())
{
iter++;

}

你真的理解这段程序吗???

当*iter==0时
iter 才会自增

也就是

当 输入数的二进制最后一位为1时(也就是奇数)

iter 不自增

等于计算2的0次方

等于1
白云飘飘飘 2010-04-25
  • 打赏
  • 举报
回复
把意思说一说
mstlq 2010-04-25
  • 打赏
  • 举报
回复
楼主输个15进去,就不会输出2了……
楼主请google“提问的智慧”……

boych 2010-04-25
  • 打赏
  • 举报
回复
怎么看输出的东东跟输入的vector元素毫无关系~
boych 2010-04-25
  • 打赏
  • 举报
回复
楼主想要实现什么?请说明一下。
djjlove_2008 2010-04-25
  • 打赏
  • 举报
回复
各位body

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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