将数字归零的 LeetCode 问题的步骤数

Number of steps to reduce a number to zero leetcode problem

#include <stdio.h>

int main()
{
    int num, count;
    count = 0;
    num = 8;

    while (num != 0)
    {
        if (num % 2 == 0)
        { // checks if num is even
            num = num / 2;
            count = count + 1; // increases counter by 1
        }
        else
        {
            num = num - 1;
            count = count + 1;
        }

        printf("%d", count); // prints counter
    }
    return 0;
}

出于某种原因,输出是 1234 而不是 4,谁能解释一下为什么?我也尝试调用 scanf() 而不是将 num 值设置为 8,但输出是相同的。

您正在循环内打印计数器,并且没有使用换行符打印它。所以你打印“1”、“2”、“3”,然后是“4”,它在你的终端中看起来像“1234”。使用适当的缩进,这样您就可以直观地看到发生了什么,并注意到您的 printf 在一个循环中。