标题:2017.2.26 十六进制转八进制,Dev上运行正确,但在蓝桥杯上提交后提示运行 ...
只看楼主
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:20 
回复 9楼 Leo_L
夸大了点,如果不考虑大小写的话,可用22行解决,考虑字母大小写用了26行(包括中括号),代码如下,请测试:
程序代码:
#include<stdio.h>
void main()
{
    char a[100001],b,d[4]={1,2,4,8};
    int i,j,k,l,n;
    for(scanf("%d",&n);n;n--)
    {
        scanf("%s",a);
        for(i=0,l=0;a[i];i++,l+=4)
        {
            if(a[i]>'F')a[i]-=32;                //调整大小写
            a[i]=a[i]>'9'?a[i]-'A'+10:a[i]-'0';  //转换为对应十进制数
        }
        for(i=0,j=l%3>0?3-l%3:0,b=k=0;i<l;i++)
        {
            b=b*2+((a[i/4]&d[3-i%4])>0);
            if(++j==3)
            {
                if(b&&!k)k=1;                    //消前导0
                if(k)printf("%d",b);
                b=j=0;
            }
        }
        printf("\n");
    }
}


[此贴子已经被作者于2017-2-28 08:22编辑过]

2017-02-27 23:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474558-1-1.html




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

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