为什么我调用函数老是出现: function does not take 1 parameters

作者&投稿:貊鸣 (若有异议请与网页底部的电邮联系)
我也遇到过这种问题,呵呵。一般是你在编写头文件时对函数的申明中没有参数或者只有一个参数,这样在源文件中你又在该函数数中带有两个或多个参数,编译器现实编译头文件的,这样与后来的源文件不一致,所以就出错了。
解决方法很简单,把你在源文件中该参数的定义复制到头文件中,然后在后面加分号就可以了。
例如:
源文件:void add(int a,int b,int c)
{ }
则头文件的申明为:
void add(int a,int b,int c);
就是头文件函数的申明和源文件函数的定义要一致。呵呵,加油啊!

你是不是函数的实现在你调用的后面啊

如:
void main()
{
//调用在这里
}

//实现在这里,并且main函数前面没有对调用的函数进行声明

正常应该
//先声明,放头文件里也行
void main()
{
//调用
}

ore[10];
int i;
float average(float array[10]);
float Max(float array[10]);
float Min(float array[10]); //这三条是函数说明语句,要跟下面的函数定义一样,里面要加参数,要不程序会认为是个无参数的函数,你在下面程序中,调用时,
average(score);
Max(score);
Min(score);
给里面写参数,会认为不对,因为上面这几句在说明时里面是没有参数的。

用(除了你给出的错误提示,应该还有一个“ 's' : undeclared identifier ”的提示);

在主函数中s没有赋初值,参数的传递没有意义,传递的参数必须有数据,所以无法传递,就算法而言,s应该在dd函数内定义并且要赋初值,因为要执行算术运算的变量本身必须有一个值;

既然a要被重新赋值,为什么要赋初值?略显多余

就语法而言,我把它改成下面的模式,▲▲但是要注意,我只是根据语法的正确性来修改的,在语法之外还有一个明显的错误,你的算法里用了递归,但是却是无终止的自身调用,即“ if(a<=6) dd(a); ”处,如果a的值小于等于6,dd函数就会无限地自身调用,s的值会不断改变。

还有因为不知道你的算法的具体目的是什么,所以未做具体修改,只是修改了一些较明显的语法错误。

# include <stdio.h>
int dd(int a)
{
int s=0;
s+=a;
if(a<=6)
dd(a);
else
return(s);
}

void main()
{
int a,x;
scanf("%d",&a);
x=dd(a);
printf("%d\n",x);
}

贴一下主函数怎么调用的?

C语言中的函数调用问题 ,出现错误 error C2660: 'prime' : function does not take 1 parameters~

#include
int prime(int n) //一般声明在主函数前,而且有参数的要写好参数
void main()
{

int n;
printf("
input an integer:");
scanf("%d",&n);
if(prime(n))
printf("
%d is a prime.
",n);
else
printf("
%d is not a prime.
",n);
}

int prime(int n) //要和声明的函数格式一致
{
int flag=1,i;
for(i=2;i<n/2 && flag==1;i++)
{
if(n%i==0)
flag=0;
}
return(flag);
}

struct node *creat();
void print();
函数声明和定义不一致,参数类型和个数是要一致的,改成这么声明
struct node *creat(struct node *head);
void print(struct node *head);