hdoj-2031-进制转换

 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 struct line//建立栈,存放数据
 5 {
 6     int a[40];
 7     int top;
 8 }lin;
 9 int flag;
10 int main()
11 {
12     int n,r;
13     int ZH(int n,int m);
14     void pr();
15     while(scanf("%d%d",&n,&r)!=EOF)
16     {
17         flag=0;
18         if(n<0)//是否是负数的判定
19         {
20             flag=1;
21             n=-n;
22         }
23         lin.top=-1;
24         ZH(n,r);
25         pr();
26     }
27     return 0;
28 }
29 int ZH(int n,int m)//对输入的数据n,做m进制的转换
30 {
31     if(!n)
32     return 0;
33     lin.a[++lin.top]=n%m;
34     n=n/m;
35     ZH(n,m);
36 }
37 void pr()//控制输出
38 {
39     if(flag)
40     putchar('-');
41     while(lin.top>=0)//判定栈是否空
42     {
43         if(lin.a[lin.top]==10)//十以上的判定输出
44         putchar('A');
45         else if(lin.a[lin.top]==11)
46         putchar('B');
47         else if(lin.a[lin.top]==12)
48         putchar('C');
49         else if(lin.a[lin.top]==13)
50         putchar('D');
51         else if(lin.a[lin.top]==14)
52         putchar('E');
53         else if(lin.a[lin.top]==15)
54         putchar('F');
55         else
56         printf("%d",lin.a[lin.top]);
57         lin.top--;
58     }
59     putchar('\n');
60 }

 

posted @ 2013-06-10 11:01  nylg-haozi  阅读(175)  评论(0编辑  收藏  举报