【问题标题】:Count number of digits in array and display them, plus multiply it by given number计算数组中的位数并显示它们,然后将其乘以给定的数字
【发布时间】:2016-03-09 17:50:26
【问题描述】:

我必须从输入的值创建一个数组。我还需要显示数组内容,我已经完成了这些内容并且可以按照我的喜好执行。我只是在尝试让程序计算数字数量并显示它们“检测到的数字”时遇到一些问题我还需要将原始输入的值(数字)乘以 11 并在程序结束时显示它。

我需要帮助调试的问题: 1.) 计算并显示输入了多少位 2.) 将第一个输入的数字乘以 11。

#include <stdio.h>

int main() {

int number, count, mult;
int numbers[9];

    printf("Please enter a number:\n>");
    scanf("%d", &number);
    mult= number * 11;

    for(count = 4; count >= 0; count--) {

    if(number <= 0)
    numbers[count] = 0;

    numbers[count] = number % 10;
    number /= 10;

}

    for(count = 0; count < 5; count++)
    printf("Digit Value: %d\t\n", numbers[count]);

    count = 0;
    while(number!=0)
    {
            number/=10;
            ++count;
    }
    printf("Digits Detected: %d\n", number);
return 0;
    }

【问题讨论】:

  • 在对它进行任何操作之前存储条目 * 11 有多容易? mult11 = number * 11;

标签: c debugging computer-science


【解决方案1】:

您需要重新初始化count,然后才能计算出位数

count = 0;              // <<---- add this line
while(number!=0)
{
    number/=10;
    ++count;
}

您的另一个问题是将输入的数字乘以 11。您可以在更改之前执行此操作,如下所示

scanf("%d", &number);
mult11 = number * 11;

然后你可以在任何你喜欢的地方打印它。

【讨论】:

  • 谢谢你们。我检查过的简单错误!
【解决方案2】:

我不是来自 c/c++ 背景,但据我所知,有两件事。

  1. for(count = 4; count &gt;= 0; count--)

您已经定义了int numbers[9]。您应该使用 9 而不是 4 来初始化计数。但无论如何,即使您决定使用 4 也可以。 请注意,一旦此循环完成执行,number 的值将被修改,因为您在循环的每次迭代中将其除以 10

  1. 当您在函数中使用相同的 count 时,您可以在 for 循环中更改其值,如下所示

for(count = 0; count < 5; count++) printf("Digit Value: %d\t\n", numbers[count]);

count 的值是 5 [虽然如果你接受我的第 1 点,那么你也应该在循环条件中将 5 更改为 9]。 number 的值已经按照我上面的描述进行了修改。

这就是您看不到正确位数的原因。

我建议您仅在填充数组时计算位数。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-22
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多