回 帖 发 新 帖 刷新版面

主题:Vector在for循环内赋值死循环的问题

#include "stdafx.h"
#include<iostream>
#include<vector>
using namespace std;



int main(int argc, char* argv[])
{
    int a,tak,c,i=0;
        
    for(tak=9985;tak<10000;tak++)
    {
        vector<int> v;
    vector<int>::iterator it;
        c=tak;

//    v.clear();
    while(tak!=0)
    {
         a=tak%10;
         tak=tak/10;
         v.push_back(a);
    }
    it=v.begin();
    a=0;
    for(it=v.begin();it!=v.end();++it)
        a=a*10+(*it);
    cout<<a<<endl;
    i++;
//    if(i=1) break;
    v.erase(v.begin(),v.end());
    }

 
    return 0;
}
/////////////////////////////////////////////////////////
求高手解答,循环从第二次开始就不对了,函数的功能是实现对一个数字反序排列

回复列表 (共4个回复)

沙发


被一学长给解决了,结贴把

板凳

你这么学下去就废了

[code=c]
#include <iostream>
#include <vector>
using namespace std;

int main(int argc, char* argv[])
{
    for(int tak=9985; tak<10000; ++tak)
    {
        vector<int> v;
        for(int n=tak; n!=0; n/=10 )
            v.push_back( n%10 );

        int a = 0;
        for( vector<int>::reverse_iterator it=v.rbegin(); it!=v.rend(); ++it )
            a = a*10 + *it;
        cout<<a<<endl;
    }

    return 0;
}

[/code]

3 楼

循环内部不要胡乱更改循环变量的值,tak都是在9985开始循环,你给他不停地除以10,还怎么>10000呀,用另一个变量求各个数据位呀

4 楼

如楼上所说,循环控制的变量,你不停在另一个以TAK!=0的循环里改变其值(总在除10运算),你的大循环无法达到条件要求,肯定是不停的循环下去的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册