#include <stdio.h>
#include <string.h>
#include <ctype.h>//为isxdigit,isdigit,isupper函数声明头文件
int main() {
char str[50];
scanf("%s", str);
int sum = 0;
int foundHex = 0;//标记,0就是未发现十六进制字符
for (int i = 0; i < strlen(str); i++) {//strlen函数返回字符串长度(不包括空字符)
if (isxdigit(str[i])) {//isxdigit函数用于快速判断字符是否为十六进制字符
foundHex = 1;
int decValue;
if(isdigit(str[i])){//isdigit用于判断字符是否为数字
decValue = str[i] - '0';
}else if(isupper(str[i])){//isupper函数用于判断字符是否为大写字母
decValue = str[i] - 'A' + 10;
}else{//剩下的情况均为小写字母
decValue = str[i] - 'a' + 10;
}
sum += decValue;
}
}
if (foundHex) {
printf("%d\n", sum);
} else {
printf("NO\n");
}
return 0;
}
十六进制字符包括0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f。
其中0-9分别对应十进制的0-9,A,a对应十进制的10,B,b对应十进制的11,C,c对应十进制的12,D,d对应十进制的13,E,e对应十进制的14,F,f对应十进制的15.