任何人都可以给我一些逻辑或提示C#程序初始化一个值为7658的整数变量n,然后使用商和余数运算符来提取和打印n的每个数字。 我只需要建议,以便我可以继续下去。 我想以类似的方式显示它: n = 7658 n的数字是7,6,5和8.
答案 0 :(得分:7)
几分钟前你问了同样的问题。
我们告诉你喜欢这不是一个在这里提问的好方法但无论如何......
int i = 7658;
Console.WriteLine(i % 10); //Last digit.
i = i / 10;
Console.WriteLine(i % 10); //Third digit.
i = i / 10;
Console.WriteLine(i % 10); //Second gidit.
i = i / 10;
Console.WriteLine(i % 10); //First digit.
逻辑在这里;
7658 % 10 = 8
(给出最后一位数字)看看% Operator
10
10
时,继续执行第1步。视觉上,我偷了SWeko's answer;
的某些部分7658 % 10 = 8
765 % 10 = 5
76 % 10 = 6
7 % 10 = 7
答案 1 :(得分:3)
int i = 7658;
Console.Write("the n are");
for(int a=0;a<=i;a++)
{
Console.Write( i%10+",");
i = i / 10;
}
答案 2 :(得分:2)
您可以编写一个这样的简短扩展方法:
public static class Helper {
public static IEnumerable<int> EnumerateDigits(this int @this) {
Stack<byte> stack = new Stack<byte>();
do {
var digit = (byte)(@this % 10);
stack .Add(digit);
@this /= 10;
} while (@this != 0);
while (stack .Count > 0)
yield return stack.Pop();
}
}
然后,你可以使用任何int
的方法,而不仅仅是数字7658
,如下所示:
public static void Main(string[] args) {
int someNumber = ...
foreach (var digit in someNumber.EnumerateDigits())
Console.WriteLine(digit);
Console.ReadKey();
}
答案 3 :(得分:1)
数字除以10的提醒是该数字的最后一位数字:
7658 % 10 = 8
765 % 10 = 5
76 % 10 = 6
7 % 10 = 7
数字除以10的商是该数字的数字,但最后一个数字除外:
7658 / 10 = 765
765 / 10 = 76
76 / 10 = 7
7 / 10 = 0
所以你可以循环直到给定的数字为0,并重复提取最后一位数字,分别得到每个数字。
要解决OP关于所用10的值的评论:因为我们使用positional number-writing system,所以写7658基本上是写作的简写:
7 thousand, 6 hundred, 5 tens, and 8 units.
在最后一个陈述中,千是1000,或10 * 10 * 10,百是100,或10 * 10,十是,毫不奇怪10,单位是1(数学上讲,它是10乘以{{3} }),所以7658是:
7 X 10^3 + 6 X 10^2 + 5 ^ 10 + 8, or
(((7 * 10) + 6) * 10 + 5) * 10 + 8
代码中使用了最后一个公式。
顺便提一下,如果你用16代替10,你会得到一个将数字转换为十六进制系统的算法,或者如果用2代替它,你将得到数字的二进制数字。 / p>
答案 4 :(得分:0)
试试这个:
public void SpillInt(){
int n = 7658;
int remainder = 0;
int divider = 10;
IList<int> result = new List<int>();
do
{
remainder = n % divider;
result.Add(remainder);
n = (n - remainder) / 10;
}
while (n > 0);
for (int i = result.Count; i >= 0; i++)
{
Console.Write(result[i]);
}
}