如果数组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;
}