| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 417 人关注过本帖
标题:关于for循环中 != 和 < 的问题
只看楼主 加入收藏
gobraves
Rank: 2
等 级:论坛游民
帖 子:46
专家分:16
注 册:2013-8-3
结帖率:88.89%
收藏
 问题点数:0 回复次数:1 
关于for循环中 != 和 < 的问题
做c++ primer上面题时,我自己写的for循环终止条件用的 != ,结果输出结果后,还出现一大串乱码(在输入很少几个数时,不会出现这种情况),还显示要终止程序。答

案上for循环终止条件用的 < ,我将其改为!=后,在出现正确结果后,也出现一大串乱码,然后显示要终止程序。

有问题的for循环已在代码中注释出来
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> ivec;
    int ival;
//读入数据到 vector 对象
    cout << "Enter numbers(Ctrl+Z to end):" << endl;
    while (cin>>ival)
        ivec.push_back(ival);
//计算相邻元素的和并输出
    if (ivec.size() == 0)
    {
        cout << "No element?!" << endl;
        return -1;
    }
    cout << "Sum of each pair of adjacent elementsin the vector:"
         << endl;
    vector<int>::size_type cnt = 0;

    for (vector<int>::iterator iter = ivec.begin();
            iter < ivec.end()-1;                              //此处 < 换成 != 后就出问题
            iter = iter + 2)
    {
        cout << *iter + *(iter+1) << "\t";
        ++cnt;
        if ( cnt % 6== 0) //每行输出 6 个和
            cout << endl;
    }
    if (ivec.size() % 2 != 0) //提示最后一个元素没有求和
        cout << endl
             << "The last element is not been summed "
             << "and its value is "
             << *(ivec.end()-1) << endl;
    return 0;
}


我输入的是1 32 456 67 88790 2345 67 234 67989 32 4 47

图片附件: 游客没有浏览图片的权限,请 登录注册
  
图片附件: 游客没有浏览图片的权限,请 登录注册


请各位解答下,谢谢!!
搜索更多相关主题的帖子: include numbers Enter 
2014-03-17 17:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
iter = iter + 2 可能跳过 iter != ivec.end()-1
假设当前 iter等于ivec.end()-2,执行iter = iter + 2后iter等于ivec.end()
2014-03-18 08:18
快速回复:关于for循环中 != 和 < 的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022875 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved