我在hackerrank问题上写过这个函数。hackerrank编译器出错
int lonelyInteger (int a[], int n) {
int i, b[99] = {0};
for (i = 0; i < n; i ++) {
b[a[i]] ++;
}
for (i = 0; i < 100; i ++) {
if (b[i] == 1) {
return i;
}
}
}
但我得到这个编译错误。
solution.c: In function 'lonelyInteger':
solution.c:13:1: error: control reaches end of non-void function [-Werror=return-type]
}
^
我已经使用逻辑,以便它必须我之间返回= 0到i = 99,但它的编译器给错误。所以我的问题是,有必要在最后使用return语句(或者是一个好的习惯)?
PS - 我在最后写了一个随机返回语句,它工作正常。
PPS - 如果你在考虑如果b [i]从不等于1,那就不是真的。根据问题,对于某些i = {0,1,2 ...,98},它必须等于1。
事后编辑仍在研究中,但不在现场。无论如何,你的代码有其他未定义的行为。获取笔和纸并手工处理您的循环(或在调试器中单步执行)。然后观看'b'的索引以及您分配了多少元素。 – Olaf
为什么我的问题被低估?我有问题吗? –
https://www.hackerrank.com/challenges/lonely-integer –