作业题,我用的是VC++6.0编译器,请高手给我解答为什么会出现语法错误
编译一个程序,产生20个0~10之间的随机数.保存到数组中.用函数统计某个随机数出现的次数
#include<stdio.h>
#include<stdlib.h>
int max(int [],int,int);
void main()
{
int i,sj[20],a,b;
for(i=0;i<20;i++)
{
printf("%d ",sj[i]=rand()%10);
}
printf("\n请输入一个数: ");
scanf("%d",&a);
b=max(sj,a,i);
printf("个数%d\n",b);
printf("\n");
}
int max(int sj[],int a,int size)
{
int b=0,i;
for(i=0;i<size;i++)
{
if(a==sj[i])
b++;
}
return b;
}
[解决办法]
#include <stdio.h>
#include <stdlib.h>
int max(int [],int,int); //这个不是函数原形吗?我在这声明,后面调用为什么会出现冲突呢?
------------------------------------------------------------
不是你的函数声明和函数调用之间的冲突,而是#include <stdlib.h> 的stdlib.h这个头文件里面有一个用max命名的宏定义(详细的定义我已经在9楼给你贴出来了你自己也可以在vc安装目录下面的include文件加里找到stdlib.h这个文件,看看里面的max定义),这个宏的名字和你代码中max()函数的名字相同了引起的冲突,编译器把你的函数名自动替换成了宏,而你函数的参数比头文件中宏的参数多,所以就有了上面的出错提示!