谁能给我一些 C# 程序的逻辑或提示,该程序用值 7658 初始化整数变量 n,然后使用商和余数运算符提取和打印 n 的每个数字。我只需要建议,以便我可以继续前进。我想显示为:n= 7658 n 的位数是 7、6、5 和 8。
问问题
2915 次
5 回答
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
- 当数字大于 时继续执行步骤 1
10
。
作为视觉效果,我窃取了SWeko 的部分答案;
7658 % 10 = 8
765 % 10 = 5
76 % 10 = 6
7 % 10 = 7
于 2013-09-10T14:02:09.453 回答
3
int i = 7658;
Console.Write("the n are");
for(int a=0;a<=i;a++)
{
Console.Write( i%10+",");
i = i / 10;
}
于 2013-09-10T17:04:38.490 回答
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();
}
}
然后,您可以使用该方法,使用 any int
,而不仅仅是 number 7658
,如下所示:
public static void Main(string[] args) {
int someNumber = ...
foreach (var digit in someNumber.EnumerateDigits())
Console.WriteLine(digit);
Console.ReadKey();
}
于 2013-09-10T14:04:14.280 回答
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 的评论:由于我们使用位置数字书写系统,因此写作 7658 基本上是写作的简写:
7 thousand, 6 hundred, 5 tens, and 8 units.
在最后一个语句中,千是 1000,或 10 * 10 * 10,百是 100,或 10 * 10,十是,毫不奇怪,10,单位是 1(从数学上讲,它是 10 乘以零乘以自身),所以7658 是:
7 X 10^3 + 6 X 10^2 + 5 ^ 10 + 8, or
(((7 * 10) + 6) * 10 + 5) * 10 + 8
代码中使用了最后一个公式。
顺便说一句,如果将 10 替换为 16,您将获得将数字转换为十六进制系统的算法,或者如果将其替换为 2,您将获得数字的二进制数字。
于 2013-09-10T14:04:22.203 回答
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]);
}
}
于 2013-09-10T14:10:42.547 回答