Code Bye

c语言编译错误求帮助

求帮助 下面这段代码哪里错了?
C:\Users\Administrator\Desktop\2.c(20) : error C2115: "function" : incompatible types
C:\Users\Administrator\Desktop\2.c(20) : warning C4024: "max" : different types for formal and actual parameter 1
#include"stdio.h"
float max(float a[])
{
	float *p=a,*i=a;
	for(;p<p+9;p++)
		if(*a<*(p+1))
		{
			*a=*(p+1);
			i=(p+1);
		}
	printf("这个最大的数是数组的第%d位元素",i-a);
	return *a;
}

main()
{
	float a[10],*p=a,maxnum;
	for(;p<p+10;p++)
		scanf("%f",p);
	maxnum=max(a[10]);
	printf(":%f",maxnum);
}
解决方案

40

1.编译错误:
传参写错了,a[10]代表a数组第11个元素,直接传数组名就行了
maxnum=max(a[10]);改为maxnum=max(a);
2.逻辑错误:
main和max函数里for循环里p<p+10都是不对的,这个恒满足,应该改成p<a+10
#include"stdio.h"
float max(float a[])
{
	float *p=a,*i=a;
	for(;p<a+9;p++)
		if(*a<*(p+1))
		{
			*a=*(p+1);
			i=(p+1);
		}
		printf("这个最大的数是数组的第%d位元素",i-a);
		return *a;
}
void main()
{
	float a[10],*p=a,maxnum;
	for(;p<a+10;p++)
		scanf("%f",p);
	maxnum=max(a);
	printf(":%f",maxnum);
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c语言编译错误求帮助