C 语言初阶算法习题实战解析(二)
在算法学习的初级阶段,掌握基础的数据处理逻辑至关重要。下面整理了五道经典的 C 语言算法题,涵盖数组操作、字符串处理及位运算技巧,结合代码实现与思路解析,希望能帮助大家巩固基础。
一、两数之和
题目描述:
给定一个整数数组 numbers 和一个目标值 target,请在数组中找出和为目标值的两个整数,并返回它们的下标(从 1 开始计数)。

核心思路: 这道题采用双重循环的暴力解法即可解决。外层循环遍历数组中的每个元素,内层循环查找与其相加等于目标值的另一个元素。需要注意的是,题目要求返回的下标是从 1 开始的,所以存储结果时需要将索引加 1。如果当前元素已经大于目标值,可以直接跳过,因为后续元素只会更大(假设数组有序或基于此优化),不过通用解法中直接判断和是否相等更稳妥。
参考代码如下:
int *twoSum(int *numbers, int numbersLen, int target, int *returnSize) {
// 动态分配结果数组
int *ret = (int *)malloc(sizeof(int) * numbersLen);
for (int i = 0; i < numbersLen; i++) {
if (numbers[i] > target) {
continue;
}
for (int j = i + 1; j < numbersLen; j++) {
int sum = numbers[i] + numbers[j];
if (sum == target) {
ret[0] = i + 1;
ret[1] = j + 1;
*returnSize = 2;
return ret;
}
}
}
return 0;
}






