DHU OJ | 基本練習-65 求小數位數個數

65 求小數位數個數

作者: 張志壽 時間限制: 10S章節: 字符串

問題描述 :

明明最近在一家軟件公司實習,公司分配給他一個任務,要他寫一個小程序,這個程序的功能是求出一個浮點數的小數部分的長度。例如程序輸入1.1,則輸出1,程序輸入1.11,則輸出2,明明覺得這個非常簡單,花了不到5分鐘的時間就把程序給寫出來了,然後就把程序交給了測試員測試。但是沒有想到的是,經過測試員的測試,發現了一大堆的錯誤,返回的結果很多都是不對的,這個令明明相當的不解,始終想不通自己的程序錯在哪裏。你是一名經驗豐富的程序員,明明把這個問題來求助於你,明明和你說了他的想法,你一聽就明白明明錯在了哪裏,原來明明使用double型來存放浮點數,但是由於double型的精度問題,不可能把所有的小數都精確的保存好,如果小數位數很長,就會出錯。你發現了問題。現在請你寫出正確的程序。 明明的問題可以歸結爲:給你一個浮點數,請你求出這個浮點數的小數位數。

輸入說明 :

你寫的程序要求從標準輸入設備中讀入測試數據作爲你所寫程序的輸入數據。標準輸入設備中有多組測試數據,每組測試數據僅佔一行,每行僅包括一個浮點數數n,n的長度不超過100。每組測試數據與其後一組測試數據之間沒有任何空行,第一組測試數據前面以及最後一組測試數據後面也都沒有任何空行。

輸出說明 :

對於每一組測試數據,你寫的程序要求計算出一組相應的運算結果,並將這一組運算結果作爲你所寫程序的輸出數據依次寫入到標準輸出設備中。每組運算結果爲一個整數,即n的小數部分的位數。每組運算結果單獨形成一行數據,其行首和行尾都沒有任何空格,每組運算結果與其後一組運算結果之間沒有任何空行,第一組運算結果前面以及最後一組運算結果後面也都沒有任何空行。 注:通常,顯示屏爲標準輸出設備。

輸入範例 :

1.11
1.00000000000000001

輸出範例:

2
17
 

筆記

要注意考慮整數(即小數點後位數爲零)的情況。

代碼

#include<stdio.h>
#include<string.h>

int main(){
	char n[101];
	while(scanf("%s",n)!=EOF){
		int loc = 0;
		int acc = 0;
		while(n[loc] && n[loc]!='.') loc++;
		
		if(loc==strlen(n))
			printf("0\n");
		else{
			acc = strlen(n) - loc - 1;	
			printf("%d\n",acc);
		}		
	} 
	
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章