c语言,不确定该自然数是几位数,感觉无从下手

img


不会写捏,c语言,不确定该自然数是几位数,感觉无从下手c语言,不确定该自然数是几位数,感觉无从下手

#include <stdio.h>

int wei(int n)
{
    int i = 0;
    while (1)
    {
        i++;
        if (n == 0) break;
        n /= 10; 
    }
    return i - 1;
}

int pw10(int n)
{
    int x = 1;
    for (int i = 1; i < n; i++)
        x *= 10;
    return x;
}

int main()
{
    int i = 8;
    while(1)
    {
        int j = pw10(wei(i)) * 8 + i / 10;
        if (i * 4 == j)
        {
            printf("%d", i);
            break;
        }
        i += 10;
    }
   
   return 0;
}

205128

给你个 python 版本的参考

n = 8  # 初始以8开始
a = 8 # 同样以8 开始
while a / n != 4: # 如果 a 除 n 不等于4,就继续,你用 c 的话注意类型
    n += 10 # n 每次加个10
    p = n  # 临时变量 p 与 n 值相同
    w = 0 # 记录位数
    while p > 9: # 当 p 大于 9,位数加1,p减去一位(除10p //= 10
        w += 1
    a = n // 10 + 8 * 10 ** w # 更新 a 的值,为 n 除10后,加上 8 乘位数

print(n,a)

1.编写一个实现把个位数移动到最前面的函数
思路:while 每次除以10取整,直到商为0,就算出了位数
再解释下:未知数X/10+8*位数 算出换位后的数
2.从8开始+1挨个试验,直到移动后/移动前=4
这样就用笨办法算出了结果

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^