各位大佬们,这段十六转十进制代码行不行?怎么蓝桥杯通过不了检测
#include<stdio.h>#include<string.h>
#include<math.h>
int main()
{
int i , j = 0 , n, l , b ,d;
long long int d10 = 0;
char a,d16;
scanf("%s",d16);
l=strlen(d16);
for(i=l-1;i>=0;i--)
{
n=i;
if(d16 >= 65)
d16-=7;
b = d16-48;
d10 = d10 + b * pow(16,n);
j++;
}
d=d10%10;
d10=d10/10;
if(d10!=0)
printf("%d",d10);
printf("%d",d);
} C++能通过测试,C不能 本帖最后由 jackz007 于 2021-11-9 10:33 编辑
#include <stdio.h>
int foo(char s[])
{
int i , k , m, v ;
for(m = 0 ; s ; m ++) if(s >= 'a' && s <= 'z') s -= ' ' ;
for(i = v = 0 ; i < m ; i ++) {
k = (s >= 'A' && s <= 'F') ? s -'A' + 10 : s - '0' ;
if(k < 0 || k > 15) {
v = 0 ;
break ;
} else {
v = v * 16 + k ;
}
}
return v ;
}
int main(void)
{
char s ;
gets(s) ;
printf("%d\n" , foo(s)) ;
}
编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
1f
31
D:\0002.Exercise\C>x
1ff
511
D:\0002.Exercise\C>
页:
[1]