Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************************/
- /** 20141021 Exam 05 **/
- /** Maker : Yan **/
- /** E-Mail : [email protected] **/
- /** Date : 2014/10/21 pm.12:00 **/
- /************************************/
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h> //因使用floor 函式故引入<math.h>
- /* ceil(x) x 的最小整數上界
- floor(x) x 的最大整數下界 */
- //整數進制轉換
- void GetIntegerAnyNary(int number, int nary);
- //小數進制轉換
- void GetDecimalAnyNary(double number, int nary, int counter);
- int main(int argc, char const *argv[])
- {
- while(1)
- {
- double number = 0.0;
- int nary = 0;
- scanf("%lf", &number);
- scanf("%d", &nary);
- if(number <= 0)
- break;
- GetIntegerAnyNary(floor(number), nary);
- printf(".");
- GetDecimalAnyNary(number, nary, 0);
- printf("\n");
- }
- return 0;
- }
- void GetIntegerAnyNary(int number, int nary)
- {
- if(number == 0)
- return;
- //stack (堆疊)
- GetIntegerAnyNary(number / nary, nary);
- printf("%d", number % nary);
- }
- void GetDecimalAnyNary(double number, int nary, int counter)
- {
- number = number - floor(number);
- printf("%d", (int)(number * nary));
- if((number * nary - floor(number * nary) == 0))
- return;
- number = number * nary - floor(number * nary);
- //counter 做六位小數補額用
- counter++;
- if(counter > 5)
- {
- for(int i = counter; i < 6; i++)
- printf("0");
- return;
- }
- GetDecimalAnyNary(number, nary, counter);
- }
Advertisement
Add Comment
Please, Sign In to add comment