问题标题: 良序数

0
1
已解决
谈文瑞
谈文瑞
新手光能
新手光能

 

【问题描述】

一个多位数,如果它的低位数字依次都比高位数字大,则称之为良序数。如:18、145等,而21、447不是良序数。输入n,判断它是否良序数,是输出“yes”,否输出“no”。(10<=n<=10000)

【样例输入】15    【样例输出】yes

【样例输入】22    【样例输出】no

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int n,a,s;
    cin>>n;
    a=n%10;
    n=n/10;
    while(n!=0){
        if(n==0){
                cout<<"yes";
            }
        s=n%10;
        if(a==s||a<s){
            cout<<"no";
        }
        else{
            n=n/10;
        }
    }
    return 0;
}

哪错了?


0
已采纳
刘陶哲
刘陶哲
修练者
修练者

你这个肯定不对啊!

错误:

1.while的条件是n!=0,但你第一个if的条件是n==0,肯定是无法实现的

2.如果这不是良序数,输出完no之后,会继续循环啊!这就是个死循环了。

改进:

while(1){
        if(n==0){
                cout<<"yes";
                return 0;
            }
        s=n%10;
        if(a==s||a<s){
            cout<<"no";
            return 0;
        }
        else{
            n=n/10;
        }
    }

将while无限循环,一旦得出结果立刻结束程序,这样应该就没错了.

0
我要回答