使用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...
我哪里错了?
答案 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++;
}