Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<ctype.h>
- #include<string.h>
- int main()
- {
- char num[100000];
- int ansin10=0;
- int sys1,sys2;
- while(scanf("%s %d %d",num,&sys1,&sys2))
- {
- if(strcmp(num,"quit")==0)
- {return 0;}
- int len=strlen(num);
- //任意進制轉成十進制
- for (int i=0;i<len;i++)
- {
- if (isdigit(num[i]))
- {num[i]=num[i]-'0';}
- if (isalpha(num[i]))
- {num[i]=toupper(num[i])-55;}
- ansin10=ansin10+(num[i]);
- ansin10*=sys1;
- }
- ansin10=ansin10/sys1;//轉成10進制之值
- //十轉任意進制,用comma法,除首位為商,其餘為餘數
- int otherAns=ansin10;
- int counter=0;
- while(otherAns/sys2>=1)
- {
- otherAns=otherAns/sys2;
- if (otherAns>0)
- {counter++;}
- }
- char ans[100000];
- //剩下補足位數的問題
- for (int i=0;i<counter;i++)
- {
- ans[i]=ansin10%sys2;
- if(ans[i]<=9)
- {ans[i]=ans[i]+'0';}
- else
- {ans[i]=ans[i]+55;}
- ansin10=ansin10/sys2;
- }
- printf("%d",ansin10);
- for (int i=counter-1;i>=0;i--)
- {
- printf("%c",ans[i]);
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement