输入一个3 位数,计算该数各位上的数字之和,如果在[1,12]之内,则输出与和数相对应的月份的英文名称,否则输出***。用c语言指针来完成
时间: 2023-09-23 07:05:32 浏览: 234
### 回答1:
如果要用指针来计算一个三位数各位上的数字之和,可以这样写:
```
#include <stdio.h>
int main(void) {
int num, sum = 0;
int *p = # // 定义一个指针变量p,指向num
printf("请输入一个三位数: ");
scanf("%d", &num);
// 使用指针访问各位上的数字
sum += *p / 100;
sum += *p % 100 / 10;
sum += *p % 10;
// 根据sum的值,输出对应的月份的英文名称
if (sum >= 1 && sum <= 12) {
char *months[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
printf("%s\n", months[sum - 1]);
} else {
printf("***\n");
}
return 0;
}
```
这段代码的思路是:
1. 定义一个变量`num`来存储输入的三位数,定义一个变量`sum`来存储各位数字之和。
2. 定义一个指针变量`p`,指向`num`。
3. 读入输入的三位数。
4. 使用指针来访问`num`的各位数字,并累加到`sum`中。
5. 根据`sum`的值,输出对应的月份的英文名称,或者输出`***`。
### 回答2:
首先,我们需要定义一个函数,该函数接受一个三位数作为参数,并计算该数各位上的数字之和。具体的实现如下:
```c
#include <stdio.h>
int digitSum(int num) {
int sum = 0;
while(num != 0) {
sum += num % 10; // 获取个位数字并累加到sum
num /= 10; // 将数字缩小10倍,去掉个位数字
}
return sum;
}
```
接下来,我们可以编写一个函数,该函数根据输入的和数返回相对应的月份的英文名称。具体的实现如下:
```c
#include <stdio.h>
char* getMonth(int sum) {
char* month;
switch(sum) {
case 1:
month = "January";
break;
case 2:
month = "February";
break;
case 3:
month = "March";
break;
case 4:
month = "April";
break;
case 5:
month = "May";
break;
case 6:
month = "June";
break;
case 7:
month = "July";
break;
case 8:
month = "August";
break;
case 9:
month = "September";
break;
case 10:
month = "October";
break;
case 11:
month = "November";
break;
case 12:
month = "December";
break;
default:
month = "***";
break;
}
return month;
}
```
最后,我们可以编写一个主函数,该函数接受一个三位数作为输入,并调用上述的两个函数来完成题目要求。具体的实现如下:
```c
#include <stdio.h>
int digitSum(int num);
char* getMonth(int sum);
int main() {
int num;
printf("请输入一个三位数:");
scanf("%d", &num);
int sum = digitSum(num);
printf("数字之和为:%d\n", sum);
char* month = getMonth(sum);
printf("月份的英文名称为:%s\n", month);
return 0;
}
```
这样,当我们输入一个三位数时,程序将会计算该数各位上的数字之和,然后输出与和数相对应的月份的英文名称。如果和数不在[1,12]之内,则输出***。
### 回答3:
先声明一个函数`calculateSum`来计算一个三位数各位上的数字之和。函数的输入参数是一个指向整数的指针,输出是一个整数表示数字之和。
```c
int calculateSum(int* num) {
int sum = 0;
int temp = *num;
while (temp != 0) {
sum += temp % 10;
temp /= 10;
}
return sum;
}
```
然后在主函数中,我们需要获取用户输入的三位数字,然后调用`calculateSum`函数获取数字之和,最后根据数字之和判断月份并输出结果。
```c
#include <stdio.h>
#include <string.h>
int calculateSum(int* num);
int main() {
int num;
printf("请输入一个3位数:");
scanf("%d", &num);
int sum = calculateSum(&num);
if (sum >= 1 && sum <= 12) {
char months[12][10] = {
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
printf("对应的月份是:%s\n", months[sum - 1]);
} else {
printf("***\n");
}
return 0;
}
```
这样,用户输入一个三位数,程序会计算每个数字的和,如果和在1到12之间,即对应某个月份,就输出相应月份的英文名称,否则输出***。
阅读全文