【发布时间】:2021-12-24 09:25:52
【问题描述】:
我正在尝试创建一个函数,将数组中的两个整数从输入的数字加到另一个整数。所以例如数组是
int arr[] = {20, 1, 18, 4, 13, 6, 10, 15, 2, 17, 3, 19, 7, 16, 8, 11, 14, 9, 12, 5};
并且用户输入 18 和 2,因此程序会将第一个数字 (18) 中的数字相加,并在达到 2 时停止。
我尝试循环,但它一直返回错误:
进程以退出代码 139 结束(被信号 11:SIGSEGV 中断)
int cw(int first, int second ){
int scoreCw;
int arr[] = {20, 1, 18, 4, 13, 6, 10, 15, 2, 17, 3, 19, 7, 16, 8, 11, 14, 9, 12, 5};
for (int i = first; i < 20; ++i)
if(i != second){
scoreCw += arr[i];
}
return scoreCw;
}
【问题讨论】:
-
您的
scoreCW变量已声明但未初始化。 -
不知道为什么你会得到 SIGSEGV,但我认为你实际上想要
if(arr[i] != second)而不是if(i != second)和else break;。 -
您是从
arr[first]开始还是从arr[n] == first开始? -
另外,你怎么知道
first和second之间有20个元素?当i == second(或者是arr[i] == second)时,您可能应该break。