【ID:432】【14分】F. 实验7-3-6 字符串转换成十进制整数 题目描述 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符"-",则代表该数是负数。 输入 输入在一行中给出一个以#结束的非空字符串。 输出 在一行中输出转换后的十进制数。题目保证输出在长整型范围内。用·c语言回答
时间: 2024-03-27 21:36:46 浏览: 74
指针与字符串.rar
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
int main() {
char s[1000];
scanf("%s", s);
int len = strlen(s);
int start = -1;
for (int i = 0; i < len; i++) {
if (s[i] == '-') {
start = i;
break;
} else if (isxdigit(s[i])) {
start = i;
break;
}
}
if (start == -1) {
printf("0\n");
return 0;
}
long long ans = 0;
for (int i = start; i < len; i++) {
if (!isxdigit(s[i])) {
break;
}
ans = ans * 16 + (isdigit(s[i]) ? s[i] - '0' : tolower(s[i]) - 'a' + 10);
}
if (s[start] == '-') {
ans = -ans;
}
printf("%lld\n", ans);
return 0;
}
```
阅读全文