1. 程式人生 > >十進制轉其他進制

十進制轉其他進制

大於 減少 sta 其他 while 童鞋 轉換成 ret 不勝感激

//進制的轉換
#include <iostream> #include <stack> using namespace std; void trans(int N,int B) //參數N為要進行轉換的數,參數B是將要轉換成的進制 { stack<int> st1; while(N!=0) { st1.push(N%B); N/=B; } while(!st1.empty()) //當棧不空的時候,不斷地檢測棧頂的元素出棧並且判斷其是否大於10 { switch(st1.top()) {
case 10:cout<<"A"; //大於10之後的進制轉換就要使用字母來代替 break; case 11:cout<<"B"; break; case 12:cout<<"C"; break; case 13:cout<<"D"; break; case 14:cout<<"E";
break; case 15:cout<<"F"; break; default: //如果棧中的元素小於10,則直接輸出原數值 cout<<st1.top(); } st1.pop(); //將棧頂的元素pop出去 } return ; } int main() { while(1) { int N,B; cout<<"請輸入要轉換的數N:
"; cin>>N; cout<<endl; cout<<"請輸入要轉換的進制B:"; cin>>B; cout<<endl; cout<<"將十進制的"<<N<<"轉換成"<<B<<"進制後為:"; trans(N,B); cout<<endl<<endl; } return 0; }
/*

其實個人覺得使用棧的結構特點可以解決遞歸的一些問題,這裏用了棧,還可以使用遞歸。
老師在講棧的時候提到進制的轉換,好像當時他說在進制轉換超過十進制時使用switch語句會增加時間復雜度,他講了一種使用ASCII碼的方法,只是我忘了怎麽用。

路過的童鞋知道上述那種使用ASCII碼的方法控制輸出來減少時間復雜度的話,請順便告訴我一聲,不勝感激

*/



十進制轉其他進制