修改书上的程序报错,错误如下,上网查没有合适的解释

如果数组a 的所有元素都为0,返回true,都不为0,返回false.
可惜下列函数有错,请修改。
bool has zero(int a[],int n)
{
int i;
for (i=0;i<n;i++)
if (a[i] == 0)
return true;
else
return false;
}

很显然,错误在逻辑上,这个忽略的很多其他情况,而在不符合提议要求的情况下返回true和false。但是修改后一样报错。上网查了也没有沾边的解释。错误如下
error C2061: syntax error : identifier 'has_zero'
D:\c\c\第九章函数\chapter9exercise14.c(3) : error C2059: syntax error : ';'
D:\c\c\第九章函数\chapter9exercise14.c(3) : error C2059: syntax error : 'type'
D:\c\c\第九章函数\chapter9exercise14.c(12) : error C2061: syntax error : identifier 'has_zero'
D:\c\c\第九章函数\chapter9exercise14.c(12) : error C2059: syntax error : ';'
D:\c\c\第九章函数\chapter9exercise14.c(12) : error C2059: syntax error : 'type'
D:\c\c\第九章函数\chapter9exercise14.c(19) : warning C4013: 'has_zero' undefined; assuming extern returning int

首先你的编译器报的是语法错误,不是算法逻辑错误,先把语法错误给你改了,逻辑错误自己分析

int has_zero(int a[],int n)
{
int i;
for (i=0;i<n;i++)
if (a[i] == 0)
return 1;
else
return 0;
}

我只想说如何有的为0有的不为0,该返回啥

你的编译器都不报代码问题么?c语言没有bool这个东西;还有has zero()中间加个空格干啥

兄弟,给你两种简单易懂的方式.

第一种.

 #include <iostream>
using namespace std;

typedef enum
{
    //全为0.
    Tag_AllZero = 0,
    //有0,但不全为0.
    Tag_NotAllZero,
    //全部不是0.
    Tag_AllNot
}Array_Status;

int judgeArrayZero(int a[], int n)
{
    if (a[0] == 0)
    {
        for (int j = 1; j < n; ++j)
        {
            if (a[j] != 0)
                return Tag_NotAllZero;
        }
        return Tag_AllZero;
    }
    else
    {
        for (int j = 1; j < n; ++j)
        {
            if (a[j] == 0)
                return Tag_NotAllZero;
        }
        return Tag_AllNot;
    }
}

第二种.

 #include <iostream>
using namespace std;

typedef enum
{
    //全为0.
    Tag_AllZero = 0,
    //有0,但不全为0.
    Tag_NotAllZero,
    //全部不是0.
    Tag_AllNot
}Array_Status;

int judgeArrayZero(int a[], int n)
{
    int count = 0;
    for (int i = 0; i < n; ++i)
    {
        if (a[i] == 0)
            count++;
    }

    if (count == 0)
        return Tag_AllNot;
    else if (count == n)
        return Tag_AllZero;
    else
        return Tag_NotAllZero;
    }

在其他地方调用has_zero的时候是不是没有声明,可以在has_zero所在的头文件加上extern bool has zero(int a[],int n);

C语言里传数组,是int* a,而不是int a[],所以后面关于a的处理全都出错了

function has_zero(arr){
for(var i=0;i<arr.length;i++){
if(arr[i]==0){
return 1;
}else{
return 0;
}
}
}

#include
#include

int has_zero(int* a,int n)
{
int i;
for (i=0;i<n;i++){
if (a[i] == 0)
return 1;
}
return 0;
}

int main(){
int a[]={1,2,3,4,5,6,7,8,9};
if(has_zero(a,9))
printf("has Zero!!!\n");
else
printf("no zero!!!!!\n");
return 0;
}

#include

int has_zero(int a[],int n)
{
int i;
int k=0;
int k1=0;
for (i=0;i<n;i++){
if (a[i] != 0){
k++;
}else{
k1++;
}
}
if(k==n){//全不为0
return 1;
}
if(k1==n){//全为0
return 0;
}
return -1;
}

int main(){
int a[]={0,0,0,0,0,0,0,0,0};
switch(has_zero(a,9)){
case 0:
printf("全为0\n");
break;
case 1:
printf("全不为0\n");
break;
default:
printf("部分为0\n");
break;
}

return 0;

}