Advertisement
eddiehy

Untitled

Nov 8th, 2015
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. #include<string.h>
  4. int main()
  5. {
  6. char num[100000];
  7. int ansin10=0;
  8. int sys1,sys2;
  9. while(scanf("%s %d %d",num,&sys1,&sys2))
  10. {
  11. if(strcmp(num,"quit")==0)
  12. {return 0;}
  13. int len=strlen(num);
  14. //任意進制轉成十進制
  15. for (int i=0;i<len;i++)
  16. {
  17. if (isdigit(num[i]))
  18. {num[i]=num[i]-'0';}
  19. if (isalpha(num[i]))
  20. {num[i]=toupper(num[i])-55;}
  21. ansin10=ansin10+(num[i]);
  22. ansin10*=sys1;
  23. }
  24. ansin10=ansin10/sys1;//轉成10進制之值
  25. //十轉任意進制,用comma法,除首位為商,其餘為餘數
  26. int otherAns=ansin10;
  27. int counter=0;
  28. while(otherAns/sys2>=1)
  29. {
  30. otherAns=otherAns/sys2;
  31. if (otherAns>0)
  32. {counter++;}
  33. }
  34. char ans[100000];
  35. //剩下補足位數的問題
  36. for (int i=0;i<counter;i++)
  37. {
  38. ans[i]=ansin10%sys2;
  39. if(ans[i]<=9)
  40. {ans[i]=ans[i]+'0';}
  41. else
  42. {ans[i]=ans[i]+55;}
  43. ansin10=ansin10/sys2;
  44. }
  45. printf("%d",ansin10);
  46. for (int i=counter-1;i>=0;i--)
  47. {
  48. printf("%c",ans[i]);
  49. }
  50. printf("\n");
  51. }
  52. return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement