所谓 “降序数” 是指一个自然数的低位数字不大于高位数字的数。 例如: 61,64,55,321都认为是降序数,但是623不是降序数。一位数字被认为是降序数。 编一个程序,输入一个数,判定它是否为降序数。该程序是循环执行的,当输入 的数为0时,则退出程序运行。
下面是正确的代码,但是
 while (m > 0) 
                    { 
                        j = m % 10;
                        m = m / 10; 
                        if (i > j) 
                        { 
                            pos = false;
                            break; 
                        }
                        i = j; 
                    } 
这一段我不懂,谁能用简单的话讲解一下哈!谢谢! class Program
    {
        static void Main(string[] args)
        {
            int i, j, m, n; 
            bool pos;
            while (true) 
            {  
                n = -1; 
                while (n <= 0) 
                {
                    if (n == 0)
                        return; 
                    Console.WriteLine("请输入一个正整数或者0:");
                    n = int.Parse(Console.ReadLine()); 
                }                 if (n < 10) pos = true; 
                else 
                {
                    m = n; i = 0; pos = true;
                    while (m > 0) 
                    { 
                        j = m % 10;
                        m = m / 10; 
                        if (i > j) 
                        { 
                            pos = false;
                            break; 
                        }
                        i = j; 
                    } 
                }
                if (pos)Console.WriteLine("{0}是降序数。", n); 
                else Console.WriteLine("{0}不是降序数。", n);
            } 
        }
    }

解决方案 »

  1.   

    j = m % 10; 这一句是取到个位数,
    m = m / 10; 这句取到的是取到个位以前的数,包括十位、百位...
      

  2.   

    请看注释class Program
    {
        static void Main(string[] args)
        {
            int i, j, m, n;
            bool pos;       //是否为降序数的标记
            while (true)    //循环并重新运算
            {
                n = -1;     //每次n都归到-1
                while (n <= 0) //只能输入正数,否则重新输入
                {
                    if (n == 0)
                        return;
                    Console.WriteLine("请输入一个正整数或者0:");
                    n = int.Parse(Console.ReadLine()); //输入
                }
                //这时你的n就是你所输入的值
                if (n < 10) pos = true;//如果n<10那么肯定是降序数因为是个位数,10也是一个降序数。
                else
                {
                    m = n; i = 0; pos = true; //否则先假设他是降序数POS=True。
                    while (m > 0)//循环从低位到高位比较大小,如果M<0则跳出循环
                    {
                        j = m % 10;//J是最低位的值(%叫取模,也就是M除以10的余数的意思)
                        m = m / 10;//这里M就把最低为去掉用于下次运算
                        if (i > j)
                        {
                            pos = false;
                            break;
                        }
                        i = j;//使i永远都是最低位的值,用来下次比较
                    }
                }
                if (pos) Console.WriteLine("{0}是降序数。", n);//输出结果
                else Console.WriteLine("{0}不是降序数。", n);
            }
        }
    }