gpt4 book ai didi

c - 如何在C中打印用户输入的数字的位数?

转载 作者:行者123 更新时间:2023-11-30 19:15:36 24 4
gpt4 key购买 nike

您好,我正在尝试编写 C 代码,提示用户输入正整数,然后打印出该数字的位数。假设用户输入正整数,则不需要进行错误检查。

我的问题是按下“ctrl-d”后输出始终是:

“位数 = 1”

如果用户输入 1023,程序应该打印:

“位数 = 4”

我是 C 语言新手,正在尝试了解 scanf 的工作原理。谢谢!

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int count = 0;
char n;
printf("Enter positive int!\n");

while(scanf("%c",&n) != EOF);
{
count++;
}

printf("# of digits = %d\n", count);
return 0;
}

最佳答案

您可以使用 %d 格式说明符输入十进制整数 scanf ,然后应用以下函数:

int getNumOfDigits(int num, int base /*= 10*/)
{
int count = 0;

if (num < 0) {
num = -num;
}
while (num > 0) {
count++;
num /= base;
}
return count;
}

它未经测试,但一般想法是除以十,然后使用 int 数字的位数:

printf("# of digits = %d\n", getNumOfDigits(number, 10));

请注意,您还应该检查 scanf 返回的值以进行错误处理(当数字格式不正确时)。例如:

if (scanf("%d", &number) != 1) {
printf("Incorrent input for decimal number!\n");
exit(EXIT_FAILURE);
}

关于c - 如何在C中打印用户输入的数字的位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32279879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com