用C/C++实现数字递增问题?

给定一个正整数 n,请判断 n 的所有数位上的值是否从左到右是严格递增的。
  例如:1589 是严格递增的。
  再如:1336 不是严格递增的,中间有相同的 3。
  再如:1598 不是严格递增的。
输入格式
  输入一行包含一个整数 n。
输出格式
  如果是严格递增的,输出“YES”(全大写),否则输出“NO”(全大写)。
样例输入
1589
样例输出
YES
样例输入
1336
样例输出
NO
评测用例规模与约定
  对于所有评测用例,1 <= n <= 1000000000。


#include <iostream>
using namespace std;

int main(void)
{
    long n;
    cin >> n;
    int last = -1;
    int curr = 0;
    bool flag = true;
    while (n > 0 && flag) {
        if (last == -1) {
            last = n % 10;
        } else {
            curr = n % 10;
            if (curr >= last) {
                flag = false;
            }
            last = curr;
        }
        n /= 10;
    }
    cout << (flag ? "YES" : "NO") << endl;
    return 0;
}

利用相除和取模先求出每一位,再比较。

#include<stdio.h>
#include<string.h>
using namespace std;
int main() {
    char arrs[10];
    bool flag = false;
    scanf("%s", arrs);
    for (int i = 0; i < strlen(arrs)-1; i++) {
        if (arrs[i] < arrs[i+1]) {
            continue;
        }
        else {
            flag = true;
            break;
        }
    }
    if (flag) {
        printf("NO");
    }
    else {
        printf("YES");
    }
}

可以利用字符串性质。