-5

使用 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...

我哪里错了?

4

2 回答 2

3

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

开个玩笑,事实上,你的逻辑是有缺陷的(和/或你的期望与代码的工作不匹配):你需要else ifs 因为如果你的数字大于某个限制,它也会大于更小的限制,所以所有这些都将被错误地打印出来。

于 2013-08-07T10:47:46.920 回答
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++;
}
于 2013-08-07T10:53:22.727 回答