计算数字中的位数时出错

时间:2013-08-07 10:45:47

标签: c

使用if语句编写程序,该语句计算数字包含的位数:

我的代码:

#include <stdio.h>
int main (void)
{
int n;
printf ("Enter number :");
scanf ("%d",&n);
if  ( n<=9)
printf ("Textnumber has one digit:");
if ( n <=99)
printf ("Textnumber has two digits:");
if (n<=999)
printf ("Textnumber has three digits:");
if (n <=9999)
printf ("Textnumber has four digits:");

return 0;
}

问题在于,当我运行它时,我举了例子:223

我的结果在我的屏幕上:

Textnumber has three digitsTextnumberhasfourdigits...

我哪里错了?

2 个答案:

答案 0 :(得分:3)

这是因为您的编译器正在惩罚您没有正确缩进代码。

开玩笑,事实上,你的逻辑有缺陷(和/或你的期望与代码的工作不匹配):你需要else if因为你的号码是超过一定的限制,它也将大于更小的限制,所以它们都将被打印 - 错误地。

答案 1 :(得分:0)

试试这段代码,因为H2CO3给出了正确的解释......

#include <stdio.h>
int main (void)
{
int n;
printf ("Enter number :");
scanf ("%d",&n);
if  ( n<=9)
    printf ("Textnumber has one digit:");
else if ( n <=99)
    printf ("Textnumber has two digits:");
else if (n<=999)
    printf ("Textnumber has three digits:");
else if (n <=9999)
    printf ("Textnumber has four digits:");

return 0;
}

尝试更简洁的方式。

int digits=0;
while(num)
{
    num/=10;
    digits++;
}