3.(程序题) 6.4 请编写程序输入n个1~3位十六进制数(n由键盘输入,n<=10),保存到List类型的变量中(List类型定义下面已提供),然后将这些十六进制数转换为十进制数仍然保存到该变量中,求这些数的和并显示结果。(显示结果不用提示文字、不回车) typedef union { char strcj[4]; int intcj; }List[10]; 例如:输入4 a b C d 显示结果 10+11+12+13=46
时间: 2024-03-17 09:46:25 浏览: 50
以下是程序实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef union {
char strcj[4];
int intcj;
} List[10];
int main() {
int n, sum = 0;
List list;
printf("请输入数字个数n(n<=10):");
scanf("%d", &n);
printf("请输入%d个1~3位十六进制数:", n);
for (int i = 0; i < n; i++) {
scanf("%s", list[i].strcj);
list[i].intcj = strtol(list[i].strcj, NULL, 16);
sum += list[i].intcj;
}
printf("%d", sum);
return 0;
}
```
首先,我们定义了一个 `List` 类型,它实际上是一个包含 10 个元素的联合体,其中每个元素可以表示一个 1~3 位十六进制数。我们在 `main` 函数中定义了变量 `n` 和 `sum`,分别表示输入的数字个数和数字的和。然后,我们定义了一个 `list` 变量,它是一个 `List` 类型的数组,用于保存输入的数字。接着,我们通过 `scanf` 函数读入 `n` 个 1~3 位的十六进制数,并将它们转换为十进制数,并累加到 `sum` 变量中。最后,我们使用 `printf` 函数输出数字的和,不带提示文字,也不换行。
阅读全文