您的位置:首页 > 其它

ny 244(进制转换)

2013-09-03 13:04 141 查看
几个进制之间的转换,需要注意的是,8进制中竟然没有负数,取个绝对值就过了。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cctype>
using namespace std;

char s[20];

int main()
{
int t,lens,c,sum2,i,sum1,sun,z;
cin>>t;

while (t--)
{
cin>>s;
lens=strlen(s);
c=0;
sun=1;
sum1=0;sum2=0;

for ( i=lens-1;i>=0;i--)
{
if (s[i]=='+')
{
c=1;
break;
}

if (s[i]=='-')
{
c=2;
break;
}
if (isdigit(s[i]))
sum1+=(s[i]-'0')*sun;
else
{
z=s[i]-'a'+10;
sum1+=z*sun;
}

sun*=16;

}
sun=1;i--;
for ( ;i>=0;i--)
{
if (isdigit(s[i]))
sum2+=(s[i]-'0')*sun;
else
{
z=s[i]-'a'+10;
sum2+=z*sun;
}

sun*=16;
}

;
if (c==1)
sum1+=sum2;
else sum1-=sum2;
if (sum1<0)
{
sum1=-sum1;
}
printf("%o\n",sum1);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: