2013-08-07 24 views
-4

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

請不要downvote這個,我需要它! – Notyourthing

+4

223小於999 __並且小於9999。您的代碼正在寫入。 – Blastfurnace

+2

@Notyourthing我們不是因爲你「不需要這個問題」而降低投票率(怎麼回事?),而是因爲你顯然對你正在嘗試使用的算法沒有什麼瞭解。 – 2013-08-07 10:48:47

回答

3

這是因爲你的編譯器懲罰你沒有正確縮進你的代碼。

開個玩笑,其實你的邏輯是有缺陷的(和/或您期望的代碼工作不匹配):你需要else if是因爲,如果你的號碼是超過一定限度時,它將會大於更小的限制,所以它們都將被打印 - 錯誤。

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++; 
}