程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> NYOJ 647 奮斗小蝸牛在請客[模擬]

NYOJ 647 奮斗小蝸牛在請客[模擬]

編輯:C++入門知識

思路:沒啥說的,本想用java寫,沒找到double進制轉換的對應函數。。就該用c++,本想偷懶下,直接用string,然後找個string轉化double的函數,最後還是失敗了 用sstream,格式會變。。發現其實最簡單的方法就是直接用數組模擬。。一直想偷懶下,結果繞了一個圈。。。 先提供個double型化二進制的模版,這裡不考慮格式。。 [cpp]   #include<sstream>   #include<stdlib.h>   #include<algorithm>   #include<iostream>   using namespace std;   string::iterator it;   string Trans(long Integer)   {       if(Integer == 0) return "0";       string temp="";       while(Integer)       {           temp = char(Integer%2+48)+temp;           Integer/=2;       }       return temp;   }   string Trans(double Decimal)   {       string temp=".";       int n = 20;       while(Decimal&&n)       {           Decimal*=2;           temp = temp + char(int(Decimal)+48);           Decimal = Decimal - int(Decimal);           n--;       }       return temp;   }   int main()   {       int i,j;       double x;       while(cin>>x)       {           long Integer = long(x);           double Decimal = x-Integer;           double ans;           string Ans = Trans(Integer) + Trans(Decimal);           cout<<Ans<<endl;       }   }     本題AC代碼: [cpp]  #include<sstream>   #include<stdlib.h>   #include<algorithm>   #include<iostream>   using namespace std;   string::iterator it;   string Trans(long Integer)   {       if(Integer == 0) return "0";       string temp="";       while(Integer)       {           temp = char(Integer%2+48)+temp;           Integer/=2;       }       return temp;   }   string Trans(double Decimal)   {       string temp=".";       int n = 20;       while(Decimal&&n)       {           Decimal*=2;           temp = temp + char(int(Decimal)+48);           Decimal = Decimal - int(Decimal);           n--;       }       return temp;   }   int main()   {       int i,j;       double x;       while(cin>>x)       {           long Integer = long(x);           double Decimal = x-Integer;           double ans;           string Ans = Trans(Integer) + Trans(Decimal);           //cout<<Ans<<endl;                      /*根據題目進行的格式控制、、*/           int n = Ans.length();           while(--n)           {               it = Ans.end()-1;               if(Ans[n] == '0')                    Ans.erase(it);               else if(Ans[n] == '.')               {                   Ans.erase(it);                   break;               }               else                   break;           }           cout<<Ans<<endl;           /*          stringstream ss;          ss<<Ans;          ss>>ans;          ss.clear();          cout<<ans<<endl;          */       }   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved