所谓 “降序数” 是指一个自然数的低位数字不大于高位数字的数。 例如: 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);
}
}
}
下面是正确的代码,但是
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);
}
}
}
m = m / 10; 这句取到的是取到个位以前的数,包括十位、百位...
{
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);
}
}
}