c ++以对数方式增加循环增量

sjr*_*son 4 c++ for-loop logarithm

我想循环这样的整数:

1,2,3,4,5,6,7,8,9,10,20,30,40 ......,100,200,......,1000,2000,......

我有代码执行此操作(如下所示)但是它很麻烦,并且通常不编程以处理不同的停止限制:

int MAX = 10000;

for (int i = 1; i <= MAX; i++) {

    cout << i << endl;

    if (i >= 10 && i < 100) {
        i += 9;
    }

    else if (i >= 100 && i < 1000) {
        i+= 99;
    }

    else if (i >= 1000 && i < 10000) {
        i += 999;
    }

}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这是前面提到的指定的情况 - 所以我想知道一种以更一般的方式对其进行编码的方法,因为我的要求MAX将是10 ^ 9的数量级所以使用代码像上面这样太不切实际了.

Ard*_*vel 6

试试这个代码.它更通用:

int MAX = 1000000;

for (int i = 1, increment = 1, counter = 1; i <= MAX; i += increment) {
    cout << i << endl;

    if (counter == 10) {
        increment *= 10;
        counter = 1;
    }
    ++counter;
}
Run Code Online (Sandbox Code Playgroud)