2017-04-01 65 views
-1

我是一個編碼,初學者,想聽聽你的建議涉及以下這個練習的解決方案:Ç - 計數數字

編寫環路提示數據類型長的正數或零整數的程序。然後應將整數組成的位數(以十進制表示)打印到stdout。輸入負數會立即停止程序。 輸出示例: 0有1個數字。 999有3位數字。等

我已經寫下面的代碼,並根據我做的測試,程序履行所有給定的任務。但是你怎麼看?我該如何改進它?

(而且我也認爲我不能使用任何完成有用的功能在任何C語言庫,它只是「簡單的」 C編碼左右。IDK如何描述它。)

(該編程語言是C)

#include <stdio.h> 

int main(void) 
{ 
    long number; 
    int n=0; 

    do 
    { 
     printf("Enter a number: "); 
     scanf_s("%ld", &number); 

     if (number > 0) 
     { 
      while (number != 0) 
      { 
       number /= 10; 
       n++; 
      } 
     } 
     else if(number == 0){ 
      n = 1; 
     } 
     else { 
      exit(); 
     } 

     printf("The number you've entered has %d digits.\n\n",n); 
     n = 0; 

    } while (getchar() != 'EOF'); 

    return 0; 
} 
+1

什麼是「EOF」?編譯器不會對你發出警告嗎? – alk

+0

對不起,但是SO不是徵求意見的地方,只是事實。 http://stackoverflow.com/help/dont-ask – Rob

+3

IMO,這個問題屬於https://codereview.stackexchange.com – ayushgp

回答

0

那getchar是沒用的,因爲EOF就是說文件已經結束而你沒有讀文件。將其更改爲while(number> = 0)。