| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 287 人关注过本帖
标题:新手,求纠错,关于不同进制相加
只看楼主 加入收藏
pavilion4994
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2013-10-17
结帖率:100%
收藏
 问题点数:0 回复次数:0 
新手,求纠错,关于不同进制相加
请计算a+b,但a和b是按不同的进制给出的。进制最小为2进制,最大为62进制,其中使用A-Z依次表示10到35,a-z表示36-61。请写出a+b的结果,结果按十进制输出。 输入第一行是一个整数N,表示有多少个测试样例,以后每行是一个样例,每行是4个部分,分别为a的值,a的进制,b的值,b的进制。其中值都是用一个字符串表示,进制都是一个整数。4个部分之间用一个空格隔开,保证输入的合法,a、b和a+b的值都在-2^31到2^31-1之间。输出每行输出一个样例的结果。  
Sample Input  
2
1000 2 1F 16
-1 10 20 3
Sample Output  
39
5
这是我写的:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
    int k;
    scanf("%d",&k);
    while(k--)
    {
    char a[1000];
    char b[1000];
    int m,n,al,bl,i,x=0,y=0,t;
    scanf("%s %d %s %d",a,&m,b,&n);
    al=strlen(a);
    bl=strlen(b);
    for(i=0;i<al;i++)
    {
       if(a[i]=='-')
        continue;
        if('A'<=a[i]&&a[i]<='Z')
        t=a[i]-55;
        else if('a'<=a[i]&&a[i]<='z')
        t=a[i]-61;
        else t=a[i]-'0';
        x=x+(pow(m,(al-1-i))*t);
    }
    if(a[0]=='-')
        x=-x;
    for(i=0;i<bl;i++)
    {
        if(b[i]=='-')
            continue;
        if('A'<=b[i]&&b[i]<='Z')
        t=b[i]-55;
        else if('a'<=b[i]&&b[i]<='z')
        t=b[i]-61;
        else t=b[i]-'0';
        y=y+(pow(n,(bl-1-i))*t);
    }
    if(b[0]=='-')
        y=-y;
   printf("%d\n",x+y);
}
}
样例通过了,
为何交上去不对
搜索更多相关主题的帖子: 十进制 字符串 
2013-12-10 22:49
快速回复:新手,求纠错,关于不同进制相加
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018423 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved