说明:此题目稍有难度,可作为拓展训练。 编写函数,功能为返回一个整数的奇数位之和,以及偶数位之和。函数模块名称为sum。 例如整数12345,函数调用后分别返回奇数位之和9,以及偶数位之和6给主调函数。 奇偶位计数从最低位开始向高位计算,例如整数123456中,2/4/6是奇数位,1/3/5是偶数位 接口分析提示,可以设计两种类型的函数接口(自己选定一种即可): 1、一种是函数返回值返回其中的一个和,另外一个值增加一个指针参数传回给主调函数。 2、另一种是函数无返回值void,在原有参数基础上增加两个指针参数,分别传回奇数位之和以及偶数位之和。 c语言
时间: 2023-06-15 14:06:28 浏览: 45
第一种接口设计如下:
```c
int sum(int num, int* oddSum);
```
函数参数说明:
- `num`: 待计算的整数。
- `oddSum`: 指向奇数位之和的指针,函数将计算后的结果保存到该指针所指的变量中。
函数返回值:
- 函数返回偶数位之和。
函数实现如下:
```c
int sum(int num, int* oddSum) {
int evenSum = 0, oddCnt = 0, evenCnt = 0;
while (num > 0) {
int digit = num % 10;
if (oddCnt % 2 == 0) {
evenSum += digit;
} else {
*oddSum += digit;
}
oddCnt += digit % 2;
evenCnt += (digit + 1) % 2;
num /= 10;
}
return evenSum;
}
```
第二种接口设计如下:
```c
void sum(int num, int* oddSum, int* evenSum);
```
函数参数说明:
- `num`: 待计算的整数。
- `oddSum`: 指向奇数位之和的指针,函数将计算后的结果保存到该指针所指的变量中。
- `evenSum`: 指向偶数位之和的指针,函数将计算后的结果保存到该指针所指的变量中。
函数实现如下:
```c
void sum(int num, int* oddSum, int* evenSum) {
*oddSum = 0;
*evenSum = 0;
int oddCnt = 0, evenCnt = 0;
while (num > 0) {
int digit = num % 10;
if (oddCnt % 2 == 0) {
*evenSum += digit;
} else {
*oddSum += digit;
}
oddCnt += digit % 2;
evenCnt += (digit + 1) % 2;
num /= 10;
}
}
```