| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2660 人关注过本帖
标题:一道十六进制转换为十进制的题目,一直wrong answer,但是自己测试不出错误 ...
只看楼主 加入收藏
x三生石x
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2018-10-27
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:3 
一道十六进制转换为十进制的题目,一直wrong answer,但是自己测试不出错误,求哪位大佬来帮忙看一下,万分感谢啊!
把一个长度为n ( 0 < n < 80 )的字符串过滤所有的非十六进制字符后,组成一个新的字符串(十六进制形式),然后将其转换为十进制数输出。
Input
有多个测试用例,每个测试用例占一行。
Output
对每个测试用例,输出一个十进制整数结果。如果字符串中不含十六进制数字字符,则输出0。

代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
    char a[80];
    while(gets(a))
    {
        char b[80]={};
        int i,j=0;
        for(i=0;a[i];i++)
        {
            if(a[i]>='a'&&a[i]<='f'||a[i]>='A'&&a[i]<='F'||a[i]>='0'&&a[i]<='9'){
                b[j]=a[i];
                j++;
            }
        }
        int w=strlen(b),q;
        unsigned long long t,sum=0;
        for(j=w-1;j>=0;j--){
            t=1;
            for(int k=1;k<=w-1-j;k++){
                t=t*16;
            }
            if(b[j]>='0'&&b[j]<='9')
            sum=sum+t*(b[j]-'0');

            else{
                if(b[j]=='a'||b[j]=='A')q=10;
                if(b[j]=='b'||b[j]=='B')q=11;
                if(b[j]=='c'||b[j]=='C')q=12;
                if(b[j]=='d'||b[j]=='D')q=13;
                if(b[j]=='E'||b[j]=='E')q=14;
                if(b[j]=='f'||b[j]=='F')q=15;
            sum=sum+t*q;
            }
        }
            printf("%lld\n",sum);
    }
}


求问错误在哪里?困扰好久了,一直找不出。。。
搜索更多相关主题的帖子: 十六进制 十进制 测试 || sum 
2019-01-09 11:56
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:20 
80位十六进制数转换为10进制数超过96位,long long有效位只有19位。

能编个毛线衣吗?
2019-01-09 12:06
x三生石x
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2018-10-27
收藏
得分:0 
回复 2楼 wmf2014
那应该怎么解决这个问题呢,,我用的unsigned long long也不行
2019-01-09 12:28
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
先将16进制字符串转成正真的40位16进制数,再用大数除法除10,显示对应的余数就是10进制数。
当然也可以直接做字符串除法,就像我们小学做除法那样。

[此贴子已经被作者于2019-1-9 12:42编辑过]


能编个毛线衣吗?
2019-01-09 12:40
快速回复:一道十六进制转换为十进制的题目,一直wrong answer,但是自己测试不出 ...
数据加载中...
 
   



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

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