用于查找整数位数的 C 代码无法按照建议进行修改

标签 c

这是包含我的代码的文件的链接(谷歌文档链接) -

#include<stdio.h>

int len(int);
void main()
{
    int n,p;
    printf("enter number");
    scanf("%d",&n);
    p=len(n);
    printf("length of entered number is %d",p);
}
int len(int num)
{
    int i,c,b;
    for(i=1;i<=50;i++){
        b=10*i;
        if(num<b) {
            return(i);
            break;
        }
    }
}

最佳答案

计算b=10*i;没有逻辑意义。您想要 10 的指定次方吗?

解决此问题的正常方法是重复除以 10,直到达到 0(使用整数运算),并计算除法的次数。即原始数字的位数。此方法也不容易受到整数溢出的影响:

unsigned digits = 0;
for (; num /= 10; ++digits);
return digits;

关于用于查找整数位数的 C 代码无法按照建议进行修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43495462/

相关文章:

c - 如何在单链表 (C) 中正确地添加一个 int?

c - libsox 转换 wav 文件采样率等。

c - ANSI C 中的字符串处理

c - 为什么在执行此 c 代码片段期间会转储分段核心

c - 静态库中外部符号的预期签名

c - execv* 并写入标准输入

c - 移入一位(此位应为“1”)

c - macOS 中的 mmap 和文件删除

c - HashTable 如何将重复的单词只打印一次?

c - Lua嵌套表从Lua到C