用C语言编写函数计算若干十六进制数的和。 输入 输入有若干行,每行为由空格分隔的若干数十六进制整数(不超过10000个),如: 5 A 输出 控制台输出,对每行输入,输出该行十六进制数的和,用十进制表示。如: 15。告诉我如何编写程序实现,给我具体的函数!
时间: 2024-05-26 12:10:17 浏览: 123
C语言编程-编写函数fun求1!+2!+3!+ …… +n!的和,在main函数中由键盘输入n值,并输出运算结果;
5星 · 资源好评率100%
您可以使用以下函数来计算若干十六进制数的和:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hexToInt(char hex) {
if (hex >= '0' && hex <= '9') {
return hex - '0';
} else if (hex >= 'A' && hex <= 'F') {
return hex - 'A' + 10;
} else if (hex >= 'a' && hex <= 'f') {
return hex - 'a' + 10;
} else {
return -1; // 非法字符
}
}
int hexStrToInt(char* hexStr) {
int len = strlen(hexStr);
int res = 0;
for (int i = 0; i < len; i++) {
int hex = hexToInt(hexStr[i]);
if (hex == -1) {
return -1; // 非法字符
}
res = res * 16 + hex;
}
return res;
}
int main() {
char hexStr[10001];
while (fgets(hexStr, 10001, stdin) != NULL) {
int sum = 0;
char* hex = strtok(hexStr, " ");
while (hex != NULL) {
int num = hexStrToInt(hex);
if (num == -1) {
printf("非法字符\n");
return 0;
}
sum += num;
hex = strtok(NULL, " ");
}
printf("%d\n", sum);
}
return 0;
}
Hope this helps!
阅读全文