1. 题目描述
假设有一个整数数组,数组中的元素是非负整数。编写一个函数,该函数计算数组中所有元素的和,但有一个特殊规则:如果数组中某个元素大于等于10,则只计算该元素的最后一位数字。例如,如果数组是[3, 11, 14, 5],则函数应返回3 + 1 + 4 + 5 = 13。
2. 解题思路
为了解决这个问题,我们可以采取以下步骤:
- 定义一个函数,接受一个整数数组和数组的大小作为参数。
- 初始化一个变量来存储总和。
- 遍历数组中的每个元素。
- 对于每个元素,检查它是否大于等于10。
- 如果是,只保留最后一位数字。
- 将处理后的元素值加到总和中。
- 返回总和。
3. 代码实现
下面是使用C语言实现的代码示例:
#include <stdio.h>
int sumArrayWithSpecialRule(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
if (arr[i] >= 10) {
arr[i] = arr[i] % 10; // 只保留最后一位数字
}
sum += arr[i];
}
return sum;
}
int main() {
int arr[] = {3, 11, 14, 5};
int size = sizeof(arr) / sizeof(arr[0]);
int result = sumArrayWithSpecialRule(arr, size);
printf("The sum is: %d\n", result);
return 0;
}
4. 实战技巧
- 理解取模运算:在这个问题中,我们使用了取模运算符
%
来获取一个数的最后一位数字。取模运算符返回两个数相除的余数。 - 优化代码:在这个例子中,我们修改了原始数组来满足题目的要求。在某些情况下,可能需要创建一个新的数组来存储处理后的值,以避免修改原始数据。
- 测试代码:确保你的代码能够处理各种情况,包括空数组、只包含一个元素的数组,以及包含多个大于等于10的元素的数组。
通过以上步骤,我们可以有效地解决这个C语言编程挑战,同时提高我们的编程技能。