C++ 问题C和x2B+;与阿尔霍姆山

C++ 问题C和x2B+;与阿尔霍姆山,c++,C++,为什么我有以下问题: 如果一个数字的数字从数字的中间向上排列,从该位置向下排列,则该数字具有山的外观。示例:12321345754是山景编号。对于从pc用户处读取的自然数n,请检查该数字是否具有山形外观,并显示相应的消息。 我已经这样做了,但我不知道问题出在哪里: #include <iostream> using namespace std; int main() { int n, k = 0, x, middle, ok, i, up; cout &l

为什么我有以下问题: 如果一个数字的数字从数字的中间向上排列,从该位置向下排列,则该数字具有山的外观。示例:12321345754是山景编号。对于从pc用户处读取的自然数n,请检查该数字是否具有山形外观,并显示相应的消息。 我已经这样做了,但我不知道问题出在哪里:

 #include <iostream>
 using namespace std;

 int main() {
     int n, k = 0, x, middle, ok, i, up;
     cout << "n=";
     cin >> n;
     x = n;
     while (x) {
         k++;
         x /= 10;
     }
     if (k % 2 == 0) middle = k / 2;
     else middle = k / 2 + 1;

     ok = 1;
     up = n % 10;
     for (i = 0; i <= up && ok != 1; i++) {
         n = n / 10;
         if (up > n % 10) ok = 0;
     }
     if (ok == 1) {
         up = n % 10;
         for (i = k - up; i < 0 && ok == 1; i--) {
             n = n / 10;
             if (up < n % 10)
             ok = 0;
         }
         if (ok == 1)
             cout << "Evrika! Your number has a mountain appearance";
         else
             cout << "No mountain appearance";
     } else
         cout << "No mountain appearance"; 
 }
#包括
使用名称空间std;
int main(){
int n,k=0,x,中间,ok,i,向上;
cout>n;
x=n;
while(x){
k++;
x/=10;
}
如果(k%2==0)中间=k/2;
其余中间=k/2+1;
ok=1;
上升=n%10;
对于(i=0;i n%10)ok=0;
}
如果(ok==1){
上升=n%10;
对于(i=k-up;i<0&&ok==1;i--){
n=n/10;
如果(上升coutHy,您在第17行有一些错误:
替换


欢迎使用堆栈溢出。请花时间阅读并参考“您可以在此处询问的内容和方式”中的材料。解决此类问题的正确工具是调试器。在询问堆栈溢出之前,您应该逐行检查代码。有关更多帮助,请阅读。至少,您应该将问题包含在示例中这将再现您的问题,以及您在调试器中所做的观察。
for (i = 0; i <= up && ok != 1; i++)
 for(i=0;i<=middle && ok==1;i++)
for (i = k - up; i < 0 && ok == 1; i--) {
for(i=k-middle;i>0 && ok==1;i--)