C语言 十六进制转十进制

小白请教大神们,下面哪里出问题了?为什么蓝桥杯官网评测为运行错误
#include
int main()
{
char a[9];
int b[20],i=0,j=0,k;
long long int s=0,t;
scanf("%c",&a[j]);
while(a[j]!='\n')
{

j++;
scanf("%c",&a[j]);
}
while(i<j)
{
switch(a[i])
{
case '0':b[i]=0;break;
case '1':b[i]=1;break;
case '2':b[i]=2;break;
case '3':b[i]=3;break;
case '4':b[i]=4;break;
case '5':b[i]=5;break;
case '6':b[i]=6;break;
case '7':b[i]=7;break;
case '8':b[i]=8;break;
case '9':b[i]=9;break;
case 'A':b[i]=10;break;
case 'B':b[i]=11;break;
case 'C':b[i]=12;break;
case 'D':b[i]=13;break;
case 'E':b[i]=14;break;
case 'F':b[i]=15;break;
}
t=1;
for(k=0;k<j-i-1;k++)
{
t=t*16;
}
s=s+b[i]*t;
i++;
}
printf("%lld",s);
return 0;
}

c

3个回答

#include<stdio.h>
int main()
{
    long long int a;
    scanf("%X",&a);
    printf("%I64d",a);
    return 0;
}

能简单就不要麻烦~~~~

首先 第一行#include 后面却东西,
其次你的思路可能有问题,你可以参考一下
#include "stdio.h"
int main()
{
int num=0;
int a[100];
int i=0;
int m=0;
int yushu;
char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("请输入一个十进制整数:");
scanf("%d",&num);
while(num>0)
{
yushu=num%16;
a[i++]=yushu;
num=num/16;

}
printf("转化为十六进制的数为:0x");
for(i=i-1;i>=0;i--)//倒序输出
{
m=a[i];
printf("%c",hex[m]);

}
printf("\n");
}

把你第一行的头文件写好就OK了

#include

就改下第一行的这个就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问