我的代码块出错。但是我无法在
中的任何地方找到它程序。它的意思
第3行中的:预期';',','或者')'之前' ='令牌
#include<stdio.h>
int count_key1(int a[],int size,int key,int flag=0)
{
if(size!=0)
{
if(a[size-1]==key)
count_key1(a,size--,key,flag++);
}
else
return flag;
}
int main()
{
int b[30]={1,4,2,3,2,6,6,9},key1=9,result;
result=count_key1(b,8,key1,0);
printf("%d is %d times present",key1,result);
return 0;
}
答案 0 :(得分:9)
在C中,您无法在函数参数中分配默认值。
删除
中的 int count_key1(int a[],int size,int key,int flag=0)
C++
IIRC,你对str
函数重载感到困惑,如果在调用函数时没有传递参数,我们可以为参数设置一些默认值。
但是,在C中,函数调用必须完全匹配定义中存在的签名。因此,基本上,不需要在函数定义中出现默认值。
答案 1 :(得分:0)
先生,您的代码非常明显,但请尝试使用以下更简单的代码,它们提供相同的输出并且易于理解
#include<stdio.h>
#include<stdlib.h>
int count_key1(int* a,int size,int key,int flag)
{
int count=0,i;
for(i=0; i<size; i++) { if (a[i] == key) count++; }
return count;
}
int main()
{
int b[30]={1,4,2,3,2,6,6,9},key1=9,result;
result=count_key1(b,8,key1,0);
printf("%d is %d times present",key1,result);
return 0;
}
答案 2 :(得分:0)
int count(int num, int* arr, int length) {
if (!length)
return 0;
int c = count(num, arr+1, length-1);
return arr[0] == num? c + 1: c;
}
int main(void) {
int arr[10] = {3,4,1,2,4,5,6,5,4,5};
std::cout << count(2, arr, 10);
return 0;
}