0
已解决
谈文瑞
新手光能
新手光能
【问题描述】
一个多位数,如果它的低位数字依次都比高位数字大,则称之为良序数。如: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