【问题标题】:What number is a specified digit and how many of them are there in a number?什么数字是指定的数字,一个数字中有多少个?
【发布时间】:2014-03-29 21:51:32
【问题描述】:

好的,所以一开始,我是编程的初学者。这是我的学校作业,我不能使用转换为字符串。只是如果,否则,对于,虽然。

输入时有数字和数字。

我知道如何获取信息,什么数字是数字中的指定数字,但我不知道如何找出这些数字中有多少。

假设我有数字 123 467(它必须小于 999 999)并且我想要第三个数字。我知道它大于 100 000,所以我做数学运算 - (int) 123 467 / 100 = 123 然后 123%10 = 3。现在我需要知道数字中是否还有 3 - 但这里是点 - 我不确定我应该使用什么循环。

我还必须创建一些代码来确定数字的大小(大于 100/1000/10000/...)。

我并不是要求提供完整的解决方案,但我们将不胜感激。即使是伪语言。

当前代码(几乎没有):

double digit, number;

try
{
    digit = Convert.ToInt32(poledigit.Text);
    number = Convert.ToInt32(polenumber.Text);
}
catch
{
    MessageBox.Show("Zadejte číslo ve správném formátu");
    return;
}

if (digit > 6 & number > 999999)
{
    MessageBox.Show("Číslo musí být menší než 999 999 a digit musí být menší než 6.");
    return;
}

while(number >= 100000)
{
    number /= Math.Pow(10, digit);
    number %= 10;
}

【问题讨论】:

  • if (digit > 6 & number > 999999)??如果两个条件之一匹配,您不想返回吗?
  • @AnthonyRaymond 是的,我真的不知道没有任何字符串的 return 是什么意思。我们学习 C# 2 个月了,所以我几乎不知道自己在做什么。
  • x) 好的,您说:IF digit > 6 AND number > 999999,这意味着您将在 if ONLY 满足两个条件时输入,但如果 digit = 则您可以继续使用您的代码2 和数字 = 99999999999999
  • 哦,对了。所以我应该放在那里 OR ||。

标签: c# digits


【解决方案1】:

我会创建一个整数数组来计算位数

int[] digitCount = new int[10]; // Range: digitCount[0..9]

然后通过消除最后一位来逐位确定数字,直到数字为零。该循环将重复以下代码:

int digit = number % 10;
number /= 10;
digitCount[digit]++;

现在digitCount 包含每个数字的计数

int countOfDigit3 = digitCount[3];

如果不能使用数组,则只计算所需数字的出现次数

int digit = ...;
int digitCount = 0;

while (number != 0) {
    int d = number % 10;
    number /= 10;
    if (d == digit) {
        digitCount++;
    }
}

【讨论】:

  • 感谢您提供易于理解的解决方案。但是我们不能使用我们在类中还没有学过的东西(包括数组、函数等)。
  • 嗯,看来我的老师正在和我们一起学习编程。我们与她的进展非常缓慢。我们将在 2 年内(我 18 岁)使用 Objects。
【解决方案2】:

您可以按如下方式遍历数字:

int digitToSearch = 3;
int count = 0;
while (number != 0)
{
    int digit = number % 10;
    if (digit == digitToSearch)
        count++;
    number /= 10;
}

【讨论】:

  • 我怀疑 Dictionary 超出了他们目前所学的范围。
  • 谢谢!没错,我还没有听说过字典。所以我可能无法将它用于我的家庭作业。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 2013-11-01
  • 2023-01-24
  • 2019-02-16
  • 2022-11-14
  • 1970-01-01
相关资源
最近更新 更多