输入一个三位数,计算该数各位上的数字之和,如果在[1, 12]之内,则输出与数字之和相对应的月份的英文单词,否则输出***。要求:用指针数组记录各月份英文单词的首地址,且不得使用全局变量。
时间: 2024-02-09 13:11:05 浏览: 109
好的,我理解了你的问题。下面是代码实现:
```c
#include <stdio.h>
int main() {
int num, sum = 0;
char *months[] = {"January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"};
printf("请输入一个三位数:");
scanf("%d", &num);
int digit1 = num / 100; // 获取百位数
int digit2 = num % 100 / 10; // 获取十位数
int digit3 = num % 10; // 获取个位数
sum = digit1 + digit2 + digit3; // 计算数字之和
if (sum >= 1 && sum <= 12) {
printf("%s\n", *(months + sum - 1)); // 输出对应月份的英文单词
} else {
printf("***\n");
}
return 0;
}
```
以上代码中,使用了指针数组 `months` 来记录各月份英文单词的首地址。然后通过输入的三位数,计算出数字之和,判断是否在 [1, 12] 之间,如果是,则输出对应月份的英文单词,否则输出 `***`。
需要注意的是,我们在输出月份的英文单词时,使用了指针数组的下标方式来获取对应的单词,其中 `sum - 1` 是因为数组下标从 0 开始。
阅读全文