Problem Description
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。
Input
第一行输入需要转换的十进制非负整数;
第二行输入 R。
Output
输出转换所得的 R 进制数。
Example Input
1279 8
Example Output
2377
01 | #include<stdio.h> |
02 | #define stacksize 110 |
03 | #define OK 1 |
04 | #define TRUE 1 |
05 | #define FALSE 0 |
06 | int flag; |
07 | typedef int elemtype; |
08 | typedef int Status; |
09 | typedef struct |
10 | { |
11 | elemtype date[stacksize]; |
12 | int top; |
13 | } seqstack; |
14 | void initstack(seqstack *s) |
15 | { |
16 | (*s).top = 0; |
17 | } |
18 | Status stackfull(seqstack s) |
19 | { |
20 | if (s.top == stacksize-1) return FALSE; |
21 | return TRUE; |
22 | } |
23 | void push(seqstack *s, elemtype p) |
24 | { |
25 | if (!stackfull(*s)) |
26 | { |
27 | printf ( "OverFlow\n" ); |
28 | flag = 1; |
29 | } |
30 | else |
31 | { |
32 | (*s).date[(*s).top] = p; |
33 | (*s).top++; |
34 | } |
35 | } |
36 | Status stackempty(seqstack s) |
37 | { |
38 | if (s.top == 0) return FALSE; |
39 | return TRUE; |
40 | } |
41 | Status pop(seqstack *s, elemtype *p) |
42 | { |
43 | if (!stackempty(*s)) return FALSE; |
44 | (*s).top--; |
45 | *p = (*s).date[(*s).top]; |
46 | return TRUE; |
47 | } |
48 | void conversion() |
49 | { |
50 | elemtype n, m; |
51 | int p; |
52 | seqstack s; |
53 | flag = 0; |
54 | scanf ( "%d" , &n); |
55 | scanf ( "%d" , &m); |
56 | initstack(&s); |
57 | if (n==0) |
58 | { |
59 | printf ( "0\n" ); |
60 | } |
61 | else |
62 | { |
63 | while (n) |
64 | { |
65 | push(&s, n%m); |
66 | n = n/m; |
67 | } |
68 | if (!flag) |
69 | { |
70 | while (stackempty(s) == 1) |
71 | { |
72 | pop(&s,&p); |
73 | printf ( "%d" , p); |
74 | } |
75 | printf ( "\n" ); |
76 | } |
77 | } |
78 | } |
79 | int main() |
80 | { |
81 | conversion(); |
82 | return 0; |
83 | } |
84 |