为了账号安全,请及时绑定邮箱和手机立即绑定

结果显示too few arguments to function 'su' 但是我参数都给了啊?

结果显示too few arguments to function 'su' 但是我参数都给了啊?

C C++
慕桂英3389331 2022-09-16 12:11:13
#include <stdio.h>#include <stdlib.h>#include <math.h>int su(int x,int i){if(x==0)return 1;else{for(i=2;x%i!=0 && i<=sqrt(x);i++)if(i>sqrt(x))return 1;elsereturn 0;}}int main(){int x;scanf("%d",&x);if (su(x)==1)printf("y");if (su(x)==0)printf("n");return 0;}
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

形参和实参的个数没有对应上。su函数定义了两个参数,分别是int x和int i,但是在主函数调用的时候指只调用了一个x。

形参和实参的区别和联系

1、形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。

3、实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。

4、函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

扩展资料

函数调用的本质:

在执行调用一个函数:本质就是通过call指令调用函数在代码段的地址进行直接调用。在汇编指令可以看到当函数执行完毕,执行ret汇编指令退出函数。其实一个完整的函数调用必定包含call和ret指令。

函数分类:

1、从用户使用的角度看,函数有两种,分别为系统函数和用户自己定义的函数。系统函数又称库函数,是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们;用户自己定义的函数是用于解决用户的专门需要。

注:库函数在使用时程序中必须包含相应的头文件,如,#include《iostream》等。

2、从函数的形式看,函数又分为无参函数和有参函数。无参函数调用时不必给出参数,有参函数调用时要给出参数,在主调函数和被调函数之间有数据传递。

查看完整回答
反对 回复 2022-09-21
?
绝地无双

TA贡献1946条经验 获得超4个赞

//你的su定义函数有两个参数,但使用的时候只传递了一个x,当然too few了。
//你可以将i的定义放在su的内部,为什么用i作为参数呢??

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int su(int x)
{
if(x==0)
return 1;
else
{
int i;
for(i=2;x%i!=0 && i<=sqrt(x);i++); //这里分号。
if(i>sqrt(x))
return 1;
else
return 0;
}
}
//你的su定义函数有两个参数,但使用的时候只传递了一个x,当然too few了。
//你可以将i的定义放在su的内部,为什么用i作为参数呢??
int main()
{
int x;
scanf("%d",&x);
if (su(x)==1)
printf("y");
if (su(x)==0)
printf("n");
return 0;
}


查看完整回答
反对 回复 2022-09-21
  • 2 回答
  • 0 关注
  • 692 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信