代码就像: -
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
int array[6]={1,2,3,4,5,6};
for (int i = 0; i <= 5 ; i++){
for (int j = 5; j <= i ; j--){
if(array[i] + array[i+1] == array[j]){
cout << array[i] << " + " << array[i+1] << " = " << array[j];
}
}
}
}
我实际上是初学者,我的老师给了我一个问题,当我解决它时,我得到了错误。请告诉我错误是什么。
答案 0 :(得分:2)
在您的第二个条件中,您for (int j = 5; j <= i ; j--){
递减j
,但请测试j
是否小于i
。它永远都是真的。
此外,j
将变为-1,从而导致分段错误。
答案 1 :(得分:2)
if(array[i] + array[i+1] == array[j]){
您在i == 5
时运行该行代码。这意味着您测试array[6]
,这是超出界限的。
答案 2 :(得分:1)
在循环的最后一次迭代&#34;对于i&#34;,我的值为5.
然后访问元素数组[i + 1],即数组[6],它不存在。数组值为array [0],array [1],...,array [5]。
答案 3 :(得分:0)
试试这段代码!
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
int array[6]={1,2,3,4,5,6};
for (int i = 0; i <5 ; i++) //Fix 1
{ //Run this loop till array[4] because in if condition you are accessing array[5] which is the last element of array
for (int j = 5; j >= i ; j--) //Fix 2
{ //Run this loop till j is greater than i
if(array[i] + array[i+1] == array[j])
{
cout << array[i] << " + " << array[i+1] << " = " << array[j] << "\n";
}
}
}
}
输出:
1 + 2 = 3
2 + 3 = 5