求教为何我这样嵌套调用函数
本帖最后由 Draw-Ranger 于 2021-9-26 13:41 编辑//test6_3
#include<stdio.h>
//int max8(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8);
//int max4(int a,int b,int c,int d);
int max2(int a,int b);
int main()
{
int num,i,x;
for(i=0;i<8;i++)
{
scanf("%d",&num);
}
// x=max8(num,num,num,num,num,num,num,num);
x=max2(num,max2(num,max2(num,max2(num,max2(num,max2(num,max2(num,max2(num))))))));
printf("%d",x);
return 0;
}
/*
int max8(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8)
{
int t,m1,m2;
m1=max4(a1,a2,a3,a4);
m2=max4(a5,a6,a7,a8);
t=max2(m1,m2);
return t;
}
int max4(int a,int b,int c,int d)
{
int t,m1,m2;
m1=max2(a,b);
m2=max2(c,d);
t=max2(m1,m2);
return t;
}
*/
int max2(int a,int b)
{
int t;
if(a>b)
{
t=a;
}
else
{
t=b;
}
return t;
}
[*]报错内容为14 99 E:\DevC\C项目\test6_3.cpp too few arguments to function 'int max2(int, int)'
[*] 5 5 E:\DevC\C项目\test6_3.cpp declared here
最后一个 num那里少一个参数 本帖最后由 村里小黑 于 2021-9-26 09:13 编辑
问题出在这一句,你一层一层套的太多,导致你最后在调用max2(num)时,只传了一个参数,而你定义的时max(int a,int b),他检测到你少一个实参所以报错
x=max2(num,max2(num,max2(num,max2(num,max2(num,max2(num,max2(num,max2(num))))))));
而且确实不建议这么去写,因为看起来狠麻烦,我没看错的话是为了比较出数组里最大的数。
参考代码:
int x=0;
x = max(num,0);
for(i=1;1<10;i++)
{
x = max(num,x);
} 村里小黑 发表于 2021-9-26 08:56
问题出在这一句,你一层一层套的太多,导致你最后在调用max2(num)时,只传了一个参数,而你定义的时max ...
x=max2(num,max2(num,max2(num,max2(num,max2(num,max2(num,max2(num,num)))))));
感谢您的回复,我成功找到了问题,并成功解决了,在最里面的嵌套的函数我少了一个参数。 Draw-Ranger 发表于 2021-9-26 10:49
感谢您的回复,我成功找到了问题,并成功解决了,在最里面的嵌套的函数我少了一个参数。
没关系,建议你改进一下,我是一个括号一个括号扒开看的,这么写确实很容易写错
页:
[1]