C++实现数组首尾交换的switchEnds函数代码是否正确?
代码验证结果
你的代码核心功能逻辑正确,运行测试用例后会输出5 2 3 4 1 ,已经实现了交换数组首尾元素的需求,但存在两处和题目要求不符、需要优化的点:
- 函数名不匹配:题目明确要求函数名为
switchEnds,你实现的函数名是switchEnd,少了末尾的s,严格判题场景下会因为函数签名不匹配判定为错误 - 缺少边界判断:如果传入的
size小于等于1,访问array[size-1]会出现数组越界问题,建议在函数开头增加判断,size<=1时直接返回无需交换
编写函数void switchEnds(int *array, int size);,传入参数为数组首地址和数组大小,函数功能为交换数组第一个和最后一个元素的值。
修正后完整代码
#include <iostream> using namespace std; // 修正函数名,增加边界校验 void switchEnds(int *array, int size){ if (size <= 1) return; int temp = array[0]; array[0] = array[size-1]; array[size-1] = temp; } int main() { const int size = 5; int array[size] = {1,2,3,4,5}; switchEnds(array, size); for (int c = 0; c < size; c++) cout << array[c] << " "; return 0; }
内容的提问来源于stack exchange,提问作者Dara Moustafa
相关产品推荐
相关产品推荐

