文章
47
粉丝
109
获赞
9
访问
31.7k
用gets(s)!=NULL只有50%正确率
scanf("%s",s)!=EOF才能100%
第一种
#include<stdio.h>
#include<math.h>
#include<string.h>
int main() {
//十六进制
//int a;
//scanf("%d", &a);
//printf("0x%X", a);
char s[105] = { 0 };
//gets(s) != NULL
while (scanf("%s",s)!=EOF) {
int len = strlen(s);
int sum = 0;//16转为10进制
int ss[105] = { 0 };//将所有的英文转化为数字
int cnt = 0;//记录有多少位,除去0,x;
for (int i = len - 1; i >= 2; i--) {//去掉0,1两位
if (s[i] >= 'A' && s[i] <= 'F') {
ss[cnt++] = s[i] - 'A' + 10;//转化为数字
}
else if (s[i] >= 'a' && s[i] <= 'f') {
ss[cnt++] = s[i] - 'a' + 10;
}
else {
ss[cnt++] = s[i] - '0';//将字符数字转化为int
}
}
//for (int i = 0; i < cnt; i++) { 检测是否转换成功
// printf("%d ", ss[i]);
//}
for (int i = 0; i < cnt; i++) {//多少个,也代表16的几次方
int t = 1;//中间过渡的,分开两个乘数
for (int j = 0; j < i; j++) {
t = t * 16;
}
sum = sum + ss[i] * t;
}
...
登录后发布评论
暂无评论,来抢沙发