首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ZOJ-1334 进制变换

2012-10-31 
ZOJ-1334 进制转换1334:给出源数 给出源数的基 和目标数的基 求目标数 目标数最长7位 右对齐显示Sample In

ZOJ-1334 进制转换
1334:给出源数 给出源数的基 和目标数的基 求目标数
目标数最长7位 右对齐显示

Sample Input


1111000 2 10
  1111000 2 16
2102101  3 10
2102101 3   15
12312 4   2
1A   15 2
   1234567 10 16
  ABCD 16 15

Sample Output

    120
     78
   1765
    7CA
  ERROR
  11001
12D687
   D071


思路:将源数转换成10进制,再转成目标进制
char res[8] 数组存字符串一定要记得给末尾\0留一位!!!


#include<iostream>#include<string>#include<math.h>#include<stdio.h>#include<memory.h>using namespace std;char ref[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};int count=0;char res[8];void ten2n(int num,int base){if(num/base!=0)ten2n(num/base,base);if(count<7)res[count++]=ref[num%base];else if(count++==7)strcpy(res,"ERROR");}int n2ten(char * num,int base){int sum=0;int val;int len = strlen(num);for(int i=0;i<len;i++){if(num[i]>='0'&&num[i]<='9')val=num[i]-'0';else if(num[i]>='A'&&num[i]<='F')val=num[i]-'A'+10;sum+=val*pow((double)base,len-1-i);}return sum;}int main(){char src[100];int ibase;int obase;while(cin>>src){cin>>ibase;cin>>obase;count=0;memset(res,0,sizeof(char)*8);ten2n(n2ten(src,ibase),obase);memset(src,0,sizeof(char)*100);printf("%7s\n",res);}}

热点排行