如何检查一个数组中是否存在非零值(元素)

4
我想知道如何编写一个函数来返回是否至少有三个值不等于0。我已经搜索了类似的问题,但是没有找到有效的解决方案。为了解释我的问题,这里有一个例子:
我有一个包含以下元素的数组:[1,0,2,0,4,0,0,3,0,0]。我想检查是否至少有3个元素不等于零。
如果有至少3个元素!= 0,则我的代码将返回1,否则返回0,表示小于3个元素!= 0
所以在我的例子中,它应该返回1
3个回答

5

计算非零元素的数量。如果小于三个,则返回false,否则返回true。

为了获取计数,使用for循环遍历数组内容,然后使用if语句测试元素是否为零。


5
如果你想要优化,当计数达到3时跳出循环。 - Daniel Fischer
在 Stack Overflow 上进行过早的优化?邪说! - tskuzzy

1
int non_zero(int a[], int lim) {  
    int i, count;
    count = 0;
    for (i = 0; i < lim && count < 3; i++)
        if (a[i] != 0)
            count++;
    return count == 3 ? 1 : 0;
}

-1

我想分享我的解决方案

int check(){
    int arr[10]= [1,0,2,0,4,0,0,3,0,0];
    int total=0;
    for(int i=0;i<=10;i++){
        total+=arr[i];
     }
    return total;
}

谢谢大家尝试解决我的问题<3


这只获取总和,而不是非零元素的数量。此外,根据数组的大小和数组元素的大小,您可能会遇到溢出,将总数归零,这意味着它也可能无法告诉您是否存在任何非零元素。 - gkimsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接