我的程序有语法错误:
预期表达
我是递归的新手;我希望我做得对。
#include <iostream>
void vvodmas(int a[],int n);
int poisk(int a[],int n,int min , int i);
int poiskmin( int a[], int n);
int main()
{ int n;int i;
int a[i];
std::cout<<"massiv: ";
vvodmas(a,n);
std::cout<<std::endl;
std::cout<<"minimum"<< poiskmin( a[],n); // here is the problem
}
void vvodmas(int a[],int n)
{ std::cout<<"n?";
std::cin>>n;
for (int i=0;i<n;i++)
std::cout<< a[i]<<" ";
}
int poisk(int a[], int n,int min, int i)
{
if (i<n)
{ if (a[i]<min)
min=a[i];
i++;
poisk(a,n,min,i);
}
else
return min;
}
int poiskmin( int a[], int n)
{
return poisk( a, n, a[0], 0 );
}
答案 0 :(得分:0)
您不需要[]
将a
传递给poiskmin
;声明a
时需要它,告诉编译器a
是一个数组。之后,不需要提醒编译器。
答案 1 :(得分:0)
问题在于 a [] 。您的逻辑需要传递整个数组,而不仅仅是未指定的元素。您只需要 a 。
添加括号后,编译器希望您尝试传递元素。你没有告诉它哪个元素(在括号内)。这就是为什么它抱怨表达缺失的原因:它寻找像 a [0] 这样的东西。
顺便说一句,我从 gcc 获得的错误信息是
a.c:11: error: expected primary-expression before ‘]’ token
请注意位置信息如何帮助您找到错误。
答案 2 :(得分:0)
实际问题在于,
std::cout<<"minimum"<< poiskmin( a[],n); // here is the problem
更正后的行
std::cout<<"minimum"<< poiskmin( a,n) ;
将完整数组作为参数传递给函数时,必须删除[] ,当您要发送特定元素时,将使用 [] 数组到函数,就像你在下面的语句中所做的那样。
return poisk( a, n, a[0], 0 );
除此之外,您的程序中还有一些其他循环漏洞。
1。始终最好初始化变量。
int n = 0 ;
int i = 0 ;
2。您正在vvodmas(a,n);
函数中分配数组的值和数组的长度。
但是变量的范围是通过值传递给函数的,函数中不会填充的值不会反映在调用者部分中,将值作为函数的引用传递。