计算数组中的位数并显示它们,并将其乘以给定的数字

Count number of digits in array and display them, plus multiply it by given number

我必须根据输入的值创建一个数组。我还需要显示数组内容,我已经完成并按我的喜好执行。我只是在尝试让程序计算位数并显示它们时遇到一些问题 "digits detected" 我还需要将原始输入值(数字)乘以 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;
    }

我不是来自 c/c++ 背景,但根据我的观察,有两件事。

  1. for(count = 4; count >= 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 的值已经按照我上面的描述进行了修改。

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

我建议你只在填充数组时计算位数。

希望对您有所帮助。

您需要重新初始化count才能算出位数

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

你的另一个问题是将输入的数字乘以 11。你可以在更改之前这样做,就像这样

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

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